Упаковані пакети ядра 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.

** Правки

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

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


Що відбувається, коли ти біжиш sudo apt-get install -f?
негусп

Я отримую один і той же питання
dses

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

Відповіді:


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. Видаліть цей проблемний файл віртуальної скриньки

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

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

Гаразд, мені вдалося встановити та видалити пакунок після виконання ваших інструкцій. Однак я отримую такі помилки, перелічені вище після запуску sudo apt-get install -f
dses

@dses, оновив мою відповідь, міг би почати її з першого кроку.
user.dz

тому знову слідування вашим крокам дозволило нормально користуватися apt. Є лише проблема, в якій я отримую додаткові помилки в пакеті ядра, і Ubuntu відображає системну помилку під час "apt install -f", як відображено в розділі редагування питання.
dses

1
@ user.dz Я думаю, що якщо видалення все-таки /etc/kernel/postinst.d/vboxaddпрацює, це все, що дійсно потрібно. Все, що знаходиться в цьому каталозі, запускається щоразу, коли ядро ​​встановлюється або видаляється, і цей файл Exec format errorщоразу перериває видалення цих ядер.
Чай Т. Рекс

1
@ ChaiT.Rex, ви праві, я цього не помічав на початку.
user.dz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.