dpkg:unrecoverable 致命错误(包 'java-common' 的文件列表文件缺少最后的换行符)

dpkg:unrecoverable fatal error (files list file for package 'java-common' is missing final newline)

我正在尝试使用命令 apt-get install ... 在我的 linux OS 上安装软件包。 问题是我得到这个错误:

Selecting previously unselected package liberror-perl.
dpkg: unrecoverable fatal error, aborting:
 files list file for package 'java-common' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

谷歌搜索错误(甚至逐行搜索),解决方案似乎是 "to download and install missing packages to resolve dependencies",因为它被指出 here。问题是,当我尝试执行 sudo apt-get -f install 时,我会一次又一次地遇到同样的错误。有什么建议吗?如果无法使用 apt-get,如何更改软件包?

我已经使用 python 脚本解决了问题:

#!/usr/bin/python


# 8th November, 2009
# update manager failed, giving me the error:
# 'files list file for package 'xxx' is missing final newline' for every package.
# some Googling revealed that this problem was due to corrupt files(s) in /var/lib/dpkg/info/
# looping though those files revealed that some did not have a final new line
# this script will resolve that problem by appending a newline to all files that are missing it
# NOTE: you will need to run this script as root, e.g. sudo python newline_fixer.py

import os

dpkg_path = '/var/lib/dpkg/info/'
paths = os.listdir(dpkg_path)
for path in paths:
    path = dpkg_path + path
    f = open(path, 'a+')
    data = f.read()
    if len(data) > 1 and data[-1:] != '\n':
        f.write('\n')
        print 'added newline character to:', path
    f.close() 

在运行命令脚本sudo python name_script.py之后,问题解决了:似乎有些文件被破坏了。提出了解决方案 here

您必须删除丢失的文件

 sudo rm /var/lib/dpkg/info/java-common.list 

现在您可以重新安装这个

 sudo apt-get install java-common --reinstall 

如果出现以下错误

dpkg:无法恢复的致命错误,正在中止: 包 'java-common' 的文件列表文件缺少最后的换行符 E: 子进程 /usr/bin/dpkg 返回错误代码 (2)

注意:java-common是列表名

使用以下命令解决此问题(修改 java-common 与您的列表名称)

sudo rm /var/lib/dpkg/info/java-common.list

sudo apt-get install java-common --reinstall

sudo dpkg --configure -a 须藤更新 sudo apt 升级

  • sudo dpkg --configure -a
  • sudo apt-get -f 安装 sudo apt-get clean
  • sudo apt-get update && sudo apt-get upgrade

它解决了我的问题。