Meine Boot-Partition befindet sich auf einer SSD, sodass sie nicht Platz für mehr als etwa 8 installierte Kernel-Versionen hat, und schließlich werden einige Kernel-Updates nicht installiert, da meine Boot-Partition voll mit alten Versionen ist. Es gibt viele Fragen darüber, wie man alte Versionen entfernt (sogar wie man den Prozess automatisiert), aber meine Frage ist einfach diese:Warum funktioniert apt-get autoremove
nicht automatisch erkennen und entfernen, und gibt es eine Möglichkeit, dies zu tun ? Ich meine, apt-get
ist, was sie sowieso installiert hat, also weiß es über sie Bescheid, warum beschließt es also, alle alten Versionen zu belassen?
Beste Antwort
Zur Beantwortung des Grundes siehe die Datei /etc/apt/apt.conf.d/01autoremove-kernels
Wie Sie sehen können, wird apt angewiesen, die Kernel niemals automatisch zu entfernen, wie von einer anderen (Skript-)Datei, /etc/kernel/postinst.d/apt-auto-removal
, angegeben . Und hier ist es:
Wenn Sie 2 ausgewählte Kernel manuell installieren, dh den ersten und den aktuellen, dann wird apt-autoremove immer nur die älteren Versionen entfernen, die Sie nicht manuell installiert haben, sodass Sie immer diese 2 Optionen plus die neueste haben.
Aktualisierung:
In /etc/kernel/postinst.d/apt-auto-removal
Da ist dieser Teil:
if [ "$latest_version" != "$installed_version" ]
|| [ "$latest_version" != "$running_version" ]
|| [ "$installed_version" != "$running_version" ]
then
# We have at least two kernels that we have reason to think the
# user wants, so don't save the second-newest version.
previous_version=
fi
Vergleichen Sie also die Ausgabe von 01autoremove-kernels
Datei und uname -r
Sie werden feststellen, dass der aktuell ausgeführte Kernel und der letzte davor von diesem Skript niemals entfernt werden. Es stellt sich heraus, dass es eine weitere Datei /etc/apt/apt.conf.d/01autoremove
gibt , wo Zeilen stehen:
APT
{
NeverAutoRemove
{
"^firmware-linux.*";
"^linux-firmware$";
};
VersionedKernelPackages
{
# linux kernels
"linux-image";
"linux-headers";
"linux-image-extra";
"linux-signed-image";
# kfreebsd kernels
"kfreebsd-image";
"kfreebsd-headers";
# hurd kernels
"gnumach-image";
# (out-of-tree) modules
".*-modules";
".*-kernel";
"linux-backports-modules-.*";
# tools
"linux-tools";
};
Sie könnten diese also auskommentieren, und es wird Ihnen erlauben, die Kernel mit apt-autoremove
automatisch zu entfernen , aber denken Sie daran – tun Sie dies auf eigene Gefahr