Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I am trying to install packages on my linux OS using the command apt-get install .... The problem is that I get this error:

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)

Googling the error (even line by line), the solution SEEMS to be "to download and install missing packages to resolve dependencies" as it was point out here. The problem is that when I try to execute sudo apt-get -f install I continue to have the same error again and again. Any suggestion? How can I change the packages if I cannot use apt-get?

like image 816
Leos313 Avatar asked Dec 11 '22 14:12

Leos313


1 Answers

I have solved the problem using the python script:

#!/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() 

After running the script with the command sudo python name_script.py, the problem was solved: it seems that some files were corrupted. The solution was proposed here

like image 135
Leos313 Avatar answered Dec 13 '22 05:12

Leos313