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

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

过去几周我一直在运行 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

我已经修复了这个问题这些说明

因此解决方案如下:

  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 三次(每次错误都一样,只是包不同)。最后,当所有包都被删除后,我能够重新安装它们,这解决了我的问题。

答案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

相关内容