Dpkg: aviso: falta ficheiro de lista de ficheiros

Estou tendo uns problemas no Pop!_Os 20.1.

As Configurações não estão abrindo (já abri um tópico aqui para isso), então, tentei reinstalar via terminal e tive este retorno:

pkg: aviso: falta ficheiro de lista de ficheiros 'apparmor'; assumindo que o pa
cote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros 'gnome-power-manager'; assumin
do que o pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros 'ibus-table'; assumindo que o 
pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros 'lua-expat:amd64'; assumindo q
ue o pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros 'fonts-wine'; assumindo que o 
pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros 'gdisk'; assumindo que o pacot
e não tem actualmente ficheiros instalados

Esta é só uma parte, a lista é IMENSA.

Já tentei:

sudo apt-get clean
sudo apt-get install -f
sudo dpkg --configure -a
sudo apt-get update

Mas não resolveu.

Ao que me parece você removeu os arquivos do dpkg “info¹” que contém as informações dos pacotres instalados, isso só será resolvido reinstalando cada um dos pacotes, é só um aviso que você tem pacotes instalados que não estão listados.
Infelizmente não sei uma maneira mágica de resolver isso como justdb, initdb ou rebuilddb do RPM, a questão da CC teria que ver a mensagem de erro que ela retorna ao tentar executar pelo terminal.

¹ - info consulta as informações em /var/lib/dpkg/info/ aonde tem toda a relação de arquivos instalados pelo pacote para que possa remover futuramente.

1 Curtida

Geralmente a correção gira em torno de reinstalar os pacotes.
Não sei como o Pop lidaria com isso, mas no Debian eu resolveria na força bruta, algo como:

for package in $(apt upgrade 2>&1 | grep "falta ficheiro de lista de ficheiros '" | grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do apt install --reinstall "$package"; done
2 Curtidas

Assim fica mais fácil compreender:

for package in $(apt upgrade 2>&1 |\
                 grep "falta ficheiro de lista de ficheiros '" |\
                 grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do
    apt install --reinstall "$package";
done
3 Curtidas

Basicamente ele percorre os avisos de erros, um a um e reinstala os pacotes…

Pode demorar bastante e pode não ser a solução adequada…

1 Curtida

Você poder querer mais detalhes do mesmo erro:

2 Curtidas

Eu gosto muito do debian, é minha distro de coração, mas estas questões do dpkg já poderiam ter soluções mais práticas, eu sei que isto só ocorre quando o usuário apaga arquivos de /var/lib/dpkg, mas uma solução como initdb do rpm recriaria todo o indice sem problemas.

3 Curtidas

Você roda isso no terminal mesmo?

1 Curtida

Sim, a versão de uma linha.

A outra deve ser salva num arquivo de script…

Antes eu usava uma gambiarra simples, que era remover todos os repositórios e rodar o

apt clean
apt autoclean

Depois bastava reativar os repositórios todos e rodar

apt update.

Resolvia de boas…

Tbm fiz um programinha que reconstruia a base de dados do dpkg, mas era em python…

Quanto eu tiver tempo, verei se posso voltar a trabalhar em algo assim, mas que não seja em python…

Mas nesse estilo daí é possível fazer com o DPKG facilmente…

Tem várias maneiras.

seria algo como

apt download dpkg
apt download base-files
dpkg -i base-files*

Depois basta checar a integridade:
dpkg --audit

ou ainda

apt-get check

*** Observação:

por algum bug ou falha, o check só funciona com o apt-get.
No apt não funciona.

Hmmm interessante, mas mesmo assim são vários comandos contra um, initidb inicia um banco de dados, o que normalmente corrige erros simples ou rebuilddb que reconstroi o banco de dados, estou citando estes comandos mas em quase 20 anos, se usei 2 vezes (no meu sistema) foi muito, não baixo nada não rodo nenhum comando além do prório rpm.
Ainda existe o justdb que é uma instalação fake só para corrigir erros de arquivo ou pacote duplicado.

1 Curtida

Sim, de fato.

De qualquer forma, pelo menos no tempo que uso *Unix, e no tempo que uso Debian e Família, nunca precisei de nenhum desses comandos…

É tão raro a necessidade deles que pouquíssimas pessoas sabem da existência…

1 Curtida

O Solus tem uma implementação interessante em relação a isso.

O eopkg pode lidar com a verificação de checksum de cada pacote com o simples comando:

eopkg check

E pode reconstruir a base toda com o comando:

eopkg rebuild-database
ou, o atalho: eopkg rdb

1 Curtida

Normalmente, ter que recuperar a base de dados é por causa de tutoriais que dizem para deletar /var/lib/dpkg/alguma_coisa, isso não vai na raiz do problema e é uma gambiarra que quase sempre dá ruim.

1 Curtida

Sim, de fato.

O grande problema, na maioria das vezes, são tutoriais gambiarrentos…

Outro dia dei de cara com um blog brasileiro, onde o cara ensina a ter o Chromium nativo no Ubuntu 20, sem a gambiarra que a Canonical fez para empurrar o Snap goela abaixo via apt…

A solução?

Usar o PPA da System76, feito para o PopOs…
Beleza, ambos os sistemas são compatíveis…

Mas advinhe?
O PPA do PopOs tem upgrades para vários apliativos do Gnome e, pasme, para o Systemd!

Ai o usuário que não tem muito conhecimento, na ânsia de ter o Chromium, mete o ppa e tem, além do chromium, a inicialização do sistema atualizada para uma versão não natural do sistema!

Imagine a complicação que isso poderia causar no futuro caso o usuário removesse esse PPA?

2 Curtidas

pkg: aviso: falta ficheiro de lista de ficheiros ‘sbsigntool’; assumindo que o pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros ‘libaccountsservice0:amd64’; assumindo que o pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros ‘fonts-tlwg-purisa-ttf’; assumindo que o pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros ‘install-info’; assumindo que o pacote não tem actualmente ficheiros instalados
dpkg: aviso: falta ficheiro de lista de ficheiros ‘sane-utils’; assumindo que o pacote não tem actualmente ficheiros instalados

Bom dia Pessoal,

Estou com os mesmos erros e já tentei de tudo e nada.

Será que existe uma outra maneira?

Ajudem-me por favor…

1 Curtida

Tentou usando o pacote debsums para verificar a integridade dos ficheiros?

Confira que vc tem o pacote debsums instalado antes de rodar o comando.

  1. apt install debsums
  2. apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
1 Curtida

Ah, pra esse caso eu estou assumindo que arquivos foram apagados do sistema raiz, seja por você ou por algum script que tenha rodado com permissões de superusuário.

Se isso não resolver, vc precisa dar mais detalhes do que foi feito antes de chegar nesse ponto. É mais fácil desfazer as alterações que tenham sido feitas, do que inspecionar a integridade do sistema inteiro (que é parte do que o comando anterior faz).

1 Curtida