Muitos arquivos em / var / lib / dpkg / info / corrupted; como recuperar

4

Quando executo sudo apt-get (anything) , invariavelmente recebo este erro:

dpkg: unrecoverable fatal error, aborting:
 files list file for package 'thunderbird-gnome-support' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

Depois de pesquisar no Google, descubro que isso acontece porque /var/lib/dpkg/info/thunderbird-gnome-support.list está corrompido. Eu cat desse arquivo, e certamente é corrupto - deve ser um arquivo de texto simples contendo uma lista de caminhos de arquivos absolutos, mas é um arquivo binário.

Agora eu inspeciono os outros arquivos no mesmo diretório, e parece que muitos deles estão corrompidos da mesma maneira. Isso indica que algo deu errado no meu sistema de arquivos, que causou a corrupção de muitos arquivos. Infelizmente, isso afetou os arquivos do sistema.

Como posso me recuperar disso?

Mais detalhes:

Antes disso, instalei uma atualização de rotina quando o Ubuntu me solicitou. Era um novo kernel do Linux e alguns cabeçalhos de arquivos de sistema.

Depois de reiniciar, estas foram minhas especificações:

Especificações do SO:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:    13.10
Codename:   saucy
$ uname -a
Linux brendang-linux 3.11.0-24-generic #41-Ubuntu SMP Mon Jun 9 20:36:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Imediatamente após a reinicialização pela primeira vez, todo o sistema de arquivos pareceu estar montado como somente leitura (o que não era o caso anteriormente). Posteriormente tive que reiniciar várias vezes antes que o sistema funcionasse. Eu fiz touch /forcefsck entre eles para garantir que fsck seja executado e não tenho certeza do que mais precisa ser feito.

    
por bguiz 02.07.2014 / 02:45

3 respostas

1

No meu caso eu tenho muitos arquivos * .list corrompidos. Se você fizer

file /var/lib/dpkg/info/<package_name>.list

normalmente você deve receber:

/var/lib/dpkg/info/<package_name>.list: ASCII text

mas se os arquivos da sua lista estiverem corrompidos, você verá:

/var/lib/dpkg/info/<package_name>.list: data

Eu fiz dois scripts para corrigir esse problema.

O primeiro script verifica isso e renomeia cada arquivo .list corrompido para * .list.broken

move_broken_list_files.sh

O segundo ciclo de script para cada arquivo * .list.broken e forçar a reinstalação do pacote.

install_missing_list.sh

algumas vezes a instalação falha devido a problemas com gatilhos:

fgets gave an empty string from '/var/lib/dpkg/info/libnih1:amd64.triggers'

Nesse caso, você precisa mover / renomear esse arquivo como:

mv /var/lib/dpkg/info/libnih1:amd64.triggers /var/lib/dpkg/info/libnih1:amd64.triggers.broken

Espero que isso ajude alguém a enfrentar a mesma bagunça.

    
por Zen 29.05.2018 / 15:58
0

Eu resolvi isso da seguinte forma:

  • exclua o arquivo incorreto (no caso do OP /var/lib/dpkg/info/thunderbird-gnome-support.list
  • reinstale o pacote incorreto usando apt-get install --reinstall thunderbird-gnome-support

Isso recriou a lista de arquivos excluídos também.

É claro que isso pode ser complicado se muitos arquivos estiverem corrompidos, mas no meu caso era apenas um único arquivo e a solução foi bem fácil neste caso.

    
por Stefan Winkler 20.06.2016 / 20:09
0

Faça o backup da sua lista danificada (você pode mover todos os arquivos .list)

mkdir /tmp/damaged && mv /var/lib/dpkg/info/*.list /tmp/damaged

Depois, você pode instalar seu novo pacote

apt install thunderbird-gnome-support
    
por user2459835 07.05.2018 / 22:12