过去几周我一直在运行 Ubuntu 12.04。我最近尝试通过更新管理器下载并安装一些文件。它找到了一些文件,下载了它们,但安装失败。它给出了错误:
installArchives() failed: (Reading database ...
(Reading database ... 80%
dpkg: unrecoverable fatal error, aborting:
reading files list for package 'libasn1-8-heimdal': Input/output error
我尝试使用apt-get upgrade
但产生了类似的错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
icedtea-6-jre-cacao icedtea-6-jre-jamvm openjdk-6-jre openjdk-6-jre-headless
openjdk-6-jre-lib
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/34.6 MB of archives.
After this operation, 1,024 B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 80%
dpkg: unrecoverable fatal error, aborting:
reading files list for package 'libasn1-8-heimdal': Input/output error
E: Sub-process /usr/bin/dpkg returned an error code (2)
任何帮助都将不胜感激。提前致谢。
编辑:以下是一些可能有用的额外信息。我最初的问题是 Ubuntu 软件中心无法打开。我发现更新管理器和 Synaptic 包管理器也无法打开。它们都给出了类似这样的错误:
"installArchives() failed: dpkg: error: reading package info file '/var/lib/dpkg/available': Input/output errorError in function:"
经过多次谷歌搜索,我似乎解决了这个问题,因为包管理器会再次打开。当我尝试从更新管理器下载并安装任何更新时,我得到了本文开头的错误。
答案1
我已经修复了这个问题这些说明。
因此解决方案如下:
- 进入
/var/lib/dpkg
目录- 备份
status
文件- 编辑
status
文件- 搜索出现错误的包
只需从该包中删除这些行(但保留涉及其他包的所有其他行,即使它们在“替换”或“依赖”字段中包含损坏的包)
[…]
status
保存文件中的更改- 跑步:
sudo dpkg --configure -a
强制重新安装缺失的依赖项(因为现在有一些):
sudo apt-get -f install
我认为,如果损坏的包不依赖于任何其他包(这种情况很少见),只需重新安装它:
sudo apt-get install the_package
一切正常,现在可以更新,升级或安装新的软件包!
需要注意的是,我与那里给出的解决方案有一些不同。状态文件不易编辑(因为它是一个重要的文件,不应该被编辑)。在那里进行的任何编辑都应小心谨慎,并且在进行任何更改之前应备份该文件。
我不得不重复步骤 4-8 三次(每次错误都一样,只是包不同)。最后,当所有包都被删除后,我能够重新安装它们,这解决了我的问题。
答案2
磁盘的 inode 可能会损坏。
使用 Live CD,运行此命令
sudo fdisk -l
注意磁盘和分区,然后可以/dev/dsb1
修复它:
sudo fsck -y /dev/sdb1
重启并返回系统
sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade