由于不可恢复的致命错误/ var / lib / dpkg / diversions,无法安装任何软件包

我目前无法安装任何软件包。 我收到以下错误:

dpkg: unrecoverable fatal error, aborting: too-long line or missing newline in `/var/lib/dpkg/diversions 

我尝试了各种方法:

 sudo dpkg --configure -a sudo apt-get clean sudo dpkg-divert --list sudo apt-get check sudo apt-get install -f 

等但都无济于事。 输出显然正常或上面的错误被抛出。

我很难过如何继续,并希望得到任何帮助。 如果需要任何进一步的信息,请询问。


谢谢回复。 我按照建议,现在得到一个不同的错误:

(读取数据库… 50%dpkg:不可恢复的致命错误,中止:包’libksane0’的文件列表文件缺少最终换行符E:子进程/ usr / bin / dpkg返回错误代码(2)

以下是当前转移的链接: http : //paste.ubuntu.com/823500/和旧的破坏: http : //paste.ubuntu.com/823502/

我试图重新安装libksane0但发生了同样的错误。

我知道这已经很晚了,但其他人可能会发现这仍然很有用。 Kali(Debian-Variant)上弹出了不同文件的相同错误消息,我找到的最佳解决方案是从Kali的仍在工作的副本中复制错误文件。 问题解决了。

首先,备份/ var / lib / dpkg / diversions和/ var / lib / dpkg / diversions-old,以防万一。

接下来,尝试在/ var / lib / dpkg / diversions之上复制/ var / lib / dpkg / diversions-old:

 cd /var/lib/dpkg mv diversions diversions.broken cp diversions-old diversions 

现在dpkg应该能够再次工作,但它的转移数据库可能不完整。 重新安装( apt-get install --reinstall packagename )受影响的软件包可能是恢复它的好方法; 问题是:你怎么能确定哪些包受到影响? 比较转移的内容。破坏和转移旧( diff -u diversions-old diversions.broken破坏)是一种方式; 在/var/log/dpkg.log中查找最近更新的软件包列表,并重新安装它们以防万一是另一个。 有一个稍微过时的转移数据库,你也可能没有任何不好的事情发生; 这一切都取决于这些文件到底是什么。