Impossível executar qualquer comando do apt-get

2

Este é um problema estranho e não consigo encontrar uma solução direta.

Eu corri sudo apt-get update && sudo apt-get upgrade -y (eu nunca o executei nesta máquina, mas é o servidor Ubuntu 12.04 como todos os outros).

Ele passa pelas atualizações e começa a meio caminho da atualização, então recebo esse erro

(Reading database ... 80%dpkg: unrecoverable fatal error, aborting:
 files list file for package 'mysql-common' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

Agora estou recebendo este mesmo erro quando tento executar qualquer comando do apt-get.

Eu tentei:

apt-get clean
apt-get autoremove
apt-get install -f mysql-common
apt-get install --reinstall mysql-common

E talvez outros que eu não consiga pensar agora.

Na maioria das vezes, nem sempre, e eu posso lembrar exatamente em quais comandos isso acontece (eu tenho hackeado nisso há algum tempo), ele termina com esse erro. Ainda não consigo atualizar.

Alguma idéia?

Editar

A resposta do Rehatcc levou-me a verificar o mysql-common.files pelo erro files list file for package 'mysql-common' is missing final newline

O arquivo é apenas texto lixo.

Isso é como um arquivo de modelo genérico em todos os sistemas? Posso apenas colar o texto de outro sistema?

    
por dan08 26.09.2013 / 22:22

2 respostas

5

Vá para:

cd /var/lib/dpkg/info

Digite

ls -l mysql*

Se um arquivo aparecer como "mysql-common.list" ou "mysql-common.md5sums" ou qualquer coisa, faça o seguinte:

sudo mv ./mysql-common.list ~/mysql-common.list

e se isso existir

sudo mv ./mysql-common.md5sum ~/mysql-common.md5sum

Reinicie o sistema. Então deixe-nos saber qual é o seu status depois (não trabalhando ... trabalhando ... semi trabalhando ...)

Nota: Se eles estiverem nesse diretório, abra-os e veja se há uma linha em branco no final ou caracteres ocultos etc. ( cat ./mysql-common.md5sum ). Se você não conseguir dizer se há caracteres ocultos nesses arquivos, faça isso (isso remove todas as letras, números e barras que estão nesses arquivos):

cat ./mysql-common.list | egrep -v [[:alpha:]]

Qualquer coisa que apareça depois disso, exceto /. ou / .. é a sua linha de problemas.

    
por RedHatcc 26.09.2013 / 22:33
1

Recentemente tive o mesmo problema com um pacote diferente (linux-libc-dev).

Aqui está a solução que funcionou para mim (parcialmente baseada na resposta da RedHatcc):

  • Verifique se o arquivo da lista é inválido

    cd /var/lib/dpkg/info
    cat linux-libc-dev\:armhf.list' (insert your package name here!)
    

    Um arquivo inválido aparecerá vazio ou conterá caracteres não alfanuméricos.

    Uma lista de pacotes válida incluirá caminhos de texto simples como este:

    /.
    /usr
    /usr/include
    /usr/include/sound
    /usr/include/sound/asequencer.h
    /usr/include/sound/asound.h
    /usr/include/sound/sfnt_info.h
    
  • Exclua a lista de pacotes inválidos

    sudo rm linux-libc-dev\:armhf.list (insira o nome do seu pacote aqui!)

  • Force o APT a reinstalar o pacote, recriando a lista de pacotes excluídos

    sudo apt-get install linux-libc-dev --reinstall (insira o nome do seu pacote aqui!)

  • Verifique se o arquivo da lista é válido

    Uma lista de pacotes válida incluirá caminhos de texto simples como este:

    /.
    /usr
    /usr/include
    /usr/include/sound
    /usr/include/sound/asequencer.h
    /usr/include/sound/asound.h
    /usr/include/sound/sfnt_info.h
    

    Um arquivo inválido aparecerá vazio ou conterá caracteres não alfanuméricos.

por GG Crew 12.03.2016 / 09:46