Pourquoi apt-get autoremove ne supprime-t-il pas mes anciens noyaux?

53

Ma partition de démarrage se trouve sur un disque SSD. Par conséquent, il ne peut pas contenir plus de 8 versions du noyau installées. Une mise à jour du noyau échouera éventuellement car la partition de démarrage contient beaucoup d'anciennes versions. Il existe de nombreuses questions sur la façon de supprimer les anciennes versions (même comment automatiser le processus), mais ma question est simplement la suivante: pourquoi ne pas les apt-get autoremovedétecter et les supprimer automatiquement, et y a-t-il un moyen de le faire ? Je veux dire, apt-getc’est ce qui est installé de toute façon, alors il le sait, alors pourquoi choisit-il de laisser toutes les anciennes versions?

BlueBomber
la source
3
duplication possible de Pourquoi Ubuntu ne supprime-t-il pas automatiquement les anciens noyaux?
Réintégrer Monica - M. Schröder le
1
Autoremove ne supprime les vieux noyaux dans la plupart des cas. Les noyaux s'accumulent parce que le système ne s'exécute pas automatiquement par défaut. C'est un paramètre dans les mises à niveau automatiques, et peut être modifié. Suppression automatique ne peut pas supprimer les anciens noyaux lorsque des actions apt précédemment mises en file d'attente (comme l'installation d'un nouveau noyau) échouent (en raison d'un espace insuffisant). Voir bugs.launchpad.net/bugs/1357093 pour un patch sans surveillance-mises à niveau qui va commencer à éliminer les vieux noyaux automatiquement.
user535733

Réponses:

36

Pour répondre pourquoi, reportez-vous au dossier /etc/apt/apt.conf.d/01autoremove-kernels

entrez la description de l'image ici

Comme vous pouvez le voir, apt est dit de ne jamais les grains Autoremove, comme dit par un autre fichier (script), /etc/kernel/postinst.d/apt-auto-removal. Et le voici:

entrez la description de l'image ici

Si vous installez manuellement 2 noyaux choisis, le premier et le actuel, apt-autoremove ne supprimera que les anciennes versions que vous n'avez pas installées manuellement. Vous aurez donc toujours ces 2 options, quelle que soit la dernière.

Mise à jour:

Dans le /etc/kernel/postinst.d/apt-auto-removalil y a cette partie:

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

Donc, si vous comparez la sortie du 01autoremove-kernelsfichier et uname -rque vous réalisez que le noyau en cours d’exécution et le plus récent en amont sont conservés pour ne jamais être supprimés par ce script. Il s'avère qu'il y a un autre fichier /etc/apt/apt.conf.d/01autoremove, où il y a des lignes:

    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";
  };

Vous pouvez donc les commenter, et cela vous permettra de supprimer automatiquement les noyaux avec apt-autoremove, mais souvenez-vous - faites-le à vos risques et périls

Sergiy Kolodyazhnyy
la source
1
Très intéressant! My /etc/apt/apt.conf.d/01autoremove-kernelsa plusieurs lignes, mais seulement deux versions parmi elles: 3.13.0. {39,43}. Mais dpkg -l linux-*énumère quatre versions, 3.13.0. {39,40,41,43}, donc autre chose que de /etc/apt/apt.conf.d/01autoremove-kernelsconserver ces versions intermédiaires, non?
BlueBomber
1
TL: DR: 01autoremoveest le fichier que vous voulez, 01autoremove-kernelsest probablement juste une protection, de sorte que apt ne supprime pas le noyau actuellement installé et le plus récent (juste au cas où la dernière en date se casse)
Sergiy Kolodyazhnyy
1
À moins que je ne me trompe 01autoremove, c'est juste une protection contre le retrait automatique des paquets de dépendance, comme linux-image-extra. Changer cela ne devrait pas affecter si oui ou non il linux-image-3.16.0-31-genericest supprimé automatiquement. Aucun de ses modèles ne correspond aux noms de package que nous souhaitons supprimer automatiquement.
Peter Cordes
1
@PeterCordes Ne supprimez ni ne commentez de lignes dans /etc/apt/apt.conf.d/01autoremove. Cela ne vous aide pas à supprimer automatiquement les anciens packages du noyau versionnés, mais peut avoir des effets indésirables. Le fichier ne protège pas du retrait automatique linux-image-extramais des packages qui correspondent aux expressions régulières de la NeverAutoRemovesection.
jarno
2
@BlueBomber, la raison pour laquelle apt-get autoremoveles noyaux ne figurant pas dans la liste ne sont pas supprimés /etc/apt/apt.conf.d/01autoremove-kernelsest que ces noyaux sont marqués comme installés manuellement. voir ma réponse .
jarno
8

Pour moi, cela a aidé à installer le dernier (X) ubuntu (15.10). Dans les versions précédentes, les packages de noyau pouvaient être marqués comme installés manuellement, au moins s'ils avaient été installés à l'aide de Software Updater, afin de sudo apt-get autoremove --purgene pas pouvoir les supprimer. Il y a des rapports de bogue concernant le problème: Bogue n ° 1175637 , Bogue n ° 1439769.

Dans les versions précédentes, vous pouviez essayer de marquer les paquets du noyau automatiquement installés sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")et de les exécuter sudo apt-get autoremove --purgepar la suite pour voir si cela faisait une différence. La commande ne doit toujours pas supprimer les paquets de noyau indiqués dans /etc/apt/apt.conf.d/01autoremove-kernels, mais il est plus sûr de s’exécuter apt-get autoremoveavec l’ --dry-runoption en premier.

Jarno
la source
Oh, la commande autoremove a tendance à supprimer trop de noyaux, voir Bogue n ° 1440608
jarno
1
ils ont apt-markfait le tour pour moi, j'aimerais pouvoir voter 10 fois de suite: P
Mike Gleason jr Couturier le