web-dev-qa-db-ja.com

カーネルパッケージの問題のため、アップグレードを適切に行えません

ubuntu 14.04 LTSユーザーはこちら。

基本的に、実行中に問題が発生しました

Sudo apt-get update
Sudo apt-get upgrade

Linuxカーネルパッケージ3.13.0.57が「完全にインストールされていない」とマークされていたため、dpkgからエラーコードが返されました。

Errors were encountered while processing:
 linux-image-3.13.0.57-generic
 linux-image-extra-3.13.0-57-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

システムカーネルの現在のバージョンを確認するためにname -rと入力しましたが、驚くべきことに.13.0.57でした。その後、システムを再起動し、grubを入力して、インストールされているすべてのLinuxカーネルを一覧表示し、.8.0-35-genericがあることを確認したため、3.13.0.57バージョンの再インストールを試みました。 。 3.8.0-35が利用可能な場合、デフォルトでUbuntu 14.04が3.13.0.57で起動する理由はわかりません。

.8.で正常に起動した後、.13.0-57が存在することを確認するために、dpkgで使用しているすべてのカーネルをもう一度リストしました。

Sudo dpkg --list | grep linux-image
Sudo apt-get purge linux-image-3.13.0.57-generic
Sudo apt-get purge linux-image-extra-3.13.0-57-generic

ただし、余分なイメージパッケージは削除できませんが、純粋なLinuxイメージは次のことができます。

Errors were encountered while processing:
 linux-image-extra-3.13.0-57-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

これを修正する方法はありますか?私は検索して、ブートパーティションのスペース不足がこの種の問題を引き起こす可能性があることを見ましたが、私の場合は違うと思います。ブートパーティションの十分なスペースを確実に解放するために、4〜5個の古いカーネルを手動でクリアしました。

編集1:Ubuntu 14.04.2にはLinux Kernel 3.16が付属していることがわかりました。 xがありません。私が持っている最新のものは3.8.0-35で、3.13.0-57です

Edit 2:Running Sudo apt-get autoremoveまたはSudo apt-get dist-upgradeは助けません。アップグレードを実行できないようです。 Sudo apt-get autoremoveのログは次のとおりです:

    $ Sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-image-extra-3.13.0-57-generic
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 152 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 747752 files and directories currently installed.)
Removing linux-image-extra-3.13.0-57-generic (3.13.0-57.95) ...
depmod: FATAL: could not load /boot/System.map-3.13.0-57-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/dkms 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
update-initramfs: Generating /boot/initrd.img-3.13.0-57-generic
grep: /boot/config-3.13.0-57-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/zz-runlilo 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
Fatal: open /boot/vmlinuz-3.13.0-46-generic.efi.signed: No such file or directory
run-parts: /etc/kernel/postinst.d/zz-runlilo exited with return code 1
dpkg: error processing package linux-image-extra-3.13.0-57-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 linux-image-extra-3.13.0-57-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Fatal: open /boot/vmlinuz-3.13.0-46-generic.efi.signed: No such file or directoryが3.13.0-57の削除に関係しているのかわかりません。

5
0x450

私は問題の解決策を見つけることができました。それにもかかわらず、私は同じ問題を抱えている人が苦労した場合の答えとして投稿することにしました。

問題の原因:

パッケージのdpkgステータスを確認しました。

dpkg --status linux-image-3.13.0.57-generic
dpkg --status linux-image-extra-3.13.0-57-generic

出力には、パッケージの状態が悪いことが明確に記載されていました。上記の質問で書いたように、それらは「完全にはインストールされていません」。

解決策:

これらのパッケージのエントリは、apt-getが正常に機能するために、dpkgのステータスファイルから削除する必要があります。手順は次のとおりです。

  1. 問題が発生した場合は、ステータスファイルのバックアップを作成してください。

    Sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup

  2. 任意のテキストエディターで/var/lib/dpkg/statusを開き、検索して削除しますのみ破損したパッケージの参照。 他のものは削除しないでください!

  3. Sudo apt-get upgradeを実行して、すべてが修正されていることを確認します。

5
0x450

新しいカーネルバージョンにアップグレードしたい場合は、「linux-image-lts ...」パッケージから「apt-get dist-upgrade」を使用して手動でインストールできます。

これらの失敗は、完全なluksで暗号化されたVolumensで発生し、これらのセットアップでは/ bootが非常に小さくなります。

おそらく「apt-get autoremove」も役立ちます...

1
Mr.Gosh

wajig remove linux-headers-3.13.0-57-genericは私のために働いた。

再起動して、3.13.0-57-genericカーネルに接続しました。

ただし注意してください!データをバックアップしてください。

1
defhlt