False disk fullエラー:apt-getをインストールまたは削除できません


24

Ubuntu 12.04サーバーのアップグレード中に次のエラーが発生しました。これapt-getで、パッケージをインストールまたは削除できなくなりました。

linux-headers-3.13.0-62の展開(... / linux-headers-3.13.0-62_3.13.0-62.102〜precise1_all.debから)...
dpkg:/var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.debの処理エラー(--unpack):
 `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new 'を作成できません 
( `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h 'の処理中):デバイスにスペースが 
ありませんエラーメッセージがディスクを示しているため apportレポートは作成されません完全なエラー
 dpkg-deb:エラー:サブプロセスの貼り付けはシグナルにより中断されました(パイプが壊れています)
処理中にエラーが発生しました:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E:サブプロセス/ usr / bin / dpkgがエラーコードを返しました(1)

ディスク容量が不足しているわけではありませんが、

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

とにかく私のiノードがいっぱいです、

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

私は10個以上の古いカーネルを持っていますが、自分apt-get自身が不完全なのでそれらを削除することはできません。したがって、同様の問題を報告するこの投稿をフォローすることはできません。

唯一のオプションは、いくつかの古いカーネルを手動で削除するようです。問題は発生しますか?

もっと良い方法はありますか?とりあえずroot用の予約スペースを使用して、古いカーネルを削除できますか?


1
実際、古いカーネルを手動で削除し/usr/srcて状況を取り除きました。幸いなことに、すべてがうまくいき、apt再び働き始めました。しかし、実稼働マシンでそのようなことを行う前に、バックアップを取るようにお願いします。完全なバックアップのある仮想マシンで実行しました。
souravc

できます!ここでも同じことを行い(ubutu 14.04.1)、カーネル4.4.0-51-genericに更新しました。将来問題になるかどうかはわかりません。ありがとう。
モレノ

回答:


36

私はこの投稿が少し古いことを知っていますが、この投稿につまずくかもしれない人のためにここで答えを見つけました:https : //help.ubuntu.com/community/RemoveOldKernels

そのリンクが壊れている場合、関連するスニペットは次のとおりです。

古いカーネルを安全に削除する

LVMシステム、暗号化されたシステム、またはストレージが制限されたシステムのユーザーにとって、最も頻繁に発生する問題は、/ bootパーティションが単にいっぱいになっていることです。パッケージマネージャーは、スペース不足のため、保留中のアップグレードをインストールできません。また、依存関係が壊れているため、apt-getはパッケージを削除できません。

この問題は、シェルからすばやく簡単に修正できます。手動で削除する1つまたは2つの古いカーネルを識別するだけで、キューアップグレードをインストールするのに十分なスペースがパッケージマネージャーに提供されます。


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

私はこれに従いました:

sudo apt-get autoremove --purge

9

私は今、状況から抜け出す方法を見つけ、状況を取り除くために古いカーネルをいくつか削除しました/usr/src。幸いなことに、すべてがうまくいき、aptは再び機能し始めました。

本番マシンで古いカーネルを削除する前に、バックアップを取ることを強くお勧めします。


より良い解決策はまだ大歓迎です。私は投稿このコメントを、それが誰かを助けるかもしれないとの答えとして。
souravc 16

1
いくつかの古いカーネルとRANを取り除いた後apt-get autoremove 、いくつかdependaciesがインストールされてapt-get -f install私の問題固定
Thamaraiselvam

ありがとうございました。linux- *をすべて削除しましたが、/boot使用しなかったためdkpg、まだ*-headerファイルがありました/usr/src
Dylan Pierce
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.