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


Cette question a déjà une réponse ici:

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

Il n'y a sûrement rien de parfait et les choses peuvent mal tourner, alors si une mise à jour ne fonctionne pas, avoir un noyau de sauvegarde peut être génial. Mais il suffirait aussi de conserver le dernier noyau et celui qui précède le dernier et de supprimer tous les plus anciens.

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


91
2018-02-27 14:35


origine


Voir si ci-dessous est assez bon. J'ai rassemblé des ressources et il y a beaucoup de doute sur ce qui devrait être considéré comme supprimé. - Rinzwind
@Rinzwind supprimer? Arch les écrase simplement - et certaines choses restent inutilisables jusqu'à ce que vous redémarriez (comme iptables). - muru
"Pourquoi Ubuntu ne supprime-t-il pas les anciens noyaux automatiquement?" Cela fait. "Je me demande pourquoi Ubuntu ne supprimera pas les anciens noyaux manuellement." Je n'ai aucune idée de ce que tu veux dire avec ça. - Braiam
Il me semble extrêmement stupide que le message «démarrer depuis l’espace disque» soit diffusé tous les deux mois, puis résoudre ce problème plutôt technique. Je comprends vraiment pourquoi Ubuntu n'est pas un système pour les utilisateurs non techniques. - sunew
@sunew oui, ce problème a complètement tué la machine de mes parents exécutant 12.04 pour toute la période LTS - rempli les tables d'inode du disque! Les utilisateurs techniques (qui installent délibérément différents noyaux) peuvent facilement écraser. - artfulrobot


Réponses:


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

Je ne vois qu'une seule raison: il ne fonctionne pas parfaitement; il n'y a pas de moyen propre de décider actuellement de la définition des "vieux noyaux". "vieux" ne signifie pas "inutilisé" ni ne signifie "indésirable". Et toute erreur dans ce processus va tuer la machine d'un utilisateur.

Donc, jusqu'à présent, la méthode manuelle est préférable car cela met le pouvoir de supprimer entre les mains des utilisateurs.


Ressources pour cette conclusion:

Ubuntu WIKI: Proposition pour enlever les vieux noyaux

Last-good-boot est entièrement implémenté dans Intrepid / 8.10 final, mais il a été désactivé car il n'était pas considéré comme suffisamment stable. Le paramètre est une seule ligne dans le fichier / etc / default / kernel-helper-rc.


Rampe de lancement: Aptitude devrait-il permettre de supprimer les anciennes versions du noyau?

apt-get possède une fonctionnalité autoremove qui désinstalle tous les packages qui ne sont pas nécessaires en tant que dépendances et qui n'ont pas été installés manuellement. Depuis Ubuntu 14.04, tous les noyaux et les en-têtes obsolètes devraient être automatiquement signalés comme inutiles et peuvent donc être purgés avec la commande apt-get autoremove. (Il y a des rapports que cela ne fonctionne pas encore complètement). Je ne suis pas au courant d'une fonctionnalité d'aptitude similaire à autoremove d'apt-get.


Ubuntu-devel: Mécanisme fourni par Distro pour nettoyer les vieux noyaux

Tout en convenant que cela serait très utile et semble approprié   nettoyage automatique, il y a un léger écueil potentiel (ou deux). Il y a   diverses saveurs de noyaux et de personnes peuvent ou non délibérément avoir ces   installé en parallèle. Aussi diverses versions ont parfois un ensemble changeant de   paquets en fonction. Pendant un moment, cela ne devrait être que des linux-backports-modules   (il y avait eu linux-ubuntu-modules et linux-restricted-modules). Bien que cela   n'est pas tellement un problème.   Du point de vue du motif, les noyaux génériques-pae sont un peu   la douleur comme ils ont tendance à gâcher "utiliser la dernière partie d'une division par" - "pour la saveur".   Mais de toute façon, je pense que le principal problème réside dans les différentes saveurs, donc un nettoyage   automatique devrait conserver les trois derniers de chaque, même si cela peut avoir tendance à   laisser plus de grains autour.


44
2018-02-27 15:02



Je suis d'accord que Ubuntu ne devrait pas supprimer les anciens noyaux automatiquement. J'ai eu une fois une situation où les nouveaux noyaux ont causé un grave problème avec certains logiciels; Jusqu'à ce que ce problème soit résolu, je devais conserver le noyau le plus ancien qui fonctionnait. Naturellement, j'ai évité apt-get autoremove. - Paddy Landau
il devrait au moins être une option pour pouvoir activer autoremove juste mon - mBardos
@mBardos il y a (en quelque sorte): Ubuntu Tweak a une méthode pour cela. - Rinzwind
@Rinzwind merci! Je vérifierai - mBardos
Est-ce que "vieux" ne signifie pas "pas un des deux derniers (ou trois) noyaux à démarrer"? A moins que vous ayez deux lignes de noyaux différentes installées? Hmm, je suppose que vous utilisez peut-être une ancienne version d'un noyau pour une installation différente sur une autre partition. Mais il devrait y avoir un état par défaut qui est annulé si vous êtes une sorte d'assistant de funk. Ou, au moins par défaut, vous devez allouer suffisamment d'espace sur / boot pour que vous n'ayez pas à vous en préoccuper pendant des années. Sinon, les mamies ne vont jamais courir sous Linux. - intuited


Il y a deux choses ici:

  1. Les nouveaux noyaux sont des paquets complètement nouveaux, pas des paquets mis à jour avec un numéro de version plus récent. L'installation d'une nouvelle image du noyau ne remplace donc pas les anciens. Ils coexistent.

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

Cela signifie qu'une fois que vous avez redémarré dans le dernier noyau, «apt-get autoremove» devrait supprimer tous les paquets du noyau, à l'exception du dernier et du dernier démarrage.

Les anciens noyaux s'accumulent toujours dans / boot car autoremove n'est pas activé par défaut dans Ubuntu - vous devez soit l'exécuter manuellement de temps en temps, soit l'activer.

Cela peut changer en 16.04 - un correction de bogue sur le paquet sans surveillance permettra par défaut de supprimer automatiquement les anciens noyaux.


21
2018-02-27 23:08





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]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Autre que cela, ne pas enlever les noyaux doit être une chose assez nouvelle. J'ai un système Ubuntu 14 après l'autre en cours d'exécution dans ce problème d'une partition de démarrage complète en raison de vieux déchets de 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.


16
2018-03-08 09:18



Ce script est potentiellement dangereux: lorsque je fais une mise à jour du système qui installe un nouveau noyau, puis exécute ce script avant de redémarrer, le nouveau noyau sera supprimé à la place de l'ancien. Je ne veux pas dire que c'est un mauvais script, mais il faut faire attention quand il faut l'appeler. - daniel kullmann
Merci! "0 mis à niveau, 0 nouvellement installé, 48 à supprimer et 5 non mis à niveau. Après cette opération, 3 322 Mo d'espace disque seront libérés." - thenickdude
Il est sage d’exécuter ce script sans | xargs ... partie pour vérifier quels paquets sont sur le point d'être supprimés, avant de les supprimer réellement: sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' - PeterM
@PeterM, et sudo n'est pas nécessaire devant dpkg. - jarno
Il y a une question distincte sur le script ici. - jarno


La manière simple de supprimer les anciens noyaux consiste à utiliser ubuntu-tweak. Vous sélectionnez le tag Janitor et cochez la case Old Kernel. Cela vous donne une liste de noyaux dont vous pensez ne plus avoir besoin. Vous pouvez tous les sélectionner et cliquer sur Nettoyer et, après un certain temps, le travail est terminé. Étant nerveux, j'ai vérifié quel noyau j'utilisais en utilisant uname -a, mais il ne figurait pas dans la liste. Cela a fonctionné sur l'ordinateur portable de ma femme (qui a une partition de démarrage plutôt petite et montrait des avertissements) et la mienne (qui fonctionnait bien). Est-ce que tout le monde est d'accord pour dire que c'est sûr?


3
2018-02-28 12:22



Oh enlever les grains automatiquement peut être fait en toute sécurité; il est juste que la personne en charge de faire cela ne soit pas suffisamment en confiance pour prétendre pouvoir décider pour tout le monde qu’un noyau d’un système spécifique doit être supprimé. Vieux ne veut pas dire indésirable;) - Rinzwind
Comme le souligne @Rinzwind, il y a vraiment deux problèmes ici. Comment et quand / si le faire J'avais l'habitude d'utiliser Ubuntu-tweak et ça fonctionnait, mais je n'aimais pas beaucoup KDE (que j'utilise). Maintenant, chaque fois que j'obtiens une mise à jour du noyau, j'entre dans le gestionnaire de paquets muon gui, cherche le noyau, trouve celui à supprimer, ajoute son dernier numéro comme 36 au noyau 36, trie sur installé et sélectionne le 2 ou le 3 paquets à supprimer. C'est facile. C'est aussi manuel, donc si j'ai compilé des modules de pilotes qui ont encore besoin d'un noyau plus ancien, ce noyau ne sera pas supprimé tant que je ne suis pas prêt pour que cela se produise. - Joe


Ubuntu supprime automatiquement les éléments qui ne sont plus nécessaires ou qui présentent un risque pour la sécurité ... Je suppose donc que la raison en est la sécurité. Disons que pour une raison étrange, un nouveau noyau devient non sécurisé ... Ensuite, vous serez redirigé temporairement vers l'ancien noyau pendant que le nouveau est en cours de correction. De plus, les nouveaux noyaux peuvent apporter des modifications. Par conséquent, certains noyaux acceptent, par exemple, la mise à jour 14.04.1 à 14.04.2, vous pouvez opter pour un nouveau noyau, mais en avril, lorsque la nouvelle version 15.04 vous les mises à jour des noyaux. Donc, je pense que c'est pour des raisons de sécurité.

mais si vous voulez le supprimer essayez d'exécuter cette ligne de commande

sudo apt-get autoremove

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

sudo apt-get remove (kernels-name)

2
2018-02-27 14:54



"Disons pour une raison étrange qu'un nouveau noyau devient non sécurisé ... Ensuite, vous seriez rerouté temporairement vers l'ancien noyau pendant que le nouveau serait réparé." Avez-vous une source pour cette réclamation? - John Kugelman
@JohnKugelman ça n'arriverait pas. Un nouveau paquet serait publié avec le correctif et les gens le mettraient à jour. En cas de extrême problème non corrigible, un ancien noyau serait empaqueté avec un numéro de version plus élevé (changement d’époque peut-être) pour effectuer la mise à niveau. - hobbs
"... quand la nouvelle version LTS 15.04 sortira ..." - 15.04 ne sera pas LTS, à moins qu'il y ait eu un changement majeur de support par Canonical dont je n'ai pas entendu parler. - iGadget
en fait 15.04 va être le nouveau LTS mais la version est la même pour toutes les versions ne deviendra pas le nouveau standard LTS jusqu'à une date spécifique après la sortie du nouveau système ... je crois que Canonical le fait parce qu'ils veulent être absolument sûr que le système est complètement sécurisé ... comme je tape ce 15.04 a déjà été libéré alors donnez-lui quelques mois et ce sera un LTS ... je ne prévois pas de mise à jour jusque là ... pas grand chose changé de toute façon - Tactux
@TAC_Tux Ce n'est pas comme ça que Ubuntu fait des versions LTS. Vous pensez peut-être à la façon dont le projet Debian fait les choses. Voici le calendrier de publication actuel d'Ubuntu: wiki.ubuntu.com/LTS - Martijn Heemels


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

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


2
2017-10-22 09:00





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

// Mise à niveau sans surveillance :: Supprimer les dépendances non utilisées "false";

à

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

Je n'ai pas testé cela, cependant.


2
2017-12-23 20:12



Voir un Rapport d'erreur concernant la question. - jarno
Et voir aussi mes liens répondre. - jarno


J'ai eu un problème avec l'impossibilité d'installer un logiciel. Apt-get n'a pas pu installer les en-têtes Linux, indiquant que le disque était plein.$ df -ia indiqué que IUse% était à 100%: le disque avait de l'espace libre mais était à court d'inodes. $ sudo dpkg --configure -a échoué, et alors $ sudo apt-get -f install et $ sudo apt-get autoremove

Le problème résolu lorsque j'ai supprimé manuellement plusieurs anciens dossiers du noyau de / usr / src - juste $ rm ou décaler-supprimer les dossiers. Cela libéré suffisamment d'espace inode pour permettre $ apt-get -f install compléter.

Après cela, je n'avais que 10 noyaux Linux. Iran $ 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?


2
2017-12-24 08:47



Oui, car vous pourriez avoir besoin de manière inattendue de ce noyau plus ancien, comme expliqué ci-dessus. - Reinier Post
Avez-vous essayé de purger un noyau par dpkg --purge? - jarno