Debian Jessie installiert zu viele Backports


9

Ich habe Debian Jessie und habe Backports hinzugefügt (gemäß diesen 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 für Hardware in meinem Laptop zu bekommen, wie ich ihn brauchte.)

Die Anweisungen besagen, dass nichts passieren sollte, es sei denn, ich fordere ausdrücklich ein zurückportiertes Paket an. zB apt-get -t jessie-backports install "package".

Allerdings habe ich jetzt anscheinend eine ganze Last meines Systems von Backports und ein Paket wurde deinstalliert, da es von einer genauen Version abhängt, von etwas, das auf Backports aktualisiert wurde.

Also meine Frage:

  • Wie stoppe ich es zuerst, damit keine Backports mehr installiert werden?
  • Wie entferne ich die vorhandenen Backports?

Hinweis: Hiermit wird eine Liste der installierten Pakete abgerufen, die aus Backports stammen (und deren Format übergeben werden kann apt-get install, aus irgendeinem Grund sudo apt-get installfunktioniert das Einsetzen des Echos 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 markiert. Also nicht entfernt, wenn nicht benötigt.

Hat jemand Ideen, wie man das löst?

Antworten:


10
  1. Versuchen Sie, Folgendes /etc/apt/apt.confoder eine Datei unter hinzuzufügen /etc/apt/apt.conf.d:

    APT::Default-Release "jessie";

  2. Um die vorhandenen Backports zu entfernen, müssen Sie eine Liste der installierten Backports und der ersetzten Version abrufen. Glücklicherweise können diese Informationen sehr einfach extrahiert werden/var/log/dpkg.log

zB grep ' upgrade ' /var/log/dpkg.loggibt Ihnen viele Zeilen wie die folgenden:

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

Dies besagt, 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 wollte, 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 sidaka ausführe, unstablesodass die alte Version wahrscheinlich nicht mehr im deb-Repository verfügbar ist. Wenn Sie jessieeine Jessie-Version eines Pakets als Downgrade auf die Jessie-Backports-Version ausführen und neu installieren, funktioniert dies wie erwartet.

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


Das Massen-Downgrade vieler Pakete kann mithilfe von 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 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 Bildlaufleiste zu vermeiden)

HINWEIS: Verwenden Sie die Option -d( --download-only). Führen Sie den Befehl erneut aus und entfernen Sie diese Option, nachdem Sie überprüft haben, ob der Befehl das apt-get installtut, was Sie möchten, und NUR das, was Sie möchten.

Ich würde auch empfehlen, zuerst nur den awkTeil dieses Befehls selbst auszuführen, damit Sie eine Liste genau sehen können, welche Pakete und Versionen neu installiert werden.


1
Mit "weitgehend automatisiert" meine ich, dass es zwar meistens ohne Probleme funktioniert, aber nicht / nicht immer perfekt läuft (abhängig von den genauen beteiligten Paketen und ihren abhängigen / empfohlenen / Konflikten / etc-Zeilen). Möglicherweise müssen Sie ein oder zwei Pakete manuell installieren oder mit entweder apt-getoder deinstallieren dpkg. Solange Sie nicht in Panik geraten, gibt es keinen Grund zur Sorge. Die meisten Probleme mit Verpackungssystemen werden durch Menschen verursacht, die in Panik geraten und reagieren, ohne nachzudenken. Nehmen Sie es langsam und denken Sie nach, bevor Sie handeln.
Cas

Sollte er die neuen Kernel-Pakete nicht an backports @cas anheften?
Rui F Ribeiro

Es würde nicht schaden, aber es ist nicht notwendig, und das Fixieren ist etwas komplizierter und schwieriger, als nur das Apt :: Default-Release einzustellen. apt-getEin bereits installiertes Paket wird nicht heruntergestuft, es sei denn, Sie weisen es ausdrücklich an. Und @richard sagte, er wolle jessiestandardmäßig Pakete installieren, es sei denn, er gab dies ausdrücklich an jessie-backports- ich gehe davon aus, dass dieser Wunsch auch für Kernel-Pakete gilt.
Cas

Er sagte, er habe Backports hinzugefügt, um einen neuen Kernel zu haben, wahrscheinlich wie ich, um Kernel 4 in Jessie zu haben.
Rui F Ribeiro

1
Ich denke, dass Leute, die stable+ verwenden, sich stable-backportswahrscheinlich viel mehr für das Fixieren interessieren als ich und sich die Mühe gemacht haben, mehr darüber zu erfahren. Ich neige dazu unstable, meine Systeme ziemlich regelmäßig auf dem neuesten Stand zu halten und zu synchronisieren (mit gelegentlichen Extras von experimental), daher muss ich sie kaum anheften. Das einzige Mal, dass ich es stark genutzt habe, war vor Jahren während des Übergangs zu gnome3, als ich nicht wollte, dass meine gnome2-Pakete ersetzt werden - ich erinnere mich, dass die Pflege der sich ständig ändernden Liste der zu pinnenden Pakete eine PITA war. Ich habe seitdem zu xfce gewechselt und den Gnom gereinigt.
Cas

1

Es hört sich so an, als hätten Sie nicht richtig eingerichtet /etc/apt/preferences. Das Folgende verhindert, dass etwas von Jessie-Backports installiert wird. Erwarten Sie, was es zu installieren hat (z. B. den Backport-Kernel). Sie haben weiterhin Probleme, wenn für die angegebenen Pakete andere Pakete von Backports erforderlich sind, 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 Pakete, die im obigen Skript aufgeführt sind, herunterstufen möchten, fügen Sie Folgendes hinzu /etc/apt/preferences:

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

Dann renne:

sudo apt-get upgrade

1

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

Ist es möglich, dass Sie eine benutzerdefinierte Pinning-Konfiguration hinzugefügt und diese vergessen haben? Nur so kann ich mir vorstellen, dass Apt Backports bevorzugen würde, wie es Ihnen scheint. Andernfalls werden nur Abhängigkeiten abgerufen, die für die von Ihnen angegebenen Pakete erforderlich sind.

Offizielle Backports sind bereits niedriger (100) als Jessie in den Backported-Paketen festgelegt. Release-Datei im Backports-Repo. Sie sollten keine passende Konfiguration vornehmen müssen, damit apt jessie jessie-backports vorzieht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.