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) 

好的,我环顾了一些并找到了解决方案:这是在这篇文章中: 无法通过更新管理器/ apt-get升级安装任何更新

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

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

我的系统又重新启动了!

这是我从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: 和下一个空行删除行之间的所有部分。 您可以在括号\(…\)之间放置任何有效的包名称,并使用\|分隔它们 ,并逃避点( .\. )。 选项-i.backup将文件编辑到位,并创建一个后缀为.backup的备份文件(因此,如果使用variant,则可以跳过步骤1),而不是将结果写入stdout。

  3. 运行sudo apt-get -f install来配置未配置的软件包并(重新)安装缺少的软件包。 由于我们从status文件中删除了包,因此丢失了包。

¹请参阅如何获得编辑系统配置文件的权限? 为了那个。