web-dev-qa-db-ja.com

ブートパーティションがいっぱいで、古いカーネルを削除できません。壊れたパッケージ

おそらく非常に単純なことを尋ねてすみませんが、私は今1週間グーグルで調べており、成功せずに多くのことを試しました。

まず、起動するたびに/ bootパーティションがいっぱいであるというポップアップが表示され、Synaptic Managerはlinux-image-genericが破損していると表示しますが、いずれかを再インストールできません(linux-image-extra- 3.13.0-54-genericおよびlinux-image-generic)。

私の端末では、install -fを使用して問題を修正するように指示されたので、それを試してみましたが、これが返されます。悲しいことに、私はまだ学習中であり、コードを解読することができませんでした。

aksel@aksels-PC:~$ Sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
 linux-image-3.13.0-54-generic
Suggested packages:
 fdutils linux-doc-3.13.0 linux-source-3.13.0 linux-tools
The following NEW packages will be installed:
 linux-image-3.13.0-54-generic
0 upgraded, 1 newly installed, 0 to remove and 344 not upgraded.
5 not fully installed or removed.
Need to get 0 B/14,7 MB of archives.
After this operation, 32,8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 431129 files and directories currently installed.)
Preparing to unpack .../linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb ...
Done.
Unpacking linux-image-3.13.0-54-generic (3.13.0-54.91) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-3.13.0-54-generic' to '/boot/vmlinuz-3.13.0-54-generic.dpkg-new': failed to write (No space left on device)
No apport report written because the error message indicates a disk full error

dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic
Errors were encountered while processing:
 /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
7
Dooblieve

Linux-purgeを使用して

この目的のためにヘルパースクリプトを作成しました。 linux-purgeと呼ばれ、Launchpad.netのプロジェクトページは here です。お知らせセクションにインストール手順があります こちら

この特定のケースでは、実行します

Sudo linux-purge --fix

手作業による方法

別の方法として、 Communiy Wiki Help に手動でタスクを実行する方法に関する指示があります(これはjarnosとして)。

とにかく、ここにアーカイブとしての私のマニュアルの指示があります:

まず、以前のカーネル更新から残っている一時ファイルを削除します。

Sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*

(Ubuntu 16.04以前では bug が原因である可能性があります。)

コマンドによって、ブートされたカーネルを除く、正常にインストールされたカーネルを一覧表示します。

dpkg-query -W -f='${Status} ${Package}\n' | awk '/^[^ ]+ ok installed linux-image-[0-9]+/{print $4}' | grep -Fv $(uname -r)

不要なカーネルのinitrd.imgファイルを削除します( bug による);ここで選択したカーネルリリースは4.2.0-23-genericです。

Sudo update-initramfs -d -k 4.2.0-23-generic

カーネルをパージする

Sudo dpkg --purge linux-image-extra-4.2.0-23-generic linux-image-4.2.0-23-generic

/ bootの一部のスペースを解放します。コマンドが失敗した場合、一部のインストール済みパッケージはカーネルに依存します。 dpkgの出力は、パッケージの名前を示します。最初にパージします。

各ヘッダーパッケージを削除することもできます

Sudo dpkg --purge linux-headers-4.2.0-23-generic

共通ヘッダーパッケージも

Sudo dpkg --purge linux-headers-4.2.0-23

他のパッケージがそれに依存していない場合;そうでない場合、コマンドは失敗しますが、実行しても安全です。

次に実行する

Sudo apt-get install -f

壊れた依存関係を修正します。ディスク容量が足りないことが原因で失敗する場合は、上記の方法で別のカーネルを削除する必要があります。

システムにはまだ多くのカーネルがインストールされている可能性がありますが、今では余分なカーネルを削除できるはずです。 Sudo apt-get purgeの後にカーネルパッケージ名が続きます。

7
jarno

古いカーネルを削除する最も簡単で簡単な方法は次のとおりです。

Sudo apt-get autoremove

通常、インストールされているカーネルの数は2つまたは3つに削減されます。問題が再発しないように、新しいカーネルをインストールするすべてのソフトウェアの更新後にこれを行います。

0
Rod Smith