Ubuntu 16.04破碎的内核包不允许我使用apt-get安装或删除任何东西

每当我尝试使用apt-get做任何事情,无论是安装,删除,清除,更新,升级,我都会遇到同样的错误。

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) 

我尝试了这个问题,但没有运气: Apt无法删除部分安装的内核,无法安装任何其他软件包

检查dpkg状态文件我看到两个软件包都已安装了一半

 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  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. 

**编辑

按照user.dz的说明手动删除内核软件包后,请指向paste.ubuntu.com/23487716

同时在sudo apt-get install -f期间,Ubuntu提醒我系统错误 在此处输入图像描述

注意:正如ChaiT.Rex在下面评论的那样,只需要步骤4和5来解决问题。

我为任何可能需要手动删除某些软件包的人留下了记录的步骤1,2和3。 但首先尝试这个https://askubuntu.com/a/490677/26246看起来更容易。

  1. 手动删除它们,如果要重新输入以下命令,请小心 rm -rf以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. 在dpkg状态文件中更改其状态。

    进行备份以防万一

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

    查找相关条目(具有预期输出的命令,行号将不同):

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

    打开状态文件以进行编辑并更改包状态:

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

    从:

     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 + o保存。 按Ctrl + x退出。

    对linux-image-extra-4.4.0-42-generic进行相同的更改。

  3. 手动删除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 

    与编辑其状态之前相同,以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. 删除麻烦的虚拟机文件

     sudo rm /etc/kernel/postinst.d/vboxadd 
  5. 更新dpkg status&grub菜单

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