I pacchetti del kernel rotto di Ubuntu 16.04 non mi permettono di installare o rimuovere nulla con apt-get


11

Ogni volta che provo a fare qualcosa con apt-get che si tratti di installazione, rimozione, eliminazione, aggiornamento, aggiornamento, vengo sempre colpito con lo stesso errore.

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)

Ho provato a seguire questa domanda ma senza fortuna: Apt non riesce a rimuovere il kernel parzialmente installato e non può installare nessun altro pacchetto

controllando il file di stato di dpkg vedo che entrambi i pacchetti sono installati a metà

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 <kernel-team@lists.ubuntu.com>
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.

** Modifiche

dopo aver rimosso manualmente i pacchetti del kernel secondo le istruzioni di user.dz paste.ubuntu.com/23487716

nel frattempo durante sudo apt-get install -f Ubuntu mi ha avvisato di un errore di sistema inserisci qui la descrizione dell'immagine


Cosa succede quando corri sudo apt-get install -f?
negusp,

Ottengo lo stesso problema
dses

1
Hai installato VirtualBox di recente? Il problema è la linea run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error. vboxaddverrà eseguito ogni volta che aggiungi o rimuovi un kernel e continuerà ad interrompere l'installazione o la rimozione ogni volta. Exec format errordi solito significa che l'eseguibile menzionato è stato compilato per l'architettura sbagliata. Qual è l'output di file /etc/kernel/postinst.d/vboxadd?
Chai T. Rex,

/etc/kernel/postinst.d/vboxadd: vuoto
dses

Mi chiedo perché sudo apt-get install sshcerchi di rimuovere quei pacchetti linux-image-extra.
jarno,

Risposte:


11

Nota: come ChaiT.Rex ha commentato di seguito, per risolvere il problema sono necessari solo i passaggi 4 e 5.

Lascio i passaggi 1,2 e 3 documentati per chiunque abbia bisogno di rimuovere manualmente alcuni pacchetti. Ma prova prima questo /ubuntu//a/490677/26246 che sembra più facile.

  1. Rimuovili manualmente, fai attenzione se stai scrivendo nuovamente i comandi seguenti rm -rfè pericoloso quando viene eseguito come 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. Modifica il loro stato nel file di stato di dpkg.

    Effettua il backup per ogni evenienza

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

    Trova le voci correlate (comando con output previsto, il numero di riga sarà diverso):

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

    Apri il file di stato per la modifica e cambia lo stato del pacchetto:

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

    a partire dal:

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

    per:

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

    Ctrl+ oper salvare. Ctrl+ xper uscire.

    Apporta le stesse modifiche a linux-image-extra-4.4.0-42-generic.

  3. Rimuovi manualmente anche linux-image-4.4.0-38-generic e linux-image-4.4.0-42-generic

    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
    

    Come prima modifica il loro stato in 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. Rimuovi quel fastidioso file virtualbox

    sudo rm /etc/kernel/postinst.d/vboxadd
    
  5. Aggiorna lo stato di dpkg e il menu di grub

    sudo dpkg --audit
    sudo apt-get install -f
    sudo update-grub
    

Ok, sono stato in grado di installare e rimuovere con successo un pacchetto dopo aver seguito le tue istruzioni. Comunque ottengo i seguenti errori elencati sopra dopo aver eseguito sudo apt-get install -f
dses

@dses, aggiornata la mia risposta, potrebbe ricominciare dal primo passaggio.
user.dz,

così di nuovo seguire i tuoi passi mi ha permesso di usare apt normalmente. C'è solo il problema che ora ricevo ulteriori errori del pacchetto del kernel e Ubuntu ha visualizzato un errore di sistema durante "apt install -f" come mostrato nella sezione di modifica della domanda.
DSEs

1
@ user.dz Penso che, se la rimozione /etc/kernel/postinst.d/vboxaddfunziona, è tutto ciò che è veramente necessario. Tutto in quella directory viene eseguito ogni volta che un kernel viene installato o rimosso, e quel file che Exec format errorinterrompe ogni volta la rimozione di quei kernel.
Chai T. Rex,

1
@ ChaiT.Rex, hai ragione, non me ne sono accorto all'inizio.
user.dz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.