Ubuntu 16.04 paket kernel yang rusak tidak akan membiarkan saya menginstal atau menghapus apa pun dengan apt-get

11

Setiap kali saya mencoba melakukan apa saja dengan apt-get, apakah itu menginstal, menghapus, membersihkan, memperbarui, meningkatkan, saya selalu terkena kesalahan yang sama.

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)

Saya mencoba mengikuti pertanyaan ini tetapi tidak berhasil: Apt gagal menghapus kernel yang diinstal sebagian dan tidak dapat menginstal paket lain

memeriksa file status dpkg Saya melihat bahwa kedua paket setengah terinstalasi

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.

** Suntingan

setelah menghapus paket-paket kernel secara manual sesuai instruksi pengguna.dz paste.ubuntu.com/23487716

Sementara itu selama sudo apt-get install -f Ubuntu memberi tahu saya tentang kesalahan sistem masukkan deskripsi gambar di sini

dses
sumber
Apa yang terjadi ketika Anda berlari sudo apt-get install -f?
negusp
Saya mendapatkan masalah yang sama
dses
1
Apakah Anda baru saja menginstal VirtualBox? Masalahnya adalah garis run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error. vboxaddakan dijalankan setiap kali Anda menambah atau menghapus kernel, dan akan terus mengganggu instalasi atau penghapusan setiap waktu. Exec format errorbiasanya berarti bahwa executable yang disebutkan dikompilasi untuk arsitektur yang salah. Apa output dari file /etc/kernel/postinst.d/vboxadd?
Chai T. Rex
/etc/kernel/postinst.d/vboxadd: kosong
dses
Saya bertanya-tanya mengapa sudo apt-get install sshmencoba menghapus paket-paket linux-image-extra.
jarno

Jawaban:

11

Catatan: Seperti yang dikomentari ChaiT.Rex di bawah ini, hanya langkah 4 & 5 yang diperlukan untuk memperbaiki masalah tersebut.

Saya membiarkan langkah 1,2 & 3 didokumentasikan untuk siapa saja yang mungkin perlu menghapus beberapa paket secara manual. Tapi coba dulu ini /ubuntu//a/490677/26246 yang terlihat lebih mudah.

  1. Hapus secara manual, berhati-hatilah jika Anda mengetik ulang perintah di bawah ini rm -rfadalah perintah berbahaya ketika dijalankan sebagai 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. Ubah status mereka dalam file status dpkg.

    Buat cadangan untuk berjaga-jaga

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

    Temukan entri terkait (perintah dengan output yang diharapkan, nomor baris akan berbeda):

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

    Buka file status untuk diedit dan ubah status paket:

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

    dari:

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

    untuk:

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

    Ctrl+ ountuk menyimpan. Ctrl+ xuntuk keluar.

    Buat perubahan yang sama pada linux-image-extra-4.4.0-42-generic.

  3. Secara manual hapus juga linux-image-4.4.0-38-generic & 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
    

    Sama seperti sebelum mengedit statusnya 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. Hapus file virtualbox yang merepotkan itu

    sudo rm /etc/kernel/postinst.d/vboxadd
    
  5. Perbarui status dpkg & menu grub

    sudo dpkg --audit
    sudo apt-get install -f
    sudo update-grub
    
user.dz
sumber
Ok saya berhasil menginstal dan menghapus paket setelah mengikuti instruksi Anda. Namun saya mendapatkan kesalahan berikut yang tercantum di atas setelah menjalankan sudo apt-get install -f
dses
@ses, memperbarui jawaban saya, dapat memulainya dari langkah pertama.
user.dz
jadi sekali lagi mengikuti langkah Anda memungkinkan saya untuk menggunakan apt secara normal. Hanya ada masalah bahwa saya sekarang mendapatkan kesalahan paket kernel tambahan dan Ubuntu menampilkan kesalahan sistem selama "apt install -f" seperti yang ditampilkan di bagian edit pertanyaan.
dses
1
@ user.dz Saya pikir, jika menghapus /etc/kernel/postinst.d/vboxaddtidak berfungsi, itu saja yang benar-benar diperlukan. Segala sesuatu di direktori itu dijalankan setiap kali kernel diinstal atau dihapus, dan file itu mengalami Exec format errorgangguan penghapusan kernel tersebut setiap kali.
Chai T. Rex
1
@ ChaiT.Rex, Anda benar, saya tidak memperhatikan itu pada awalnya.
user.dz