Debian Jessie installiert zu viele Backports

Debian Jessie installiert zu viele Backports

Ich habe Debian Jessie und habe Backports hinzugefügt (lautdiese Anweisungen):

echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list

(Ich habe dies getan, um einen neueren Kernel zu erhalten, da ich ihn für einige Hardware in meinem Laptop benötigte.)

In den Anweisungen steht, dass nichts passieren sollte, sofern ich nicht ausdrücklich nach einem Backport-Paket frage, z apt-get -t jessie-backports install "package". B.

Allerdings besteht mein gesamtes System anscheinend jetzt aus Backports, und ein Paket wurde deinstalliert, da es von einer genauen Version von etwas abhängt, das auf Backports aktualisiert wurde.

Also meine Frage:

  • Wie kann ich es zunächst stoppen, damit keine weiteren Backports installiert werden?
  • Wie entferne ich die vorhandenen Backports?

Hinweis: Dadurch wird eine Liste der installierten Pakete abgerufen, die aus Backports stammen (und in einem Format vorliegen, das übergeben werden kann apt-get install; aus irgendeinem Grund sudo apt-get installfunktioniert das Einfügen von „echo“ am Ende der Pipeline nicht):

cat /var/log/dpkg.log.1 |grep -v linux | grep -v xserver | grep -v firmware | grep "status installed" | grep bpo | cut -d" " -f 5 | cut -d: -f 1 | xargs -i{} -n1 bash -c "dpkg-query -s {} >/dev/null && echo {}" | sed -r -e "s~.*~\0/jessie~" | xargs echo

Vorsicht:

Einige der Pakete werden automatisch installiert. Wenn Sie sie also alle neu installieren, werden diese automatisch installierten Pakete als manuell installiert gekennzeichnet. Sie werden also nicht entfernt, wenn sie nicht benötigt werden.

Hat jemand eine Idee, wie man das lösen kann?

Antwort1

  1. Versuchen Sie, Folgendes entweder zu /etc/apt/apt.confoder zu einer Datei unter hinzuzufügen /etc/apt/apt.conf.d:

    APT::Default-Release "jessie";

  2. Um die vorhandenen Backports zu entfernen, benötigen Sie eine Liste der installierten Backports und der Version, die sie ersetzt haben. Glücklicherweise können diese Informationen sehr einfach aus folgendem Dokument extrahiert werden:/var/log/dpkg.log

eg grep ' upgrade ' /var/log/dpkg.logwird Ihnen viele Zeilen wie die folgenden geben:

2016-02-15 11:06:32 upgrade python-numpy:amd64 1:1.11.0~b2-1 1:1.11.0~b3-1

Hier steht, dass ich am 15. Februar um 11:06 Uhr Python-Numpy von Version 1:1.11.0~b2-1 auf Version 1:1.11.0~b3-1 aktualisiert habe.

Wenn ich ein Downgrade auf die vorherige Version durchführen möchte, würde ich Folgendes ausführen:

apt-get install python-numpy=1:1.11.0~b2-1

HINWEIS: In diesem speziellen Fall wird es wahrscheinlich nicht funktionieren, da ich Debian verwende, sidalso unstableist die alte Version wahrscheinlich nicht mehr im Deb-Repository verfügbar. Wenn Sie jessieeine Jessie-Version eines Pakets ausführen und als Downgrade auf die Jessie-Backports-Version neu installieren, wird es wie erwartet funktionieren.

Wenn ein Paket entfernt wurde, können Sie es und seine genaue Version ebenfalls finden, indem Sie nach removein greppen /var/log/dpkg.log.


Das Massendowngrade vieler Pakete kann mit Standardtools wie awkund weitgehend automatisiert werden grep. Wenn Sie beispielsweise wissen, dass die von Ihnen installierten Jessie-Backports-Upgrades alle an einem bestimmten Tag (z. B. 15.02.2016) durchgeführt wurden, können Sie mit etwas wie diesem ein Downgrade auf die vorherigen Versionen durchführen:

 apt-get -d -u install $(awk '/2016-02-15 ..:..:.. upgrade / {print $4 "=" $5}'
    /var/log/dpkg.log)

(Zeilenvorschub und Einrückung hinzugefügt, um horizontale Bildlaufleisten zu vermeiden)

BEACHTEN Sie die Verwendung der Option -d( --download-only). Führen Sie den Befehl erneut aus und entfernen Sie diese Option, nachdem Sie überprüft haben, dass das apt-get installgewünschte Ergebnis erzielt wird, und NUR das gewünschte.

Ich würde auch empfehlen, awkzunächst nur den Teil dieses Befehls allein auszuführen, damit Sie eine Liste der genauen Pakete und Versionen sehen, die neu installiert werden.

Antwort2

Es klingt, als hätten Sie es nicht richtig eingerichtet /etc/apt/preferences. Folgendes verhindert, dass irgendetwas von Jessie-Backports installiert wird, außer was zur Installation angewiesen wird (wie der Backport-Kernel). Sie werden immer noch Probleme haben, wenn die angegebenen Pakete andere Pakete von Backports erfordern, die nicht aufgeführt sind.

Package: *
Pin: release n=jessie-backports
Pin-Priority: -1

Package: *
Pin: release n=jessie
Pin-Priority: 1000

# this will allow you to not have to use '-t jessie-backports install'
Package: linux-doc linux-headers-amd64 linux-image-amd64 linux-source
Pin: release n=jessie-backports
Pin-Priority: 1000

Wenn Sie eine Liste der installierten Backport-Pakete erhalten möchten, können Sie das folgende Skript (oder Teile davon) verwenden:

chmod a+x name_of_script ./name_of_script > name_of_output_file

#!/bin/bash
RELEASES="jessie-backports"

echo  "Searching for installed packages from" >&2
echo $RELEASES | sed s/^/" * "/ | sed s/\|/"\n * "/g >&2

for package in $(dpkg -l | grep -i ^ii | awk '{print $2}')
do
check=$( apt-cache policy $package 2>&1 | grep -i -A 1 "[*]" | egrep $RELEASES )
if [ "$check" == "" ] ; then
 echo -ne "." >&2
else
 echo -ne "#" >&2
 echo
 apt-cache policy $package
fi
done
echo >&2
echo

Wenn Sie eines der im obigen Skript aufgelisteten Pakete downgraden möchten, hängen Sie Folgendes an /etc/apt/preferences:

Package: package1 package2 package3
Pin: release n=jessie
Pin-Priority: 1000

Dann renne:

sudo apt-get upgrade

Antwort3

Überprüfen Sie Ihre Pinning-Konfiguration für apt in /etc/apt/preferences und /etc/apt/preferences.d/

Ist es möglich, dass Sie eine benutzerdefinierte Pinning-Konfiguration hinzugefügt und vergessen haben? Das ist die einzige Möglichkeit, die mir einfällt, damit apt Backports bevorzugt, wie es bei Ihnen der Fall zu sein scheint. Andernfalls werden nur Abhängigkeiten abgerufen – die die von Ihnen angegebenen Pakete erfordern.

Offizielle Backports sind in der Release-Datei der Backport-Pakete im Backports-Repo bereits niedriger (100) als Jessie festgelegt. Sie müssen keine Apt-Konfiguration vornehmen, damit Apt Jessie gegenüber Jessie-Backports bevorzugt.

verwandte Informationen