Meine Boot-Partition befindet sich auf einer SSD, sodass dort nicht mehr als 8 installierte Kernel-Versionen gespeichert werden können. Schließlich können einige Kernel-Updates nicht installiert werden, da meine Boot-Partition voll mit alten Versionen ist. Es gibt viele Fragen zum Entfernen alter Versionen (auch zum Automatisieren des Prozesses), aber meine Frage lautet einfach: Warum werden sie nicht apt-get autoremove
automatisch erkannt und entfernt, und gibt es eine Möglichkeit, dies zu tun ? Ich meine, apt-get
ist das , was sie installiert hat, so dass es über sie Bescheid weiß, also warum wählt es, alle alten Versionen zu belassen?
53
Antworten:
Informationen zum Grund finden Sie in der Datei
/etc/apt/apt.conf.d/01autoremove-kernels
Wie Sie sehen, wird apt angewiesen, die Kernel niemals automatisch zu entfernen, wie dies von einer anderen (Skript-) Datei mitgeteilt wird
/etc/kernel/postinst.d/apt-auto-removal
. Und hier ist es:Wenn Sie 2 ausgewählte Kernel manuell installieren, dh den ersten und den aktuellen Kernel, entfernt apt-autoremove immer nur die älteren Versionen, die Sie nicht manuell installiert haben. Sie haben also immer diese 2 Optionen sowie die jeweils neuesten.
Aktualisieren:
Im
/etc/kernel/postinst.d/apt-auto-removal
gibt es diesen Teil:Wenn Sie also die Ausgabe der
01autoremove-kernels
Datei vergleichen, werdenuname -r
Sie feststellen, dass der aktuell ausgeführte Kernel und der zuletzt ausgeführte Kernel von diesem Skript niemals entfernt werden. Es stellt sich heraus, dass es eine andere Datei gibt/etc/apt/apt.conf.d/01autoremove
, in der es Linien gibt:Sie können diese also auskommentieren und so die Kernel automatisch entfernen. Beachten Sie jedoch, dass Sie
apt-autoremove
dies auf Ihr eigenes Risiko tunquelle
/etc/apt/apt.conf.d/01autoremove-kernels
hat viele Zeilen, aber nur zwei Versionen: 3.13.0. {39,43}. Aberdpkg -l linux-*
listet vier Versionen auf, 3.13.0. {39,40,41,43}, was anderes als/etc/apt/apt.conf.d/01autoremove-kernels
die Beibehaltung dieser mittleren Versionen, richtig?01autoremove
ist die Datei, die Sie wollen,01autoremove-kernels
ist wahrscheinlich nur ein Schutz, so dass Apt derzeit installierten Kernel und die neueste (nur für den Fall, dass die neuesten Schrauben)01autoremove
, schützt es nur vor dem automatischen Entfernen von Abhängigkeitspaketen wielinux-image-extra
. Das Ändern sollte keinen Einfluss darauf haben, ob einelinux-image-3.16.0-31-generic
automatische Entfernung durchgeführt wird oder nicht . Keines der darin enthaltenen Muster stimmt mit den Paketnamen überein, die automatisch entfernt werden sollen./etc/apt/apt.conf.d/01autoremove
. Dies hilft Ihnen nicht beim automatischen Entfernen alter versionierter Kernelpakete, kann jedoch unerwünschte Auswirkungen haben. Die Datei schützt nicht vor dem automatischen Entfernen,linux-image-extra
sondern Pakete, die regulären Ausdrücken imNeverAutoRemove
Abschnitt entsprechen.apt-get autoremove
die nicht aufgelisteten Kernel nicht entfernt werden,/etc/apt/apt.conf.d/01autoremove-kernels
ist, dass diese Kernel als manuell installiert markiert sind. Siehe meine Antwort .Für mich hat es geholfen, das neueste (X) Ubuntu (15.10) zu installieren. In früheren Versionen werden Kernelpakete möglicherweise als manuell installiert markiert, zumindest wenn sie mit Software Updater installiert wurden, sodass
sudo apt-get autoremove --purge
sie nicht gelöscht werden können. Es gibt Fehlerberichte bezüglich des Problems: Fehler # 1175637 , Fehler # 1439769In früheren Versionen konnten Sie versuchen, automatisch installierte Kernelpakete zu markieren
sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")
und anschließend auszuführen,sudo apt-get autoremove --purge
um festzustellen, ob dies einen Unterschied macht. Der Befehl sollte weiterhin keine Kernelpakete entfernen, die in /etc/apt/apt.conf.d/01autoremove-kernels angezeigt werden. Es ist jedoch am sichersten, zuerstapt-get autoremove
mit der--dry-run
Option auszuführen .quelle
apt-mark
hat den Trick für mich getan und ich wünschte, ich könnte 10 mal höher stimmen: P