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?
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 apt
s'ils sont nécessaires à nouveau.
L’affiche originale a une partition /boot
distincte, c’est ce qui est plein et empêche le système apt
de 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 vmlinuz
name__, initrd
name__, abi
et 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.
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
.
Vous pouvez utiliser dpkg
au lieu de apt-get
pour supprimer les anciens noyaux:
Sudo dpkg -r linux-image-3.2.0-29-generic
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
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
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
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.
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 g
pour 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 g
et les noyaux brisés seront supprimés. Appuyez sur q
pour quitter. Ensuite, vous devriez pouvoir utiliser Sudo apt-get autoremove
pour vous débarrasser des anciens noyaux et libérer de l'espace.
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".
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
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
Exécuter simplement Sudo apt-get -f autoremove
a résolu mon problème.