web-dev-qa-db-fra.com

Ma partition / boot a atteint 100% et maintenant je ne peux pas mettre à jour. Ne peut pas enlever les vieux noyaux pour faire de la place

Mon premier problème était lorsque 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 lancer apt-get autoremove et cela me donne la même erreur que apt-get upgrade.

Quand j'exécute df, je reçois ceci pour /boot:

/dev/sda1                    233191     230297         0 100% /boot

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

$ 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'essaie d'enlever 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 gâcher mon installation?

152
Strifey16

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-*

Cela ne vous fera pas de mal de supprimer tous les fichiers .deb ici si vous en avez besoin - c'est ce que fait apt-get clean. Ils seront automatiquement re-téléchargés par apts'ils sont nécessaires à nouveau.

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

L’affiche originale a une partition /boot distincte, c’est ce qui est plein et empêche le système aptde fonctionner. Il lui faudra libérer de l'espace.

S'il y a presque assez d'espace libre, allez à /boot et supprimez 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 quand même. Cela libérera un peu d’espace (environ 144K pièce).

Si vous avez besoin de plus d'espace, supprimez les anciens vmlinuzname__, initrdname__, abiet System.map jusqu'à ce que vous disposiez de suffisamment d'espace (environ 22 Mo pour l'une de mes versions du noyau i386).

Quoi que vous fassiez, ne les supprimez 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.

Continuez ensuite avec vos commandes apt-get install. Comme mentionné ci-dessus, ils devront peut-être télécharger à nouveau certaines des résolutions que vous avez supprimées, mais si c'est le cas, cela se fera automatiquement. Lorsque vous aurez à nouveau utilisé apt, 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ée par l'équipe du noyau pour build le noyau du même nom. Il devrait être inoffensif de l'enlever à moins que vous ne le vouliez comme référence ou pour vous aider à construire vos propres noyaux.

Enfin, vous supprimez manuellement un ancien package de noyau ou deux de la partition /boot pour laisser encore plus de place au nouveau.

127
John S Gruber

Dans mon cas, les commandes apt et dpkg n'ont pas pu se terminer et ne peuvent pas être supprimées. La mise à jour automatique a échoué lors de l’installation de 2.6.32-56-server.

Ma première étape a été d'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 sous un nom de domaine alternatif Linux 2.6.32-43-server et j’ai 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 à titre d'exemple, vous devrez décider avec quoi vous travaillerez dans votre situation.

Maintenant que j’avais un peu d’espace sur /boot, j’ai pu exécuter

apt-get -f install 

Pour nettoyer l’échec de l’installation 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é de la place pour remettre ce que j'avais sauvegardé.

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

Pour nettoyer, je pourrais alors exécuter:

apt-get autoremove

J'ai redémarré et je ne peux plus utiliser que 4% de /boot.

65
A.G. Russell

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

Sudo dpkg -r linux-image-3.2.0-29-generic
20
psusi

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 souhaite pas supprimer)

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

Il me restait quelques en-têtes:

dpkg -l | grep linux-headers

Alors j'ai fait ça:

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

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

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

Source: Supprime un paquet marqué rc par dpkg

Sudo dpkg --purge linux-image-2.6.28-11-server
9
mreiter

C'est ce que j'ai utilisé:

Sudo apt-get autoremove linux-image-xxxx

Faites cela pour tous les anciens noyaux et ne gardez que les deux plus récents.

Si vous voulez supprimer automatiquement les anciens noyaux et mettre à jour GRUB, voyez ceci: Documentation Ubunt

3
Samer

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

Vous pouvez ensuite exécuter ce qui suit pour supprimer les anciens noyaux:

Sudo apt-get clean
Sudo apt install byobu
Sudo purge-old-kernels
Sudo apt autoremove
Sudo update-grub
3
Tertius

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

2
hexafraction

J'ai trouvé que la seule chose qui fonctionnait pour moi utilisait Aptitude.

Sudo aptitude

Ensuite, lorsqu’il s'ouvre, il indique généralement quelque chose à propos des dépendances non satisfaites. Vous pouvez appuyer sur la lettre gpour procéder à la suppression suggérée. Cela vous mènera à une page où il énumère ce qui va se passer.

Il devrait y avoir un - moins à côté des noyaux cassés. Appuyez à nouveau sur get les noyaux brisés seront supprimés. Appuyez sur qpour quitter. Ensuite, vous devriez pouvoir utiliser Sudo apt-get autoremove pour vous débarrasser des anciens noyaux et libérer de l'espace.

1
Matthew Swanson

Utilisez le gestionnaire de paquets Synaptic. Il suffit de choisir le paquet que vous voulez supprimer et il vous demandera également de supprimer les paquets qui en dépendent. D'après mon expérience, les packages de noyau sont toujours groupés par deux (ou plus, selon votre décompte) interdépendants. Vous pouvez généralement retrouver les anciens rapidement en utilisant le filtre "local/obsolète".

1
Wegko

Lance ça:

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

Source: je reçois cette erreur après la mise à niveau. Aide s'il vous plaît

0
Ardi Nusawan

J'ai vu quelques articles sur/boot en cours de saturation qui ne sont pas résolus par dpkg en purgeant les anciens noyaux Linux, car apt-get -f install ou apt-get -f autoremov = e réinstalle les noyaux.

Dans mon cas, au moins, les paquets signés et supplémentaires devaient également être supprimés - les noyaux étant des dépendances de ces paquets, ils les ont donc réinstallés. En règle générale, les packages de noyau associés doivent être purgés avant d'appeler "install". Si vous avez essayé de apt-get upgrade juste après la purge, le message d'erreur aurait dû indiquer quels paquets avaient une dépendance non remplie du noyau que vous veniez de purger.

Dans mon cas, la tactique suivante a fonctionné:

#as Sudo, repeat 1-3 for any old kernels; can be scripted
dpkg --force-all -P linux-image-4.4.0-112-generic 
dpkg --purge linux-image-extra-4.4.0-112-generic
dpkg --purge linux-signed-image-4.4.0-112-generic
apt-get -f install #dependency resolution didn't have work to do for kernel packages
apt-get autoremove --purge -f 
apt-get autoclean
apt-get upgrade
0
Rhandi Martin

Exécuter simplement Sudo apt-get -f autoremove a résolu mon problème.

0
forzagreen