Пакеты с неработающими ядрами Ubuntu 16.04 не позволяют мне устанавливать или удалять что-либо с помощью apt-get

11

Всякий раз, когда я пытаюсь что-то сделать с помощью 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 <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.

** Редактирует

после удаления пакетов ядра вручную в соответствии с инструкциями user.dz paste.ubuntu.com/23487716

тем временем во время sudo apt-get install -f Ubuntu предупредила меня о системной ошибке введите описание изображения здесь

dses
источник
Что происходит, когда вы бежите sudo apt-get install -f?
negusp
Я получаю ту же проблему
дсес
1
Вы недавно устанавливали VirtualBox? Проблема в линии run-parts: failed to exec /etc/kernel/postinst.d/vboxadd: Exec format error. vboxaddбудет запускаться каждый раз, когда вы добавляете или удаляете ядро, и будет продолжать прерывать установку или удаление каждый раз. Exec format errorобычно означает, что упомянутый исполняемый файл был скомпилирован для неправильной архитектуры. Какой выход file /etc/kernel/postinst.d/vboxadd?
Чай Т. Рекс
/etc/kernel/postinst.d/vboxadd: пусто
dses
Интересно, почему sudo apt-get install sshпытается удалить эти пакеты linux-image-extra?
Ярно

Ответы:

11

Примечание. Как прокомментировал ChaiT.Rex ниже, для решения проблемы требуются только шаги 4 и 5.

Я оставляю шаги 1,2 и 3 документированными для тех, кому может потребоваться удалить некоторые пакеты вручную. Но попробуйте сначала этот /ubuntu//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. Удалите этот проблемный файл virtualbox

    sudo rm /etc/kernel/postinst.d/vboxadd
    
  5. Обновить статус dpkg и меню grub

    sudo dpkg --audit
    sudo apt-get install -f
    sudo update-grub
    
user.dz
источник
Хорошо, я смог успешно установить и удалить пакет после выполнения ваших инструкций. Однако я получаю следующие ошибки, перечисленные выше, после запуска sudo apt-get install -f
dses
@dses, обновил мой ответ, может начать его с первого шага.
user.dz
так что повторение ваших шагов позволило мне использовать apt нормально. Есть только проблема, что я теперь получаю дополнительные ошибки пакета ядра, и Ubuntu отображал системную ошибку во время «apt install -f», как показано в разделе редактирования вопроса.
Дес
1
@ user.dz Я думаю, что если удаление /etc/kernel/postinst.d/vboxaddработает, это все, что действительно нужно. Все в этом каталоге запускается каждый раз, когда ядро ​​устанавливается или удаляется, и этот файл Exec format errorкаждый раз прерывает удаление этих ядер.
Чай Т. Рекс
1
@ ChaiT.Rex, вы правы, я не заметил этого в начале.
user.dz