J'ai reçu un message d'erreur expliquant que mon/boot est plein. essayer de nettoyer les anciens fichiers image semble toujours échouer à cause d'erreurs de disque plein ou d'erreurs de dépendance. Quelqu'un pourrait-il expliquer où je me trompe?.
$ Sudo apt-get autoremove
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-extra-3.13.0-44-generic : Depends: linux-image-3.13.0-44-generic but it is not installed
linux-image-extra-3.13.0-45-generic : Depends: linux-image-3.13.0-45-generic but it is not installed
linux-image-generic : Depends: linux-image-3.13.0-45-generic but it is not installed
E: Unmet dependencies. Try using -f.
$ ls /boot
abi-3.13.0-32-generic initrd.img-3.13.0-43-generic
abi-3.13.0-36-generic lost+found
abi-3.13.0-37-generic memtest86+.bin
abi-3.13.0-39-generic memtest86+.elf
abi-3.13.0-40-generic memtest86+_multiboot.bin
abi-3.13.0-43-generic System.map-3.13.0-32-generic
config-3.13.0-32-generic System.map-3.13.0-36-generic
config-3.13.0-36-generic System.map-3.13.0-37-generic
config-3.13.0-37-generic System.map-3.13.0-39-generic
config-3.13.0-39-generic System.map-3.13.0-40-generic
config-3.13.0-40-generic System.map-3.13.0-43-generic
config-3.13.0-43-generic vmlinuz-3.13.0-32-generic
grub vmlinuz-3.13.0-36-generic
initrd.img-3.13.0-32-generic vmlinuz-3.13.0-37-generic
initrd.img-3.13.0-36-generic vmlinuz-3.13.0-39-generic
initrd.img-3.13.0-37-generic vmlinuz-3.13.0-40-generic
initrd.img-3.13.0-39-generic vmlinuz-3.13.0-43-generic
initrd.img-3.13.0-40-generic
J'ai utilisé
kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver
obtenir
linux-headers-3.13.0-32
linux-headers-3.13.0-32-generic
linux-headers-3.13.0-36
linux-headers-3.13.0-36-generic
linux-headers-3.13.0-37
linux-headers-3.13.0-37-generic
linux-headers-3.13.0-39
linux-headers-3.13.0-39-generic
linux-headers-3.13.0-40
linux-headers-3.13.0-40-generic
linux-headers-3.13.0-44
linux-headers-3.13.0-44-generic
linux-headers-3.13.0-45
linux-headers-3.13.0-45-generic
linux-image-3.13.0-32-generic
linux-image-3.13.0-36-generic
linux-image-3.13.0-37-generic
linux-image-3.13.0-39-generic
linux-image-3.13.0-40-generic
Puis choisir la première image à supprimer
$ Sudo apt-get purge linux-image-3.13.0-32-generic
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-extra-3.13.0-32-generic : Depends: linux-image-3.13.0-32-generic but it is not going to be installed
linux-image-extra-3.13.0-44-generic : Depends: linux-image-3.13.0-44-generic but it is not going to be installed
linux-image-extra-3.13.0-45-generic : Depends: linux-image-3.13.0-45-generic but it is not going to be installed
linux-image-generic : Depends: linux-image-3.13.0-45-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Dans ce cas, j'utiliserais l'outil dpkg
pour forcer la suppression de certains packages du noyau. Ceci n'est pas suggéré pour une utilisation courante et est un peu dangereux, mais dans ce cas avec des dépendances non satisfaites, cela pourrait aider.
Tout d’abord, localisez le noyau dans lequel le système est démarré. Celui qui est actuellement chargé. Ouvrez un terminal (CTRL + ALT + T) et lancez la commande suivante
uname -r
Il vous montrera le noyau chargé, vous ne devriez PAS essayer de le supprimer.
Puis lancez la commande
ls /boot
il retournera toutes les images installées. Choisissez-en un ou deux et essayez de les enlever. Essayez de forcer les supprimer/les purger. Par exemple
Sudo dpkg --force-all -P linux-image-3.13.0-32-generic
Vous pouvez faire la même chose pour d'autres images, afin de libérer de l'espace.
Ensuite, vous pouvez essayer d’installer les paquets manquants, ou
Sudo apt-get install -f
pour essayer de résoudre les dépendances.
Enfin, lancez la commande "cleanup old kernels"
Sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
La commande ci-dessus supprimera TOUS les noyaux sauf celui qui est actuellement chargé.
Etant donné que vous avez une partition/boot séparée, gardez à l’esprit que vous devrez suivre son espace et le nettoyer souvent (la fréquence dépend de l’espace de/boot)
C'est ce qui a fonctionné pour moi sur Ubuntu 16.04.
Sudo apt autoremove --purge
Sudo apt autoremove
Sudo apt-get -f install
Sudo apt-get upgrade
Lister tous les noyaux:
dpkg --list 'linux-image*'
Afficher le noyau actuel:
uname -r
Liste tous les noyaux SAUF courant:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'
Assurez-vous que votre noyau actuel ne figure pas sur cette liste.
Supprimer tous les noyaux SAUF courant:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs Sudo apt-get -y purge
Effacer les autres trucs:
Sudo apt-get autoremove