![14.04.5 LTS:更新后,“软件包系统损坏”](https://linux22.com/image/1090441/14.04.5%20LTS%EF%BC%9A%E6%9B%B4%E6%96%B0%E5%90%8E%EF%BC%8C%E2%80%9C%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%B3%BB%E7%BB%9F%E6%8D%9F%E5%9D%8F%E2%80%9D.png)
是的,我搜索了又搜索,尝试了又尝试,现在我正在发布……
几周前,我对 14.04.5 LTS 系统进行了定期更新,现在它给出了错误“软件包系统已损坏”。它建议我尝试两件事:
禁用任何第三方 PPA。我检查了我的来源列表(在 Ubuntu 软件中心),没有找到任何来源。它们都是 ubuntu.com 来源。好吧,没有,有一个 Google 来源,但禁用它没有任何帮助。
运行“sudo apt-get install -f”,它给出了下面的输出。该输出意味着我的磁盘已满,但根据 df 的说法,它肯定不是。问题似乎出在其他地方,但它导致 apt-get 认为驱动器已满。
有任何想法吗?
command-prompt$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
account-plugin-windows-live gir1.2-gnomekeyring-1.0 gir1.2-rb-3.0
gir1.2-secret-1 libdmapsharing-3.0-2 libgpod-common libgpod4 libhdb9-heimdal
libkdc2-heimdal libllvm3.5 libntdb1 librhythmbox-core8 libsgutils2-2
libupstart1 linux-headers-3.13.0-117 linux-headers-3.13.0-117-generic
linux-headers-3.16.0-30 linux-headers-3.16.0-30-generic
linux-headers-4.4.0-34 linux-headers-4.4.0-34-generic linux-headers-4.4.0-45
linux-headers-4.4.0-45-generic linux-headers-4.4.0-64
linux-headers-4.4.0-64-generic linux-image-3.16.0-30-generic
linux-image-4.4.0-34-generic linux-image-4.4.0-64-generic
linux-image-extra-3.16.0-30-generic linux-image-extra-4.4.0-34-generic
linux-image-extra-4.4.0-64-generic media-player-info python-ntdb
python3-mako python3-markupsafe rhythmbox-data
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
linux-headers-3.13.0-129 linux-headers-3.13.0-129-generic
linux-headers-4.4.0-91
The following NEW packages will be installed:
linux-headers-3.13.0-129 linux-headers-3.13.0-129-generic
linux-headers-4.4.0-91
0 upgraded, 3 newly installed, 0 to remove and 49 not upgraded.
4 not fully installed or removed.
Need to get 0 B/19.5 MB of archives.
After this operation, 149 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 1695950 files and directories currently installed.)
Preparing to unpack .../linux-headers-4.4.0-91_4.4.0-91.114~14.04.1_all.deb ...
Unpacking linux-headers-4.4.0-91 (4.4.0-91.114~14.04.1) ...
dpkg: error processing archive /var/cache/apt/archives/linux-headers-4.4.0-91_4.4.0-91.114~14.04.1_all.deb (--unpack):
unable to create `/usr/src/linux-headers-4.4.0-91/drivers/staging/android/ion/Makefile.dpkg-new' (while processing `./usr/src/linux-headers-4.4.0-91/drivers/staging/android/ion/Makefile'): 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)
Preparing to unpack .../linux-headers-3.13.0-129_3.13.0-129.178_all.deb ...
Unpacking linux-headers-3.13.0-129 (3.13.0-129.178) ...
dpkg: error processing archive /var/cache/apt/archives/linux-headers-3.13.0-129_3.13.0-129.178_all.deb (--unpack):
unable to create `/usr/src/linux-headers-3.13.0-129/arch/mips/include/asm/lasat/head.h.dpkg-new' (while processing `./usr/src/linux-headers-3.13.0-129/arch/mips/include/asm/lasat/head.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)
Preparing to unpack .../linux-headers-3.13.0-129-generic_3.13.0-129.178_amd64.deb ...
Unpacking linux-headers-3.13.0-129-generic (3.13.0-129.178) ...
dpkg: error processing archive /var/cache/apt/archives/linux-headers-3.13.0-129-generic_3.13.0-129.178_amd64.deb (--unpack):
error creating directory `./usr/src/linux-headers-3.13.0-129-generic/include/config/module/sig': 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-4.4.0-91_4.4.0-91.114~14.04.1_all.deb
/var/cache/apt/archives/linux-headers-3.13.0-129_3.13.0-129.178_all.deb
/var/cache/apt/archives/linux-headers-3.13.0-129-generic_3.13.0-129.178_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
答案1
根据第一个答案apt-get:设备上没有剩余空间(12.04)您的系统可能已用尽 inode。df -ih
将的输出与 进行比较df -h
。
从“apt-get install -f”输出中可以看出,您的系统有一定数量的旧软件包可以自动删除。这可能使更新正常运行。
运行sudo apt-get autoremove
。运行df -h
并df -ih
比较两个输出。考虑发布前后结果。
如果apt-get autoremove
没有释放足够的 inode,您可能需要通过存档一些文件来释放一些。du ~/ | sort -n | head -n 10
将列出当前用户主目录中的 10 个最小文件。存档或删除许多小文件将最大限度地释放 inode。
答案2
看起来您的源文件已损坏,并且有损坏的软件包。按 Ctrl + Alt + T 打开终端并输入以下内容,删除损坏的源文件:
sudo rm /etc/apt/sources.list
然后输入
sudo software-properties-gtk
这将打开 software-properties-gtk 并自动创建一个新的 sources.list。
然后将服务器更改为美国或您选择的任何其他服务器。您必须从新对话框中启用存储库才能创建新的 sources.list。
勾选所有框然后单击“恢复”,再单击“关闭”。
sudo apt-get update && sudo apt-get dist-upgrade -y
答案3
执行df -hi
检查磁盘已满状态;我敢打赌你没有剩余的 inode 了;因此无法写入新文件,无法扩展文件(无法使文件变大)。-i 表示显示 inode 信息(想想块、集群......)。
毫无疑问,您做了一些事情,例如创建了大量微小的日志/电子邮件文件,它使用了所有的 inode,并且“磁盘已满”,因为无法再写入文件(即使有些空间未分配;inode 全部用完了!)。inode 是根据格式分配的;但要找一个充满数以万计的小文件的目录,删除不需要的垃圾,或者至少移动到非系统卷,最好限制您的日志/电子邮件或任何更可持续的限制(由您的磁盘类型、容量等设置的数量)等。
答案4
谢谢大家的帮助!
从 df -i (第二和第三个答案)我可以清楚地看到 inode 已全部用完:
/dev/sda4 1.7M 1.7M 5.2K 100% /
但我很难找到罪魁祸首。我查看了所有常见的地方,最终发现大约 50 个内核(以及标题和所有内容)可能是罪魁祸首。Ubuntu 软件中心和 apt-get 的功能不足以让我删除一些,所以我转到 /usr/src 并手动删除了一些最旧的目录。在 2-3 个内核之后,我可以看到 inode 计数终于朝着正确的方向发展。但 USC / apt-get 仍然无法正常运行。所以我又删除了 5 个左右,这让我归结为:
/dev/sda4 1720320 1595437 124883 93% /
然后我终于能够让 USC 自行修复,或者至少它不再提示我。最后,在 USC 中,我删除了更多 Linux 内核。
我即将重新启动机器,然后尝试完全更新系统......
编辑:更新成功!一切正常!再次感谢!
由于存储系统管理不善,Ubuntu 在常规升级过程中两次让我的电脑瘫痪,对此我深表遗憾
期待再次升级到 18.04 LTS