dpkg 不会更新 - 指示器会话中的输入/输出错误

dpkg 不会更新 - 指示器会话中的输入/输出错误

我在尝试更新系统时遇到错误。目前我无法使用 apt-get 安装/删除或更新任何内容...

这是我运行 apt-get update 时得到的错误

dpkg: unrecoverable fatal error, aborting:
 reading files list for package 'indicator-session': Input/output error
E: Sub-process /usr/bin/dpkg returned an error code (2)

答案1

好的,我进一步查看并找到了解决方案:它位于这篇文章中: 无法通过更新管理器/apt-get upgrade 安装任何更新

此页面的答案中有一个链接:http://ubuntuforums.org/archive/index.php/t-1232143.html

它归结为编辑 /var/lib/dpkg/status 文件并删除与损坏包相关的所有内容。

我的系统已恢复正常运行!

答案2

以下是我得到的输出apt-get

dpkg: warning: files list file for package `libecryptfs0' missing, assuming package has no files currently installed.
dpkg: warning: files list file for package `libplexus-containers1.5-java' missing, assuming package has no files currently installed.
dpkg: warning: files list file for package `apport' missing, assuming package has no files currently installed.

以下是我修复它的方法:

  1. 备份 dpkg 状态文件:

    cp /var/lib/dpkg/status{,.backup}
    
  2. 编辑/var/lib/dpkg/status文件¹并删除打印警告的软件包部分apt-get。确保删除有关这些软件包的整个部分,即从该行开始Package: libecryptfs0到第一个空白行。

    或者,您可以使用它sed来为您完成工作:

    sed -i.backup -e '/^Package: \(libecryptfs0\|libplexus-containers1\.5-java\|apport\)$/,/^$/d' /var/lib/dpkg/status
    

    此命令删除 和 之间的所有部分,包括 和 之间的行Package: <PACKAGE_NAME>以及下一个空行。您可以在括号 之间放置任何有效的软件包名称\(…\),用 分隔它们\|,然后转义点 ( .\.)。该选项-i.backup会就地编辑文件并创建一个以 为后缀的备份文件.backup(因此,如果您使用变体,则可以跳过步骤 1),而不是将结果写入 stdout。

  3. 运行sudo apt-get -f install以配置未配置的包并(重新)安装缺失的包。这些包缺失是因为我们从文件中删除了它们status

¹ 查看如何获取编辑系统配置文件的权限?如何做到这一点。

相关内容