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 install
funktioniert 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
Versuchen Sie, Folgendes entweder zu
/etc/apt/apt.conf
oder zu einer Datei unter hinzuzufügen/etc/apt/apt.conf.d
:APT::Default-Release "jessie";
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.log
wird 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, sid
also unstable
ist die alte Version wahrscheinlich nicht mehr im Deb-Repository verfügbar. Wenn Sie jessie
eine 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 remove
in greppen /var/log/dpkg.log
.
Das Massendowngrade vieler Pakete kann mit Standardtools wie awk
und 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 install
gewünschte Ergebnis erzielt wird, und NUR das gewünschte.
Ich würde auch empfehlen, awk
zunä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.