In Ubuntu 16.04 defekten Kernel-Paketen kann ich mit apt-get nichts installieren oder entfernen

11

Immer wenn ich versuche, mit apt-get etwas zu tun, egal ob es installiert, entfernt, gelöscht, aktualisiert oder aktualisiert wird, wird mir immer der gleiche Fehler angezeigt.

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)

Ich habe versucht, dieser Frage zu folgen, aber kein Glück: Apt kann den teilweise installierten Kernel nicht entfernen und kann keine anderen Pakete installieren

Beim Überprüfen der dpkg-Statusdatei sehe ich, dass beide Pakete zur Hälfte installiert sind

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.

** Änderungen

nach dem manuellen Entfernen von Kernel-Paketen gemäß den Anweisungen von user.dz paste.ubuntu.com/23487716

Währenddessen hat mich Ubuntu während der Installation von sudo apt-get -f über einen Systemfehler informiert Geben Sie hier die Bildbeschreibung ein

dses
quelle
Was passiert beim Laufen sudo apt-get install -f?
Negusp
Ich bekomme das gleiche Problem
dses
1
Haben Sie kürzlich VirtualBox installiert? Das Problem ist die Leitung run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error. vboxaddwird jedes Mal ausgeführt, wenn Sie einen Kernel hinzufügen oder entfernen, und unterbricht die Installation oder Entfernung jedes Mal weiter. Exec format errorbedeutet normalerweise, dass die erwähnte ausführbare Datei für die falsche Architektur kompiliert wurde. Was ist die Ausgabe von file /etc/kernel/postinst.d/vboxadd?
Chai T. Rex
/etc/kernel/postinst.d/vboxadd: leer
dses
Ich frage mich, warum sudo apt-get install sshversucht wird, diese Linux-Image-Extra-Pakete zu entfernen.
jarno

Antworten:

11

Hinweis: Wie unten von ChaiT.Rex kommentiert, sind nur die Schritte 4 und 5 erforderlich, um das Problem zu beheben.

Ich lasse die Schritte 1, 2 und 3 für alle dokumentiert, die möglicherweise einige Pakete manuell entfernen müssen. Aber versuchen Sie zuerst diese /ubuntu//a/490677/26246, die einfacher aussieht.

  1. Entfernen Sie sie manuell. Seien Sie vorsichtig, wenn Sie die folgenden Befehle erneut eingeben. Dies rm -rfist ein gefährlicher Befehl, wenn er als Root ausgeführt wird.

    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. Ändern Sie ihren Status in der dpkg-Statusdatei.

    Erstellen Sie ein Backup für alle Fälle

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

    Suchen Sie die zugehörigen Einträge (Befehl mit erwarteter Ausgabe, Zeilennummer ist unterschiedlich):

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

    Öffnen Sie die Statusdatei zum Bearbeiten und ändern Sie den Paketstatus:

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

    von:

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

    zu:

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

    Ctrl+ ozu speichern. Ctrl+ xzum Beenden.

    Nehmen Sie die gleichen Änderungen an linux-image-extra-4.4.0-42-generic vor.

  3. Entfernen Sie auch linux-image-4.4.0-38-generic und 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
    

    Wie zuvor bearbeiten Sie ihren Status auf 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. Entfernen Sie diese problematische Virtualbox-Datei

    sudo rm /etc/kernel/postinst.d/vboxadd
    
  5. Aktualisieren Sie das dpkg-Status- und Grub-Menü

    sudo dpkg --audit
    sudo apt-get install -f
    sudo update-grub
    
user.dz
quelle
Ok, ich konnte ein Paket erfolgreich installieren und entfernen, nachdem ich Ihren Anweisungen gefolgt war. Ich erhalte jedoch die folgenden oben aufgeführten Fehler, nachdem ich sudo apt-get install -f
dses
@dses, aktualisierte meine Antwort, könnte es von Schritt eins neu starten.
user.dz
Wenn ich also wieder Ihren Schritten folge, kann ich apt normal verwenden. Es gibt nur das Problem, dass ich jetzt zusätzliche Kernel-Paketfehler erhalte und Ubuntu während "apt install -f" einen Systemfehler anzeigt, wie im Abschnitt "Änderungen" der Frage angezeigt.
dses
1
@ user.dz Ich denke, wenn das Entfernen /etc/kernel/postinst.d/vboxaddfunktioniert, ist das alles, was wirklich benötigt wird. Alles in diesem Verzeichnis wird jedes Mal ausgeführt, wenn ein Kernel installiert oder entfernt wird, und diese Datei mit einem Exec format errorunterbricht das Entfernen dieser Kernel jedes Mal.
Chai T. Rex
1
@ ChaiT.Rex, du hast recht, das habe ich am Anfang nicht bemerkt.
user.dz