apt-get weist Inkonsistenzen beim automatischen Entfernen auf

2

Ich räume gerade mehrere Server auf.
Ich habe ein merkwürdiges Verhalten bemerkt:

Wenn ich das tue apt-get autoremove, werden mehrere Header aufgelistet, die automatisch entfernt werden sollen, wenn ich fortfahre. Manchmal bleiben die Dateien / Ordner erhalten /usr/src, manchmal werden sie entfernt.

Gibt es einen Grund, warum oder wo ich mit der Suche beginnen kann? Google ist nicht viel aufgetaucht.

Ein Computer, auf dem die Header noch vorhanden sind, obwohl beim automatischen Entfernen eine "0 zum Entfernen" ausgegeben wird

ubuntu@acc-ws-website-1:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 65 not upgraded.

ubuntu@acc-ws-website-1:~$ ls -lart /usr/src
total 108
drwxr-xr-x 10 root   root   4096 Apr 16  2014 ..
drwxr-xr-x 24 root   root   4096 Jul  8  2014 linux-headers-3.13.0-24
drwxr-xr-x  7 root   root   4096 Jul  8  2014 linux-headers-3.13.0-24-generic
drwxr-xr-x  3 ubuntu ubuntu 4096 Apr 17  2015 ixgbevf-2.14.2
drwxr-xr-x 24 root   root   4096 Oct  6  2015 linux-headers-3.13.0-65
drwxr-xr-x  7 root   root   4096 Oct  6  2015 linux-headers-3.13.0-65-generic
drwxr-xr-x 24 root   root   4096 Oct 20  2015 linux-headers-3.13.0-66
drwxr-xr-x  7 root   root   4096 Oct 20  2015 linux-headers-3.13.0-66-generic
drwxr-xr-x 24 root   root   4096 Nov  5  2015 linux-headers-3.13.0-67
drwxr-xr-x  7 root   root   4096 Nov  5  2015 linux-headers-3.13.0-67-generic
drwxr-xr-x 24 root   root   4096 Nov 10  2015 linux-headers-3.13.0-68
drwxr-xr-x  7 root   root   4096 Nov 10  2015 linux-headers-3.13.0-68-generic
drwxr-xr-x 24 root   root   4096 Dec  1  2015 linux-headers-3.13.0-70
drwxr-xr-x  7 root   root   4096 Dec  1  2015 linux-headers-3.13.0-70-generic
drwxr-xr-x 24 root   root   4096 Dec  2  2015 linux-headers-3.13.0-71
drwxr-xr-x  7 root   root   4096 Dec  2  2015 linux-headers-3.13.0-71-generic
drwxr-xr-x 24 root   root   4096 Dec 17  2015 linux-headers-3.13.0-73
drwxr-xr-x  7 root   root   4096 Dec 17  2015 linux-headers-3.13.0-73-generic
drwxr-xr-x 24 root   root   4096 Dec 19  2015 linux-headers-3.13.0-74
drwxr-xr-x  7 root   root   4096 Dec 19  2015 linux-headers-3.13.0-74-generic
drwxr-xr-x 24 root   root   4096 Feb  2  2016 linux-headers-3.13.0-77
drwxr-xr-x  7 root   root   4096 Feb  2  2016 linux-headers-3.13.0-77-generic
drwxr-xr-x 24 root   root   4096 Feb 23  2016 linux-headers-3.13.0-79
drwxr-xr-x  7 root   root   4096 Feb 23  2016 linux-headers-3.13.0-79-generic
drwxr-xr-x 24 root   root   4096 Mar 30 06:50 linux-headers-3.13.0-115
drwxr-xr-x  7 root   root   4096 Mar 30 06:50 linux-headers-3.13.0-115-generic
drwxr-xr-x 27 root   root   4096 Mar 30 06:52 .

ubuntu@acc-ws-website-1:~$ uname -r
3.13.0-112-generic

Während ich so etwas erwarten würde:

ubuntu@tools-jenkins:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 94 not upgraded.

ubuntu@tools-jenkins:~$ ls -lart /usr/src
total 32
drwxr-xr-x 10 root root 4096 Mar 25  2015 ..
drwxr-xr-x 24 root root 4096 Dec  6 06:39 linux-headers-3.13.0-105
drwxr-xr-x  7 root root 4096 Dec  6 06:39 linux-headers-3.13.0-105-generic
drwxr-xr-x 24 root root 4096 Mar  8 06:44 linux-headers-3.13.0-112
drwxr-xr-x  7 root root 4096 Mar  8 06:44 linux-headers-3.13.0-112-generic
drwxr-xr-x 24 root root 4096 Mar 30 06:26 linux-headers-3.13.0-115
drwxr-xr-x  7 root root 4096 Mar 30 06:26 linux-headers-3.13.0-115-generic
drwxr-xr-x  8 root root 4096 Apr  3 10:50 .

ubuntu@tools-jenkins:~$ uname -r
3.13.0-105-generic
ShadowFlame
quelle
1
Bitte machen Sie nähere Angaben, welche Dateien übrig bleiben und welche gelöscht werden.
Tero Kilkanen
Wie kann ich mehr geben? Ich sage, es sind die Linux-Header, und sie behalten nur diese Ordner, aber nicht immer.
ShadowFlame
Die Ausgabe des Befehls kann hilfreich sein. An sich ist dies eine sehr breite Problembeschreibung mit kleinen Details, und es ist sehr unwahrscheinlich, dass jemand eine Lösung finden kann, die nur auf diesen Informationen basiert.
Oldskool
Wurden die "Dateien nicht gelöscht" durch den APT-Prozess als "Kann (automatisch) entfernt werden" angekündigt? So oder so, wenn sie nicht automatisch entfernt werden, liegt das daran, dass es einige Abhängigkeiten zu ihnen gibt, sodass sie nie als "entfernbar" markiert wurden
DevOps,
1
Bitte teilen Sie die Liste der installierten Kernel-Header-Pakete ( dpkg-query -f '${binary:Package}\n' -W linux-headers\*) mit und sagen Sie, ob die /usr/src/linux-headers-*noch einen vollständigen Kernel-Header-Baum enthalten.
Jollyroger

Antworten:

4

Wenn Sie immer noch viele linux-headers*Pakete auf Ihrem System installiert haben, können Sie diese einfache Methode ausprobieren, um alte Header zu entfernen:

dpkg-query -f '${binary:Package}\n' -W linux-headers\*|xargs apt-mark auto
apt-mark manual linux-headers-generic
apt-get -f autoremove

Wenn meine Vermutung richtig ist, haben Sie Ihre Header irgendwie als manuell installiert markiert und dies verhindert, dass Ihr System diese Pakete entfernt. Beispielsweise haben Sie die Pakete direkt installiert, dh Sie haben apt gebeten, die genaue Version des Kernel-Header-Pakets zu installieren. Die obigen Befehle versuchen, alle diese Pakete als automatisch installiert zu markieren und die Dinge wie erwartet funktionieren zu lassen.

Wenn die Pakete möglicherweise bereits entfernt wurden, die Ordner jedoch weiterhin bestehen und nur einige Reste enthalten, bedeutet dies, dass diese Dateien nicht zum Paket gehören. Dies verhindert, dass apt das oberste Verzeichnis beim Deinstallieren des linux-headers*Pakets entfernt. In diesem Fall sollten Sie die Dateien manuell entfernen.

Trivia : Die automatische Entfernungsfunktion von apt funktioniert nur für Pakete, die automatisch installiert wurden. Dies bedeutet, dass das Paket buchstäblich als "automatisch installiert" markiert werden muss und dass es keine Pakete geben sollte, die davon abhängig sind. Für den Linux-Kernel und seine Header haben wir dieses allgemeine Szenario:

  • gibt es ein oder mehr Meta-Pakete wie linux-generic, linux-image-genericund linux-headers-genericdas ist in der Regel als manuell installiert markiert
  • Es gibt viele 'echte' Pakete mit Dateien in like linux-image-4.8.0-45-genericund Metapakete hängen von einigen solcher Pakete ab. Diese werden normalerweise als "automatisch installiert" markiert.
  • Wenn das Metapaket aktualisiert wird, sind in der Regel neuere Versionen des "echten" Pakets erforderlich, sodass neue Versionen installiert werden
  • Die als "automatisch installiert" markierten Pakete können nur dann automatisch entfernt werden, wenn kein manuell installiertes Paket vorhanden ist, das davon abhängt. Wenn neue Pakete installiert wurden, werden die alten möglicherweise später automatisch entfernt, da niemand mehr von diesen Paketen abhängig ist
Jollyroger
quelle
0

Na siehst du das 94 nicht aufgerüstet? Das ist das Problem, ich hatte ein ähnliches Problem und dann habe ich alle Elemente manuell aktualisiert (die nicht mit apt-get upgrade aktualisiert wurden, diese Dateien enthalten diese Abhängigkeiten). Und danach habe ich apt-get autoremove verwendet und es hat funktioniert. Wenn Sie ein Upgrade mit apt-get upgrade durchführen, wird am Ende des ausführlichen Texts eine Liste der nicht aktualisierten Dateien angezeigt. Nimm sie eins nach dem anderen (mach dir keine Sorgen, dass einige Upgrades die Hälfte dieser Liste aktualisieren). Hoffe das hilft, Prost Kumpel.

PS Vergewissern Sie sich vor dem Upgrade, dass Sie ein Backup-Image des funktionierenden Systems erstellt haben, falls etwas schief geht.

Dejan Borkovic
quelle