错误的磁盘已满错误: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'时):设备上 
没有剩余空间由于错误消息表示磁盘,没有写入任何分配报告完全错误
 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% /  

无论如何我的inode已满,

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

我有十多个旧内核,但是由于我apt-get本身比较la 脚,所以无法删除它们。因此,我无法按照此帖子报告类似的问题。

唯一的选择似乎是手动删除一些较旧的内核。会不会有问题呢?

有更好的出路吗?我可以暂时为root使用保留的空间并删除旧内核吗?


1
实际上,我手动删除了两个较旧的内核/usr/src以摆脱这种情况。幸运的是,一切进展顺利,并apt再次开始工作。但我会要求您在生产机器上进行此操作之前先备份。我是在具有完整备份的虚拟机上完成的。
souravc 2015年

有用!我在这里做了同样的事情(ubutu 14.04.1)以更新到内核4.4.0-51-generic。我只是不确定将来是否会引起任何问题。谢谢。
Moreno

Answers:


36

我知道这篇文章有点陈旧,但是我在这里找到了一个可能会偶然发现这篇文章的人一个答案:https : //help.ubuntu.com/community/RemoveOldKernels

如果该链接断开,则以下是相关代码段:

安全清除旧内核

对于LVM系统,加密系统或有限存储系统的用户,最常见的问题是/ boot分区只是已满。软件包管理器由于空间不足而无法安装挂起的升级。此外,由于破坏了依赖关系,apt-get无法删除软件包。

可以从外壳快速轻松地解决此问题。只需标识一个或两个旧内核即可手动删除,这将为程序包管理器提供足够的空间来安装排队的升级。


$ 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以摆脱这种情况。幸运的是,一切顺利,并且又开始工作了。

强烈建议在生产计算机上删除较旧的内核之前先备份。


仍然欢迎任何更好的解决方案。我将此评论发布为答案,因为它可能会对某人有所帮助。
souravc '16

1
在删除了一些旧内核并运行apt-get autoremove 并安装了某些依赖项之后,apt-get -f install我的问题得到了解决
Thamaraiselvam

谢谢。我删除了所有下面的linux- *,/boot但没有使用,dkpg因此仍然存在*-header文件/usr/src
Dylan Pierce '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.