我在尝试更新系统时遇到错误。目前我无法使用 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.
以下是我修复它的方法:
备份 dpkg 状态文件:
cp /var/lib/dpkg/status{,.backup}
编辑
/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。运行
sudo apt-get -f install
以配置未配置的包并(重新)安装缺失的包。这些包缺失是因为我们从文件中删除了它们status
。
¹ 查看如何获取编辑系统配置文件的权限?如何做到这一点。