Les paquets de noyau cassés d'Ubuntu 16.04 ne me permettent pas d'installer ou de supprimer quoi que ce soit avec apt-get

11

Chaque fois que j'essaie de faire quoi que ce soit avec apt-get, que ce soit l'installation, la suppression, la purge, la mise à jour, la mise à niveau, je reçois toujours la même erreur.

ses@ses-VirtualBox:~/Downloads$ sudo apt-get install ssh
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-4.4.0-45 linux-headers-4.4.0-45-generic linux-image-4.4.0-45-generic linux-image-extra-4.4.0-45-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  ncurses-term openssh-server openssh-sftp-server ssh-import-id
Suggested packages:
  ssh-askpass rssh molly-guard monkeysphere
The following packages will be REMOVED:
  linux-image-extra-4.4.0-38-generic linux-image-extra-4.4.0-42-generic
The following NEW packages will be installed:
  ncurses-term openssh-server openssh-sftp-server ssh ssh-import-id
0 upgraded, 5 newly installed, 2 to remove and 0 not upgraded.
10 not fully installed or removed.
Need to get 0 B/643 kB of archives.
After this operation, 320 MB disk space will be freed.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
(Reading database ... 308434 files and directories currently installed.)
Removing linux-image-extra-4.4.0-38-generic (4.4.0-38.57) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-38-generic
run-parts: executing /etc/kernel/postinst.d/pm-utils 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
run-parts: executing /etc/kernel/postinst.d/vboxadd 4.4.0-38-generic /boot/vmlinuz-4.4.0-38-generic
run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error
run-parts: /etc/kernel/postinst.d/vboxadd exited with return code 1
dpkg: error processing package linux-image-extra-4.4.0-38-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Removing linux-image-extra-4.4.0-42-generic (4.4.0-42.62) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-42-generic
run-parts: executing /etc/kernel/postinst.d/pm-utils 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
run-parts: executing /etc/kernel/postinst.d/vboxadd 4.4.0-42-generic /boot/vmlinuz-4.4.0-42-generic
run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error
run-parts: /etc/kernel/postinst.d/vboxadd exited with return code 1
dpkg: error processing package linux-image-extra-4.4.0-42-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 linux-image-extra-4.4.0-38-generic
 linux-image-extra-4.4.0-42-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

J'ai essayé de suivre cette question mais pas de chance: Apt ne parvient pas à supprimer le noyau partiellement installé et ne peut pas installer d'autres packages

vérification du fichier d'état dpkg je vois que les deux paquets sont à moitié installés

Package: linux-image-extra-4.4.0-38-generic
Status: deinstall ok half-installed
Priority: optional
Section: kernel
Installed-Size: 158607
Maintainer: Ubuntu Kernel Team <[email protected]>
Architecture: amd64
Source: linux
Version: 4.4.0-38.57
Depends: linux-image-4.4.0-38-generic, crda | wireless-crda
Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 This package contains the Linux kernel extra modules for version 4.4.0 on
 64 bit x86 SMP.
 .
 Also includes the corresponding System.map file, the modules built by the
 packager, and scripts that try to ensure that the system is not left in an
 unbootable state after an update.
 .
 Supports Generic processors.
 .
 Geared toward desktop and server systems.
 .
 You likely do not want to install this package directly. Instead, install
 the linux-generic meta-package, which will ensure that upgrades work
 correctly, and that supporting packages are also installed.

** Modifications

après avoir supprimé manuellement les packages du noyau selon les instructions de user.dz paste.ubuntu.com/23487716

pendant ce temps pendant sudo apt-get install -f Ubuntu m'a alerté d'une erreur système entrez la description de l'image ici

dses
la source
Que se passe-t-il lorsque vous courez sudo apt-get install -f?
negusp
J'ai le même problème
dses
1
Avez-vous récemment installé VirtualBox? Le problème est la ligne run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error. vboxaddsera exécuté à chaque fois que vous ajouterez ou supprimerez un noyau et continuera à interrompre l'installation ou la suppression à chaque fois. Exec format errorsignifie généralement que l'exécutable mentionné a été compilé pour la mauvaise architecture. Quelle est la sortie de file /etc/kernel/postinst.d/vboxadd?
Chai T. Rex
/etc/kernel/postinst.d/vboxadd: vide
dses
Je me demande pourquoi sudo apt-get install sshessaie de supprimer ces paquets linux-image-extra.
jarno

Réponses:

11

Remarque: Comme ChaiT.Rex l'a commenté ci-dessous, seules les étapes 4 et 5 sont nécessaires pour résoudre le problème.

Je laisse les étapes 1, 2 et 3 documentées pour quiconque peut avoir besoin de supprimer manuellement certains packages. Mais essayez d'abord ce /ubuntu//a/490677/26246 qui semble plus facile.

  1. Supprimez-les manuellement, soyez prudent si vous retapez les commandes ci-dessous rm -rfest une commande dangereuse lorsqu'elle est exécutée en tant que root.

    sudo rm -rf /lib/modules/4.4.0-38-generic /lib/modules/4.4.0-42-generic
    sudo rm -rf /usr/share/doc/linux-image-extra-4.4.0-38-generic /usr/share/doc/linux-image-extra-4.4.0-42-generic
    sudo rm /var/lib/dpkg/info/linux-image-extra-4.4.0-38-generic* /var/lib/dpkg/info/linux-image-extra-4.4.0-42-generic*
    
  2. Modifiez leur état dans le fichier d'état dpkg.

    Faites une sauvegarde au cas où

    sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup0
    

    Recherchez les entrées associées (commande avec sortie attendue, le numéro de ligne sera différent):

    ~$ grep -n -e "linux-image-extra-4.4.0-38-generic" -e "linux-image-extra-4.4.0-42-generic" /var/lib/dpkg/status
    18488:Package: linux-image-extra-4.4.0-42-generic
    77123:Package: linux-image-extra-4.4.0-38-generic
    

    Ouvrez le fichier d'état pour modifier et modifier l'état du package:

    sudo nano +18488 /var/lib/dpkg/status
    

    de:

    Package: linux-image-extra-4.4.0-38-generic
    Status: install ok installed
    

    à:

    Package: linux-image-extra-4.4.0-38-generic
    Status: deinstall ok config-files
    

    Ctrl+ opour enregistrer. Ctrl+ xpour quitter.

    Apportez les mêmes modifications à linux-image-extra-4.4.0-42-generic.

  3. Supprimez manuellement linux-image-4.4.0-38-generic et linux-image-4.4.0-42-generic aussi

    sudo rm -f *4.4.0-38-generic *4.4.0-42-generic
    sudo rm -rf /usr/share/doc/linux-image-4.4.0-38-generic /usr/share/doc/linux-image-4.4.0-42-generic
    

    Identique à avant de modifier leur statut en deinstall ok config-files

    $ grep -n -e "Package: linux-image-4.4.0-38-generic" -e "Package: linux-image-4.4.0-42-generic" /var/lib/dpkg/status
    61217:Package: linux-image-4.4.0-38-generic
    98051:Package: linux-image-4.4.0-42-generic
    
  4. Supprimez ce fichier Virtualbox gênant

    sudo rm /etc/kernel/postinst.d/vboxadd
    
  5. Mettre à jour l'état du dpkg et le menu grub

    sudo dpkg --audit
    sudo apt-get install -f
    sudo update-grub
    
user.dz
la source
Ok, j'ai réussi à installer et à supprimer un package après avoir suivi vos instructions. Cependant, je reçois les erreurs suivantes énumérées ci-dessus après avoir exécuté sudo apt-get install -f
dses
@dses, mis à jour ma réponse, pourrait recommencer à partir de la première étape.
user.dz
encore une fois, suivre vos étapes m'a permis d'utiliser apt normalement. Il y a juste le problème que j'obtiens maintenant des erreurs de package de noyau supplémentaires et Ubuntu a affiché une erreur système pendant "apt install -f" comme indiqué dans la section des modifications de la question.
dses
1
@ user.dz Je pense que si la suppression /etc/kernel/postinst.d/vboxaddfonctionne, c'est tout ce qui est vraiment nécessaire. Tout dans ce répertoire est exécuté chaque fois qu'un noyau est installé ou supprimé, et ce fichier ayant un Exec format errorinterrompt la suppression de ces noyaux à chaque fois.
Chai T. Rex,
1
@ ChaiT.Rex, vous avez raison, je ne l'avais pas remarqué au début.
user.dz