GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu 16.04壊れたカーネルパッケージでApt-getを使用して何かをインストールまたは削除できませんか?

apt-getで何かをしようとすると、インストール、削除、パージ、更新、アップグレードのいずれであっても、常に同じエラーが発生します。

[email protected]:~/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 <[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.

**編集

関連:Ubuntu – UbuntuクラウドVMイメージで`apt-daily.service`を無効にする方法は?

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 ルートとして実行すると危険なコマンドです。

    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
    

Ubuntu
  1. Ubuntu 16.04フレッシュインストール後に壊れたパッケージ?

  2. Apt-getを使用してコマンドラインからパッケージのリストをインストール/削除しますか?

  3. Gfortranをインストールするにはどうすればいいですか?

  1. Valgrind –壊れたパッケージの保持に問題がありますか?

  2. Ubuntu Software Centerが.debファイルをインストールしないのはなぜですか?

  3. apt-get を使用してローカルの .deb パッケージをインストールする方法

  1. UbuntuにRPMパッケージをインストールする

  2. Studio 12.04でのOpencvインストールの問題–依存関係の破損?

  3. Apt-インストール済みパッケージのリストを取得| UbuntuにAptでインストールされたリスト