Pourquoi Ubuntu ne supprime-t-il pas automatiquement les anciens noyaux? [dupliquer]

93

Je me demande pourquoi Ubuntu ne supprime pas automatiquement les anciens noyaux.

Sûrement, rien n’est parfait et les choses peuvent mal se passer. Par conséquent, au cas où une mise à jour ne fonctionnerait pas, disposer d’un noyau de sauvegarde serait peut-être bien. Mais il suffirait également de ne garder que les derniers noyaux et les précédents et de supprimer tous les anciens.

Y a-t-il une raison pour laquelle Ubuntu ne le fera pas automatiquement ?.

    
posée Registered User 27.02.2015 - 15:35
la source

8 réponses

44

Is there a reason why Ubuntu wont do this automatically?

Je ne vois qu'une seule raison: cela ne fonctionne pas parfaitement; il n’existe actuellement aucun moyen propre de décider de la définition de "vieux noyaux". "ancien" ne signifie pas "non utilisé" ni "non désiré". Et toute erreur dans ce processus tuera la machine d’un utilisateur.

Jusqu'à présent, la méthode manuelle est privilégiée car elle confère le pouvoir de supprimer aux utilisateurs.

Ressources pour cette conclusion:

Ubuntu WIKI: Proposal for removing old kernels

Last-good-boot is implemented fully in Intrepid/8.10 final, however it has been disabled because it was not considered stable enough. The setting is a single line in the file /etc/default/kernel-helper-rc.

Launchpad: Should aptitude provide a way to remove old kernel versions ?

apt-get has an autoremove feature that uninstalls all packages that are not needed as dependencies and have not been installed manually. Since Ubuntu 14.04 all obsolete kernels and headers should automatically be flagged as no more needed, and thus can be purged with the apt-get autoremove command. (There are reports that this does not yet fully work). I am not aware of a feature in aptitude that is similar to apt-get's autoremove.

Ubuntu-devel: Distro-provided mechanism to clean up old kernels

While agreeing that it would be quite helpful and seems appropriate to have the cleanup automatic, there is a slight potential pitfall (or two). There are various flavours of kernels and people may or may not deliberately have those installed in parallel. Also various releases had sometimes a changing set of depending packages. For a while this should be only linux-backports-modules (there had been linux-ubuntu-modules and linux-restricted-modules). Though this is not so much of a problem. From a pattern matching point of view the generic-pae kernels are a bit of a pain as they tend to ruin the "use the last part of a split by "-" for the flavor". But anyway, I think the main issue is the various flavours, so a cleanup that is automatic should retain the last three of each, even though this may tend to leave more kernels around.

    
réponse donnée Rinzwind 27.02.2015 - 16:02
la source
21

Il y a deux choses qui se passent ici:

  1. Les nouveaux noyaux sont des packages entièrement nouveaux, et non des packages mis à jour avec un numéro de version plus récent. L'installation d'une nouvelle image du noyau ne remplace donc pas les anciennes. Ils coexistent.

  2. Ubuntu utilise un tas d’apt mag pour protéger les deux dernières versions du noyau de 'apt-get autoremove' (la dernière et la dernière lancée). Voir /etc/apt/apt.conf.d/01autoremove-kernels pour plus de détails.

Cela signifie simplement qu'une fois que vous avez redémarré le dernier noyau, 'apt-get autoremove' devrait supprimer tous les packages, à l'exception des derniers packages du noyau démarrés.

Les anciens noyaux s'accumulent toujours dans / boot, car le retrait automatique n'est pas activé dans Ubuntu par défaut. Vous devez soit l'exécuter manuellement, soit l'activer.

Cela pourrait changer en 16.04 - un correction de bogues dans le paquet Unattended-upgrades autorisera le retrait automatique des anciens noyaux par défaut.

    
réponse donnée andrewdevans 28.02.2015 - 00:08
la source
16

Ce script fera le travail. Il supprimera tous les noyaux qui ne sont pas utilisés.

sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' | xargs sudo apt-get -y purge

Sinon, ne pas supprimer les noyaux doit être une chose relativement nouvelle. J’ai un système Ubuntu 14 après l’autre, confronté à ce problème de partition de démarrage complète à cause de l’ancien déchet du noyau.

Cela peut rendre la vie des utilisateurs moins expérimentés extrêmement compliquée. C'est en fait un piège noob. Canonical devrait résoudre ce problème.

    
réponse donnée psnizek 08.03.2015 - 10:18
la source
3

La méthode simple pour supprimer les anciens noyaux consiste à utiliser ubuntu-tweak. Vous sélectionnez la balise Janitor et cochez la case Old Kernel. Cela vous donne une liste de noyaux dont il pense que vous n’avez plus besoin. Vous pouvez tous les sélectionner et cliquer sur Nettoyer et, au bout d'un moment, le travail est terminé. Étant nerveux, j’ai vérifié le noyau que j’utilisais avec uname -a, mais cela n’apparaissait pas dans la liste. Cela a fonctionné sur l'ordinateur portable de ma femme (qui a une assez petite partition de démarrage et montrait des avertissements) et le mien (qui fonctionnait bien). Tout le monde est-il d'accord pour dire que c'est sans danger?

    
réponse donnée Chris_Dorking 28.02.2015 - 13:22
la source
2

Ubuntu ne supprime automatiquement que les éléments dont vous n'avez plus besoin ou qui posent un risque pour la sécurité ... Je suppose donc que cela tient à des raisons de sécurité. Disons pour une raison étrange qu'un nouveau noyau ne soit plus sécurisé ... Ensuite, vous serez redirigé temporairement vers l'ancien noyau pendant la réparation du nouveau. De nouveaux noyaux peuvent également accompagner des modifications. Par conséquent, certains noyaux sont activés. Par exemple, si vous mettez à jour les versions 14.04.1 à 14.04.2, vous pouvez opter pour un nouveau noyau. Toutefois, en avril, lorsque la nouvelle version 15.04 de LTS sera disponible, vous noyaux mises à jour. Donc, je pense que c'est pour des raisons de sécurité.

mais si vous voulez le supprimer, essayez de lancer cette ligne de commande

sudo apt-get autoremove

Ceci devrait supprimer tous les logiciels inutiles tels que votre ancien noyau, sinon essayez

sudo apt-get remove (kernels-name)
    
réponse donnée Tactux 27.02.2015 - 15:54
la source
2

Je vous recommande d'utiliser Ubuntu Tweak pour supprimer les anciens noyaux. regardez ici:

Comment supprimer les anciennes versions du noyau pour nettoyer le menu de démarrage?

    
réponse donnée skonsoft 22.10.2015 - 11:00
la source
2

Je pense que la dernière version d'Ubuntu 15.10 pourrait supprimer automatiquement les anciens noyaux, si vous modifiez le fichier /etc/apt/apt.conf.d/50unattended-upgrades: Changer de ligne

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

à

Unattended-Upgrade::Remove-Unused-Dependencies "true";

Je n'ai pas testé cela, cependant.

    
réponse donnée jarno 23.12.2015 - 21:12
la source
2

J'ai eu du mal à installer des logiciels. Apt-get n'a pas pu installer les en-têtes linux, signalant que le disque était plein. $ df -i a signalé que IUse% était à 100%: le disque disposait de suffisamment d'espace libre, mais ses inodes étaient épuisés. $ sudo dpkg --configure -a a échoué, & de même $ sudo apt-get -f install et $ sudo apt-get autoremove

Le problème a été résolu lorsque j'ai supprimé manuellement plusieurs des dossiers du noyau les plus anciens de / usr / src - juste $ rm ou que les dossiers ont été supprimés. Cela a libéré suffisamment d’espace inode pour permettre à $ apt-get -f install de se terminer.

Après cela, je n’avais plus que 10 noyaux Linux. J'ai couru $ sudo apt-get autoremove qui a supprimé 1,4 Go de fichiers. Ce qui pose la question: vraiment ?? Vraiment?? Mais honnêtement, est-ce la bonne façon de gérer un système convivial?

    
réponse donnée Gareth 24.12.2015 - 09:47
la source

Lire d'autres questions sur les étiquettes