更新后损坏的软件包:linux-headers,错误:BrokenCount >0

更新后损坏的软件包:linux-headers,错误:BrokenCount >0

Ubuntu 12.04。

更新后,系统托盘中出现一个红色警告图标,警告错误:损坏计数 >0

打开更新管理器,我看到损坏的软件包linux-headers-3.2.0-33-generic-pae (new install)

具体来说,我的 ubuntu 安装在具有 8gb 内部存储的 AspireOne 上。

apt-get clean按照该网站上另一个问题中的建议进行了尝试,并尝试在 Synaptic 中重新安装该软件包。

我尝试重新启动,但没有成功。

我也尝试过apt-get install --fix-broken并得到以下结果:

sudo apt-get install --fix-broken
[sudo] password for elina: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
  linux-headers-3.2.0-33-generic-pae
The following NEW packages will be installed:
  linux-headers-3.2.0-33-generic-pae
0 upgraded, 1 newly installed, 0 to remove and 38 not upgraded.
1 not fully installed or removed.
Need to get 0 B/977 kB of archives.
After this operation 11,3 MB of additional disk space will be used.
Do you want to continue [Y/n]; y
(Reading database ... 437051 files and directories currently installed.)
Unpacking linux-headers-3.2.0-33-generic-pae (from .../linux-headers-3.2.0-33-generic-pae_3.2.0-33.52_i386.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.2.0-33-generic-pae_3.2.0-33.52_i386.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.2.0-33-generic-pae/include/config/usb/gspca/sonixb.h.dpkg-new' (while processing `./usr/src/linux-headers-3.2.0-33-generic-pae/include/config/usb/gspca/sonixb.h'): 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)
Errors were encountered while processing:
 /var/cache/apt/archives/linux-headers-3.2.0-33-generic-pae_3.2.0-33.52_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

我已经尝试了我能找到的所有建议:

sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -f install
sudo apt-get install --fix-broken

然后我看到错误中提到了可用空间。所以我执行了 df -h,结果是:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       7,0G  5,5G  1,1G  84% /
udev            235M  4,0K  235M   1% /dev
tmpfs            97M  816K   96M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            242M  352K  242M   1% /run/shm

我看到我的根文件夹中有 1.1Gb 可用空间。损坏的软件包是

linux-headers-3.2.0-33-generic-pae_3.2.0-33.52_i386.deb

它仅占用我的硬盘 11.3Mb。

我真是太迷茫了。我真的希望我错过了什么。我不想重新格式化这个存储桶。这真的不值得花时间。任何解决这个问题的帮助都会很有帮助。

答案1

我确实找到了解决问题的方法。似乎使用 root 启动 nautilus 会导致所有 inode 达到 100%。不得不在 root 的垃圾箱中清理它们。所以我做了以下事情:

df -i

这给了我以下信息:

$ df -i
Filesystem     Inodes  IUsed IFree IUse% Mounted on
/dev/sda1      460560 456125  4435  100% /
udev            60125    491 59634    1% /dev
tmpfs           61943    403 61540    1% /run
none            61943      3 61940    1% /run/lock
none            61943      8 61935    1% /run/shm

哎呀! inode 使用率达到 100%?这意味着某处存储了大量小文件。在哪里?

我使用以下命令:

sudo du -h /* | grep '[0-9]M'

这给出了一个巨大的文件列表,这些文件看起来还不错,但根垃圾箱里充满了以下文件:

/root/.local/share/Trash/files/

于是我跑了:

sudo rm -r /root/.local/share/Trash/files/

和:

sudo touch /forcefsck

然后重新启动以让最后一个命令执行其功能。

之后,运行:

df -i
and df -Th

产生了以下内容:

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      460560 196674 263886   43% /
udev            60125    487  59638    1% /dev
tmpfs           61943    393  61550    1% /run
none            61943      3  61940    1% /run/lock
none            61943      8  61935    1% /run/shm

$ df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4      7,0G  4,7G  2,0G  71% /
udev           devtmpfs  235M  4,0K  235M   1% /dev
tmpfs          tmpfs      97M  816K   96M   1% /run
none           tmpfs     5,0M     0  5,0M   0% /run/lock
none           tmpfs     242M  356K  242M   1% /run/shm

iNodes 恢复正常,我实际上看到磁盘空间略有增加(从 1.1 到 2.0 Gb)这也使系统速度非常快,所以解决这个问题有一个积极的副作用,因为我的电脑现在似乎快如闪电!

我想指出的是,如果您遇到同样的问题,系统中的任何文件夹都可能包含那些填满您的 inode 的小文件。仔细检查使用以下命令创建的列表:

sudo du -h /* | grep '[0-9]M'

将帮助您找到需要更正的文件夹。

答案2

我在使用更新管理器安装 wine 时遇到了同样的错误,唯一有帮助的方法是使用 rm /var/lib/apt/lists* -vf 删除所有软件包

sudo rm /var/lib/apt/lists/* -vf

它删除了我的软件包,然后我启动了软件中心。它说有损坏的软件包,所以我选择修复它们。它下载了必要的软件包。之后一切都很顺利。

答案3

我最近发现了同样的问题,但罪魁祸首是 Ubuntu 本身。因为它“不”处理“旋转”。

linux-headers-generic 软件包的早期版本以及 linux-images 软件包从未被删除。如果是最后两三个版本,那就没问题了,但内核和内核头文件几乎有 20 个版本。linux-headers 软件包包含大量文件,这会占用您所有的 i-node。删除了除最后一层内核头文件(以前的 linux-headers-generic-3.2.0-?)之外的所有文件后,我的 i-node 使用率从 100% 下降到 45%。

起初我不知道是什么导致了这个问题,但在阅读了你的案例后,我检查了我的 i 节点数量,发现它已 100% 满了,实际上在近 700,000 个 i 节点中只有 200 个是免费的。

只需删除以前的 linux-headers 包即可。Synaptic 的 GUI + 搜索功能和订购功能使操作更加简单。

我写这篇文章也是为了帮助最近遇到这个问题的人。

答案4

所有这些答案都对我没有帮助。但我找到了这个页面,使用那里的想法,我可以快速将我的 inode 计数从 100% 降低到 50% 左右:http://www.pkdavies.co.uk/142-dpkg-no-space-left-on-device.html

这个想法基本上就是找到那些正在消耗 inode 的文件夹。

在终端中,cd 到 root 来启动:

# cd /

然后搜索占用最多 inode 的文件夹:

# for i in `ls -1A`; do echo "`find $i | sort -u | wc -l` $i"; done | sort -rn | head -20

这将为您提供文件夹列表。再次按照上述步骤进入 inode 数量最多的文件夹,然后再次运行搜索命令。

我发现许多未使用和未安装的内核仍然占用了内核源文件夹中的空间和 inode,例如在 下/usr/src/linux-headers-*

注意,不要删除已安装内核的源代码——检查uname -rv哪一个

因此,找到文件夹后,我一次删除一个过时的目录,例如使用

root@gamma:/usr/src# sudo rm -rf linux-headers-3.2.0-30

此后我可以成功运行它来修复我的系统:

# apt-get -f install

希望这可以帮助。

相关内容