Los paquetes de kernel rotos de Ubuntu 16.04 no me permiten instalar ni eliminar nada con apt-get

11

Cada vez que intento hacer algo con apt-get, ya sea instalar, eliminar, purgar, actualizar, actualizar, siempre recibo el mismo error.

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)

Intenté seguir esta pregunta pero no tuve suerte: Apt no puede eliminar el kernel parcialmente instalado y no puede instalar ningún otro paquete

comprobando el archivo de estado dpkg veo que ambos paquetes están medio instalados

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.

** ediciones

después de eliminar manualmente los paquetes del kernel según las instrucciones de user.dz paste.ubuntu.com/23487716

mientras tanto, durante sudo apt-get install -f Ubuntu me alertó sobre un error del sistema ingrese la descripción de la imagen aquí

dses
fuente
¿Qué pasa cuando corres sudo apt-get install -f?
negusp
Me sale el mismo problema
dses
1
¿Instalaste recientemente VirtualBox? El problema es la línea run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error. vboxaddse ejecutará cada vez que agregue o elimine un núcleo, y continuará interrumpiendo la instalación o eliminación cada vez. Exec format errorgeneralmente significa que el ejecutable mencionado fue compilado para la arquitectura incorrecta. ¿Cuál es la salida de file /etc/kernel/postinst.d/vboxadd?
Chai T. Rex
/etc/kernel/postinst.d/vboxadd: empty
dses
Me pregunto por qué sudo apt-get install sshintenta eliminar esos paquetes linux-image-extra.
jarno

Respuestas:

11

Nota: Como ChaiT.Rex comentó a continuación, solo se requieren los pasos 4 y 5 para solucionar el problema.

Dejo los pasos 1,2 y 3 documentados para cualquier persona que necesite eliminar manualmente algunos paquetes. Pero primero intente este /ubuntu//a/490677/26246 que parece más fácil.

  1. Elimínelos manualmente, tenga cuidado si vuelve a escribir los comandos a continuación rm -rfes un comando peligroso cuando se ejecuta como 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. Cambie su estado en el archivo de estado dpkg.

    Haga una copia de seguridad por si acaso

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

    Encuentre las entradas relacionadas (comando con salida esperada, el número de línea será diferente):

    ~$ 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
    

    Abra el archivo de estado para editar y cambiar el estado del paquete:

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

    desde:

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

    a:

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

    Ctrl+ opara guardar. Ctrl+ xpara salir.

    Realice los mismos cambios en linux-image-extra-4.4.0-42-generic.

  3. Elimine manualmente linux-image-4.4.0-38-generic y linux-image-4.4.0-42-generic también

    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
    

    Igual que antes edita su estado a 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. Eliminar ese archivo virtualbox problemático

    sudo rm /etc/kernel/postinst.d/vboxadd
    
  5. Actualizar estado dpkg y menú grub

    sudo dpkg --audit
    sudo apt-get install -f
    sudo update-grub
    
user.dz
fuente
Ok, pude instalar y eliminar con éxito un paquete después de seguir sus instrucciones. Sin embargo, recibo los siguientes errores enumerados anteriormente después de ejecutar sudo apt-get install -f
dses el
@dses, actualizó mi respuesta, podría comenzar desde el primer paso.
user.dz
Así que de nuevo, seguir sus pasos me permitió usar apt normalmente. Solo existe el problema de que ahora recibo errores adicionales del paquete del kernel y Ubuntu mostró un error del sistema durante "apt install -f" como se muestra en la sección de ediciones de la pregunta.
dses
1
@ user.dz Creo que, si la eliminación /etc/kernel/postinst.d/vboxaddfunciona, eso es todo lo que realmente se necesita. Todo en ese directorio se ejecuta cada vez que se instala o elimina un núcleo, y ese archivo que Exec format errorinterrumpe la eliminación de esos núcleos cada vez.
Chai T. Rex
1
@ ChaiT.Rex, tienes razón, no me di cuenta al principio.
user.dz