Question Ma partition / boot a atteint 100% et je ne peux plus la mettre à jour. Impossible de supprimer les anciens noyaux pour faire de la place


Mon premier numéro était quand j'ai essayé de apt-get update ou apt-get upgrade. Lors de la mise à niveau, j'obtiens l'erreur suivante:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.

J'ai essayé de lancer apt-get install -f et c'était la sortie (après avoir dit oui à l'invite)

(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
 failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device
 No apport report written because the error message indicates a disk full error
                                                                          dpkg-deb:    error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic   /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

J'ai essayé de courir apt-get autoremove et il me donne la même erreur que apt-get upgrade.

Quand je cours df, Je reçois ça pour /boot:

/dev/sda1                    233191     230297         0 100% /boot

Donc, j'ai lu ailleurs que je devrais essayer de purger les vieux noyaux. J'ai vérifié pour quels noyaux j'avais:

$ dpkg -l linux-image-\* | grep ^ii
ii  linux-image-2.6.38-13-server  2.6.38-13.52  Linux kernel image for version 2.6.38 on x86_64
ii  linux-image-3.0.0-13-server   3.0.0-13.22   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-14-server   3.0.0-14.23   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-15-server   3.0.0-15.26   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-16-server   3.0.0-16.29   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-17-server   3.0.0-17.30   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.2.0-24-generic  3.2.0-24.39   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-25-generic  3.2.0-25.40   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-26-generic  3.2.0-26.41   Linux kernel image for version 3.2.0  on 64 bit x86 SMP

Quand j'essaye de retirer le plus ancien avec ceci:

$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be     installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Comment puis-je libérer ou étendre le démarrage sans endommager mon installation?


138
2017-08-02 15:17


origine


Je pense que la réponse de @ mreiter est peut-être la meilleure: elle utilise le gestionnaire de paquets et cela a fonctionné lorsque d’autres commandes du gestionnaire de paquets ont échoué, du moins pour moi: askubuntu.com/a/205776/247661 - Aaron Hall
J'ai fait un script qui fait le travail. Je le publierai après avoir atteint mon objectif de prime: bountysource.com/issues/… - jarno
help.ubuntu.com/community/RemoveOldKernels - dskrvk
@dskrvk Oui! Pourquoi est-ce Remove-Unused-Dependencies pas le défaut? - Steven R. Loomis


Réponses:


Libérer de l'espace sur le système de fichiers racine

Pour libérer de l'espace sur le système de fichiers racine, vous pouvez essayer d'exécuter apt-get clean.

Si cela ne fonctionne pas, vous pouvez aller à /var/cache/apt/archives et supprimer manuellement quelques fichiers du cache pour récupérer de l'espace, par exemple:

sudo rm linux-headers-*

Il ne sera pas difficile de supprimer tous les .deb fichiers ici si vous devez - c'est ce que apt-get clean Est-ce que. Ils seront automatiquement re-téléchargés par apt si elles sont nécessaires à nouveau.

Libérer de l'espace sur le système de fichiers / boot

L'affiche originale a un séparé /boot partition, et c'est ce qui est plein et empêchant la apt système de travail. Il lui faudra libérer de la place là-bas.

S'il y a presque assez d'espace, allez à /boot et supprimer un fichier de configuration ou deux:

sudo rm config-3.2.0-19-generic-pae

par exemple, mais en utilisant le nom d'une des versions du noyau que vous avez l'intention de supprimer de toute façon. Cela permettra de libérer un peu d'espace (environ 144K chacun).

Si vous avez besoin de plus d'espace individuellement, retirez les anciens vmlinuz, initrd, abi et System.map fichiers jusqu’à ce que vous ayez suffisamment d’espace (environ 22M pour l’une des versions de mon noyau i386).

Quoi que vous fassiez, ne les enlève pas tous. Vous devez au moins conserver les deux dernières versions correspondantes de chaque type de fichier, pour chaque type de noyau que vous utilisez.

Ensuite, continuez avec vos commandes apt-get install. Comme mentionné ci-dessus, ils devront peut-être re-télécharger certains des debs que vous avez supprimés, mais si tel est le cas, cela se produira automatiquement. Lorsque vous avez besoin de travailler à nouveau, nettoyez-le en utilisant apt-get pour supprimer les paquets correspondant aux fichiers que vous avez supprimés - pour que tout corresponde.


Le fichier de configuration dans /boot est la configuration du noyau qui a été utilisé par l'équipe du noyau à construire le noyau du même nom. Il doit être inoffensif à supprimer, sauf si vous le souhaitez pour référence ou pour vous aider à créer vos propres noyaux.

Enfin, vous supprimez manuellement un ancien paquet de noyau ou deux du /boot partitionner pour faire encore plus de place pour le nouveau.


116
2017-08-02 15:54



J'ai essayé de supprimer presque toutes les configs. Il ne semble toujours pas avoir assez d'espace. Quels autres fichiers pourraient être supprimés? Mon système de fichiers racine est loin d'être plein, alors je ne suis pas inquiet à ce sujet. - Strifey16
J'ai mis à jour ma réponse avec les autres fichiers à supprimer manuellement. Il me semble que supprimer les ensembles 3.0.0.13 et 3.0.0.14 (cinq fichiers à l’ensemble, y compris le fichier abi) suffirait. - John S Gruber
Cela a corrigé Je me suis rendu compte que cela reviendrait probablement à supprimer des fichiers à la main, mais j'hésite toujours à faire cela avec tout ce qui est installé par apt, alors j'ai pensé que je devrais d'abord demander ici. - Strifey16
Ne pas utiliser sudo rm pour supprimer de / boot. Au lieu de cela, utilisez sudo dpkg --purge supprimer un ancien paquetage linux-image. Ensuite utiliser sudo apt-get -f install pour réparer la dépendance brisée. - jarno
Bien que le système soit parfois si complet que même dpkg ne peut pas fonctionner. Mais rm peut être utilisé alors. - jarno


Dans mon cas, le apt commandes et dpkg La commande n'a pas pu se terminer et n'a pas pu être supprimée. La mise à jour automatique a échoué lors de l'installation 2.6.32-56-server.

Ma première étape consistait à identifier l’espace à utiliser,

cd /boot
du -sk *|sort -n

J'avais environ 30 noyaux et fichiers de support.

j'ai fait un uname -a pour obtenir le noyau en cours d'exécution, J'ai identifié que j'étais sur Linux alternatif 2.6.32-43-serveret a fait un tar de 6 des versions qui ne fonctionnaient pas et étaient anciennes.

tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

J'ai ensuite fait un rm -rf de ce que j'avais sauvegardé:

rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Je montre ces commandes comme exemples, vous devrez décider avec quoi vous allez travailler pour votre situation.

Maintenant que j'avais de la place sur /boot, J'ai pu courir

apt-get -f install 

Pour nettoyer l’installation échouée de 2.6.32-56-server.

J'ai ensuite fait un

apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server

Cela m'a donné la possibilité de remettre ce que j'avais sauvegardé.

tar -xf ~username/boot.tar
rm  ~username/boot.tar    

Pour nettoyer, je pourrais alors courir:

apt-get autoremove

J'ai redémarré et je suis maintenant à utiliser 4% de /boot.


60
2018-02-20 16:48



Ce fut le plus utile pour moi de toutes les suggestions. Merci beaucoup! - Joshua F. Rountree
supprimer les fichiers de / boot rompt horriblement apt et dpkg puisque leurs scripts d’installation et de suppression échouent lorsque les fichiers sont manquants. Je ne vois pas comment ça marche. - FizxMike


Vous pouvez utiliser dpkg au lieu de apt-get pour enlever les noyaux plus anciens:

sudo dpkg -r linux-image-3.2.0-29-generic

19
2018-04-08 14:38



Peut-être y a-t-il des avantages à utiliser cela, mais la suggestion de @ mreiter a fonctionné pour moi lorsque celle-ci ne l'a pas fait (celle-ci a été suggérée sur le canal de support IRC d'ubuntu). - Aaron Hall
@AaronHall Cette réponse contient simplement la partie clé de réponse de mreiter (la dernière ligne) et il est beaucoup plus court car il ne couvre pas le nettoyage des en-têtes (ce qui n'aide pas dans le cas de séparer /boot cloison). - Melebius


J'ai remarqué qu'il y avait encore des fichiers des anciennes versions dans le répertoire de démarrage:

$ ls /boot
vmcoreinfo-2.6.31-17-server

Et le gestionnaire de paquets listerait les anciennes versions:

dpkg -l | grep linux-image

J'ai donc utilisé cette commande (autoremove supprimerait également les images plus récentes que je ne veux pas supprimer)

sudo apt-get purge linux-image-2.6.31-17-server

J'avais encore quelques en-têtes à gauche:

dpkg -l | grep linux-headers

Donc j'ai fait ça:

sudo apt-get purge linux-headers-2.6.32-34

Finalement, il restait un paquet que je ne pouvais pas enlever avec apt-get purge:

$ dpkg -l | grep linux-image
rc  linux-image-2.6.28-11-server

La source: Supprimer un paquet marqué comme rc par dpkg

sudo dpkg --purge linux-image-2.6.28-11-server

9
2017-10-24 13:56





C'est ce que j'ai utilisé:

sudo apt-get autoremove linux-image-xxxx

Faites cela pour tous les vieux noyaux et ne conservez que les deux derniers.

Si vous voulez supprimer automatiquement les anciens noyaux et mettre à jour GRUB regarde ça: Documentation Ubuntu


2
2017-11-22 17:33



Cela devrait être la réponse acceptée. Si cela ne vous dérange pas de tout nettoyer, vous n'avez même pas besoin de spécifier l'image Linux. - CyberEd


Vous ne pouvez pas agir sur les paquets, mais vous pouvez agir sur d'autres fichiers. Tout d'abord, parcourez votre dossier personnel et voyez s'il y a n'importe quoi vous pouvez supprimer. Sinon, essayez de déplacer une bonne quantité de fichiers sur une autre partition (ou un lecteur flash), puis essayez sudo apt-get install -f pour nettoyer les problèmes de dépendance du package (vous avez probablement installé un fichier .deb via dpkg), puis purgez les anciens noyaux. Une fois que vous avez au moins 10 Mo, essayez de supprimer les logiciels ou fichiers inutiles.


2
2017-08-02 15:20



Le dossier de base n'est pas dans / boot - Thorbjørn Ravn Andersen


Utilisez le gestionnaire de paquets Synaptic. Il vous suffit de sélectionner le package que vous souhaitez supprimer et il vous invitera également à supprimer les packages qui en dépendent. D'après mon expérience, les paquets du noyau sont toujours groupés par deux (ou plus, selon la façon dont vous comptez) qui sont interdépendants. Vous pouvez généralement trouver les anciens rapidement en utilisant le filtre "local / obsolete".


1
2017-08-03 02:39



Par exemple. sur un serveur (texte uniquement), il n'y a pas de Synaptic. Donc, pas vraiment une solution viable pour les serveurs. - nerdoc


Simplement en cours d'exécution sudo apt-get -f autoremove résolu mon problème.


1
2018-04-26 08:26



Avez-vous utilisé 100% d'espace disque / de démarrage? - ubashu
En regardant mon historique de surveillance, cela ne semblait pas être le cas. PS: je suis sur Vagrant xenial, et mon système de fichiers de démarrage /dev/sda1 est monté sur / - forzagreen


Vérifiez l'utilisation de /var/tmp avec du -sh /var/tmp/. Tous les fichiers de ce dossier peuvent être supprimés pour faire de la place.

Vous pouvez ensuite exécuter les opérations suivantes pour supprimer les anciens noyaux:

sudo apt-get clean
sudo apt install byobu
sudo purge-old-kernels
sudo apt autoremove
sudo update-grub

1
2017-11-06 09:29



Qu'est ce que /var/tmp avoir à faire avec les vieux noyaux? Et il n'est pas toujours prudent de tout supprimer dans /var/tmp... - ubashu


Lance ça:

sudo apt-get autoremove
sudo apt-get --purge remove && sudo apt-get autoclean
sudo apt-get -f install
sudo dpkg-reconfigure -a

La source: Je reçois cette erreur après le démarrage. s'il vous plaît aider


1
2018-02-15 18:41



qu'est-ce que sudo dpkg-reconfigure -a fait-il? Sur Ubuntu 16, son option est inconnue -a - Shivam Kotwalia
Pour cette question, apt ne parviendra pas à supprimer les packages du noyau, car le processus de suppression lui-même génère des fichiers dans /boot, qui est déjà plein. C'est pourquoi apt-get autoremove échoue. La question que vous recherchez est askubuntu.com/q/142926/158442qui a déjà autoremove, répertorié. - muru
@muru je viens de poster parce qu'il a fait le tour, pour moi: D - Ardi Nusawan
Je suis sûr que oui, ce que je dis, c'est que votre problème aurait été l'autre question, pas celle-ci. - muru
@muru oh ok ça va: D - Ardi Nusawan


J'ai trouvé que la seule chose qui fonctionnait pour moi était l'utilisation d'Aptitude.

sudo aptitude

Puis, quand il s'ouvre, il dit généralement quelque chose sur les dépendances non satisfaites. Vous pouvez frapper la lettre g procéder à la suppression suggérée. Il vous amènera à une page où il répertorie ce qui va se passer.

Il devrait y avoir un moins - à côté des grains cassés. presse g encore une fois et il va enlever les noyaux cassés. presse q quitter. Alors vous devriez pouvoir utiliser sudo apt-get autoremove pour se débarrasser des vieux noyaux et libérer de l'espace.


0
2018-04-03 23:29