web-dev-qa-db-fra.com

Apt ne parvient pas à supprimer le noyau partiellement installé et ne peut installer aucun autre paquet

Apt ne parvient pas à mettre à niveau ou à installer de nouveaux packages après une possible mise à niveau partielle du noyau. J'ai essayé apt-get purge -f linux-image-extra-3.19.0-22-generic qui échoue avec un message d'erreur très similaire. La machine se bloque également au démarrage dans la version la plus récente du noyau (par défaut dans grub), mais les versions précédentes fonctionnent correctement.

$ Sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be REMOVED:
  linux-image-3.19.0-22-generic linux-image-extra-3.19.0-22-generic
The following packages will be upgraded:
  linux-cloud-tools-common
1 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
2 not fully installed or removed.
Need to get 0 B/24.3 kB of archives.
After this operation, 208 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 453815 files and directories currently installed.)
Removing linux-image-extra-3.19.0-22-generic (3.19.0-22.22) ...
depmod: FATAL: could not load /boot/System.map-3.19.0-22-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/dkms 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
update-initramfs: Generating /boot/initrd.img-3.19.0-22-generic
grep: /boot/config-3.19.0-22-generic: No such file or directory
depmod: WARNING: could not open /tmp/mkinitramfs_6gldfB/lib/modules/3.19.0-22-generic/modules.order: No such file or directory
depmod: WARNING: could not open /tmp/mkinitramfs_6gldfB/lib/modules/3.19.0-22-generic/modules.builtin: No such file or directory
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
dpkg: error processing package linux-image-extra-3.19.0-22-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Removing linux-image-3.19.0-22-generic (3.19.0-22.22) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
update-initramfs: Deleting /boot/initrd.img-3.19.0-22-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postrm.d at /var/lib/dpkg/info/linux-image-3.19.0-22-generic.postrm line 328.
dpkg: error processing package linux-image-3.19.0-22-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 linux-image-extra-3.19.0-22-generic
 linux-image-3.19.0-22-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

J'ai besoin de pouvoir travailler à nouveau et dans un état où il peut installer les futurs noyaux. Bien purger le noyau 3.19.0-22 serait bien mais inutile. N'hésitez pas à demander plus d'informations, et merci d'avance

- Mesdames--

La réponse de 0x450 fonctionne pour tous les paquets non liés au noyau. Les mises à jour du noyau et de grub ramènent apt et dpkg à un état défectueux. J'ai remarqué ce message d'erreur récurrent:

Generating grub configuration file ... ERROR: cannot determine partition label for rootfs /dev/sda9

Cela pourrait-il être un problème lié aux fichiers de configuration grub?


Sudo apt-get install --reinstall linux-image-extra-3.19.0-22-generic entraîne une erreur très similaire (qui peut être visualisée ici )

Sudo dpkg --configure -a crée ceci erreur

Sudo apt-get purge linux-image-extra-3.19.0-22-generic crée ceci erreur

7
David

Il s'avère que le problème a été causé par un crash de grub-mkconfig avec le message d'erreur Generating grub configuration file ... ERROR: cannot determine partition label for rootfs /dev/sda9 (sda9 contenait la racine de mon fs).

Apt s'est écrasé parce que lorsqu'il a essayé d'installer de nouveaux noyaux, il a lancé grub-mkconfig pour les ajouter au menu de démarrage. Ce n'était pas vraiment un problème avec apt mais avec grub.

Je l'ai corrigé en réinstallant ubuntu et en utilisant ext3 au lieu de ext4 pour la partition contenant la racine de mon système de fichiers. Mon répertoire personnel est toujours dans sa propre partition ext4, il ne semble donc pas être affecté.

La réponse de 0x450 fonctionne bien comme solution temporaire, de sorte que l'on peut utiliser apt à nouveau. Cela ne résout pas le problème racine cependant.

0
David

Je me suis battu avec exactement le même problème, mais les paquets du noyau cassés étaient la version 3.13.0.57.

Inspectez le problème:

Vérifiez le dpkg status des packages:

dpkg --status linux-image-3.19.0-22-generic
dpkg --status linux-image-extra-3.19.0-22-generic

Si la sortie indique que les paquets sont en mauvais état, c’est-à-dire que est à moitié installé ou n’est pas complètement installé , cela signifie qu'ils ont cassé apt-get et dpkgrespectivement.

La solution:

Les entrées des packages de noyau infectés doivent être supprimées manuellement du fichier d'état de dpkgpour que apt-get et dpkglui-même fonctionne à nouveau normalement. Les étapes sont les suivantes:

  1. Assurez-vous de créer une sauvegarde du fichier d’état au cas où quelque chose se passerait mal.

    Sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup

  2. Ouvrez /var/lib/dpkg/status avec votre éditeur de texte préféré et recherchez et supprimez ONLY les références des packages cassés. Vous ne devez rien supprimer d'autre!

  3. Exécutez Sudo apt-get update et Sudo apt-get upgrade pour vous assurer que tout est corrigé.

  4. Cette étape est facultative car les packages ne sont plus suivis à partir des gestionnaires de packages, mais vous pouvez également libérer de l'espace disque en les supprimant. Vous pouvez supprimer manuellement et en toute sécurité toutes les entrées des packages de noyau cassés dans /boot et dans /usr/src mais soyez TRES ATTENTION. Assurez-vous de ne toucher que les fichiers/dossiers, qui correspondent à la version 3.19.0-22 dans votre cas.

12
0x450

Cause première

Le problème fondamental semble être que /boot/System.map-3.19.0-22-generic est manquant, ce qui empêche la reconfiguration/suppression du paquet.

Solutions suggérées

Ma suggestion initiale était Sudo apt-get install --reinstall linux-image-extra-3.19.0-22-generic

Comme cela échoue apparemment ("ne peut pas configurer à moitié installé"), je suggérerais de le faire un peu plus avec force , par exemple. avec les options suivantes

Sudo dpkg --remove --force-remove-reinstreq linux-image-extra-3.19.0-22-generic

Cette suggestion est basée sur this answer.

Alternative: réparation manuelle?

Sinon, vous pouvez également essayer de réparer manuellement ce fichier? Peut-être est-il décompressé par apt-get lors d’une tentative de réinstallation? C'est un peu difficile pour moi de répliquer sur mon système en ce moment

1
noleti

Je pense que tu devrais courir

Sudo dpkg --configure -a

suivi de ce qui a déjà été mentionné:

Sudo apt-get purge linux-image-extra-3.19.0-22-generic
0
JEL