GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Warum entfernt Apt-get Autoremove die alten Kernel nicht?

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


Ubuntu
  1. So entfernen Sie alte unbenutzte Kernel unter CentOS Linux

  2. Warum wird die Tilde (~) nicht innerhalb doppelter Anführungszeichen erweitert?

  3. Warum erkennt das Bash-Skript keine Aliase?

  4. Warum funktioniert das ~/.bash_profile nicht?

  5. Warum braucht Ubuntu zwei Kernel?

So entfernen Sie alte Kernel unter Ubuntu 16.04, 18.04 und 19.04

So entfernen Sie alte Kernel auf Ubuntu

So entfernen Sie die Verknüpfungen in Google Chrome

Wie entferne ich alte Kernel-Versionen, um das Boot-Menü zu bereinigen?

Warum sind die Abrufe von Apt-get-Updates so groß?

Warum funktioniert Cryptkeeper nicht in 12.04?