无法通过更新管理器/ apt-get升级安装任何更新


12

在过去的几周中,我一直在运行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软件中心无法打开。我发现Update Manager和Synaptic Package Manager也无法打开。他们都犯了以下错误:

"installArchives() failed: dpkg: error: reading package info file '/var/lib/dpkg/available': Input/output errorError in function:"

经过大量的搜索之后,我似乎解决了该问题,因为程序包管理器将再次打开。然后,当我尝试从更新管理器下载并安装所有更新时,在本文开头出现了错误。


您下载了哪些文件?来自哪里?更新管理器与它有什么关系?
mikewhatever'5

您可能会尝试安装(然后重新安装)消息中的软件包。如果失败,您可以尝试清除缓存。
约翰·格鲁伯

我仍在努力解决此问题,但我还没有机会。如果有机会,我将尝试此处给出的说明:goo.gl/oOKqG
user64654

为什么选择安装12.04而不是14.04?毕竟,您说过几个星期前就知道了,Trusty已经停工了九个月。
John Scott

Answers:


16

我已经通过这些说明解决了问题。

因此,解决方案如下:

  1. 进入/var/lib/dpkg目录
  2. 备份status文件
  3. 编辑status档案
  4. 搜索给出错误的软件包
  5. 只需从此程序包中删除行即可(但请让其他所有涉及其他程序包的行,即使它们在“替换”或“依赖”字段中包含损坏的程序包也是如此)

    […]

  6. 将更改保存在status文件中

  7. 跑: sudo dpkg --configure -a
  8. 强制重新安装缺少的依赖项(因为现在有一些):

    sudo apt-get -f install
    

    我认为,如果损坏的软件包不依赖于其他任何软件包(可能很少),只需重新安装它即可:

    sudo apt-get install the_package
    
  9. 现在一切正常,可以更新,升级或安装新软件包!

应当指出,我对那里给出的解决方案有一些差异。状态文件不容易编辑(因为它是重要文件,绝不打算对其进行编辑)。在此所做的任何编辑都应谨慎进行,并且在进行任何更改之前应备份文件。

我不得不重复步骤4-8三次(每次使用不同的软件包时,错误都会是相同的)。最终,当所有软件包被删除时,我能够重新安装它们,并解决了我的问题。


您如何找到导致错误的软件包?
Seanny123 '16

@ Seanny123先前试图进行apt-get安装的尝试可能显示该错误。例如,在我返回提示之前,我有“正在读取软件包'manpages-dev'的文件列表:输入/输出错误”。在状态文件中,我搜索了“ Package:manpages-dev”,并删除了下一行“ Package:”这一行。之后,我必须手动执行“ apt-get install manpages-dev”,然后我之前失败的“ apt-get dist-upgrade”完成而没有错误。(感谢user64654!)
彼得·汉森

2

磁盘可能因inode损坏而发生。

使用实时CD运行此命令

sudo fdisk -l

注意磁盘和分区,然后可以对其/dev/dsb1 进行修复:

sudo fsck -y /dev/sdb1

重新启动,然后返回系统

sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade

我通过fsck进行了测试,此后sudo shutdown -rF now一切都还好。
克拉斯
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.