Os gerenciadores de pacotes do Linux, como Apt e DNF, são extremamente poderosos e intuitivos, mas isso não significa que as coisas não possam dar errado. Ocasionalmente, a instalação de um pacote dá errado e você precisa juntar as peças. Os gerenciadores de pacotes têm a habilidade de consertar pacotes quebrados e pular atualizações quebradas para fazer seu sistema funcionar novamente e evitar problemas no futuro. Este artigo aborda como consertar pacotes corrompidos no Linux.
Essas dicas e truques devem ajudá-lo a se desvencilhar na maioria dos casos. Eles são todos bastante universais, mas cada situação é diferente, então tenha isso em mente ao tentar depurar sua própria situação.
Reparando Pacotes Quebrados no Ubuntu / Mint / Debian
O apt possui alguns sinalizadores que você pode usar para consertar dependências ausentes ou pacotes que quebraram por uma razão ou outra durante a instalação. Um uso comum aqui seria instalar um .deb de terceiros e descobrir que ele possui dependências que você não conhece. Essas dependências provavelmente não serão puxadas por conta própria, e dpkg
vai reclamar que o pacote está faltando neles. Em qualquer caso, você pode tentar os seguintes passos.
Primeiro, execute uma atualização para certificar-se de que não haja versões mais recentes dos pacotes necessários.
sudo apt --fix-missing update
Em seguida, você pode tentar forçar o Apt a procurar e corrigir quaisquer dependências ausentes ou pacotes corrompidos ao tentar instalar o pacote incorreto novamente. Isso realmente instalará todas as dependências ausentes e reparará as instalações existentes.
sudo apt install -f
Outro lugar onde podem surgir erros nas instalações de pacotes é o processo de configuração. Nos bastidores, o dpkg está cuidando desta parte, não do Apt, então seria lógico que quando um pacote falha durante a configuração, o dpkg é a ferramenta a ser usada para consertá-lo.

Comece tentando forçar o dpkg a reconfigurar quaisquer pacotes quebrados ou parcialmente configurados.
sudo dpkg --configure -a
Se isso não resolver o problema, você pode adotar uma abordagem mais contundente. Comece listando todos os pacotes marcados pelo dpkg como requerendo uma reinstalação.
sudo dpkg -l | grep ^..r
Você deve ver o (s) pacote (s) problemático (s) lá. Contanto que não haja nada que não pareça pertencer a esse local, você pode forçar a remoção dos pacotes quebrados.
sudo dpkg --remove --force-remove-reinstreq [package name]
Quando o dpkg estiver pronto, tente limpar com o Apt.
sudo apt clean sudo apt update
Com alguma sorte, isso o levará de volta ao ponto de partida. Ele não vai te dar os pacotes quebrados que você tentou instalar, mas pelo menos o Apt estará funcional novamente, e você pode voltar a usá-lo para tentar instalar o pacote e suas dependências.
Bloqueio DPKG Permanente
Há um problema menos comum com os bloqueios do dpkg impedindo você de fazer qualquer coisa. Cada vez que você tenta usar Apt ou dpkg, obtém um erro dizendo que outro aplicativo já é … quando não está.
Na verdade, é fácil deletar o arquivo de bloqueio impedindo que você use o Apt e volte a fazer o que você precisa. Às vezes, esses arquivos de bloqueio permanecem no local após um erro de instalação ou queda de energia, prejudicando o processo e evitando que o arquivo seja removido automaticamente. Nesse caso, você precisará fazer isso sozinho.
sudo rm /var/lib/apt/lists/lock
Para uma boa medida, exclua o bloqueio no cache.
sudo rm /var/cache/apt/archives/lock
Reparando Pacotes Quebrados no Fedora / CentOS / RHEL
Consertar pacotes quebrados no Fedora / CentOS / RHEL é menos comum, já que yum e dnf fazem um ótimo trabalho para garantir que os pacotes sejam instalados corretamente. No entanto, às vezes as coisas se confundem no uso do pacote. O comando para fazer isso em sistemas baseados em rpm é:
sudo rpm -Va

O -V
opção é para verificar, o que significa que irá percorrer e comparar as informações dos arquivos instalados com as informações armazenadas no rpm
base de dados. Isso é um pouco inútil, pois geralmente fornece uma longa lista de arquivos, mas pode fornecer por onde começar se você estiver tendo problemas com um determinado aplicativo. Você pode executar um dnf reinstall
em qualquer pacote que você veja nessa lista que possa estar causando problemas.
sudo dnf --refresh reinstall PACKAGE_NAME
Isso definirá todos os metadados como expirados, de modo que rastreará todos os repositórios que você habilitou e procurará por uma nova versão desse pacote. Se você descobrir que há dependências quebradas com esse pacote, o DNF provavelmente reclamará e pedirá que você use o --skip-broken
bandeira. Isso também pode significar que você não tem um repositório específico habilitado para puxar uma dependência, então você pode ter que fazer alguma pesquisa lá.
Reparando Pacotes Quebrados no Arco
Embora o gerenciador de pacotes do Arch tenha muitas semelhanças com o do Debian, é uma besta totalmente diferente. A primeira etapa para diagnosticar seu problema é verificar se os repositórios estão atualizados e tentar uma atualização completa:
sudo pacman -Syu
Se suas tentativas de instalar o pacote ou de fazer uma atualização do sistema ainda estiverem fracassando, temos que isolar a causa de acordo com o que o terminal disse a você:
“Pacote inválido ou corrompido”
Fazer alterações no “pacman.conf” de qualquer maneira pode causar problemas que causam pacman
para rotular incorretamente os pacotes como corrompidos. O culpado mais provável aqui é um arquivo parcial (“.part”) no cache do gerenciador de pacotes, e sua solução é removê-lo:
sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete
Sempre há uma chance de que o pacote que você está tentando instalar esteja realmente corrompido e não forneça metadados válidos para o Arch. Nesse caso, você terá que esperar que o mantenedor do pacote o atualize. Se o pacote estiver instalado em seu sistema e causando problemas durante uma atualização, remova-o com:
sudo pacman -Rns [package name]
“Incapaz de bloquear o banco de dados”
Como o apt do Debian, o gerenciador de pacotes do Arch cria um arquivo de bloqueio durante as operações. Se você experimentou uma queda de energia ou pacman
passou por uma interrupção difícil da qual não foi possível remover o bloqueio, é muito provável que deixe um arquivo de bloqueio.
Primeiro, descubra se algum processo em seu computador ainda está usando o arquivo:
sudo fuser /var/lib/pacman/db.lck

Na imagem acima, um processo com ID 121497 está usando o bloqueio de arquivo. Se você está curioso sobre o processo e deseja mais informações, use ps
:
ps -p [PID#]

No meu caso, outra instância do pacman possui o arquivo de bloqueio. A maneira mais segura de remover o bloqueio é primeiro encerrar esse processo:
sudo kill [PID#]
Agora que o processo está morto, remova o arquivo de bloqueio:
sudo rm /var/lib/pacman/db.lck
Você está pronto para ir agora!
“Arquivos conflitantes / arquivo existente no sistema de arquivos”
Isso acontece durante as atualizações onde pacman
detecta um conflito. Antes de consertar qualquer coisa, preste atenção ao caminho para o arquivo do qual o gerenciador de pacotes está reclamando.
A primeira coisa que precisamos descobrir é quem é o proprietário do arquivo:
pacman -Qo [path to the file]
Se for propriedade de um usuário e não de outro pacote, basta removê-lo:
sudo rm [path to the file]
Se ele pertence a outro pacote, a coisa mais segura que você pode fazer é esperar que o mantenedor do pacote conserte o conflito por conta própria. Às vezes, isso não é uma opção, e você quer que as coisas sejam feitas agora.
A maneira mais simples de fazer isso é usar o --overwrite
bandeira em pacman
. Só saiba que isso é geralmente inseguro e pode fazer com que alguns aplicativos não funcionem corretamente em seu sistema. Eu sugiro fazer backups antes de executar isso.
O --overwrite
flag permite que o gerenciador de pacotes do Arch ignore as regras de propriedade para um arquivo em particular e apenas role pela atualização. Exemplo:
pacman -Syu --overwrite [file name]
Se o comando acima não funcionar, substitua o nome do arquivo pelo seu caminho absoluto. Alguns usuários relataram que remover a barra inicial (“/”) na frente do caminho faz o comando funcionar quando está sendo teimoso.
perguntas frequentes
1. Posso aplicar as correções de arco com um auxiliar AUR?
Geralmente sim. Substitua “pacman” pelo seu auxiliar AUR nos comandos deste guia. Exemplo:
yay -Qo /path/to/file
2. Estas instruções são seguras?
Na maior parte, todas as instruções aqui são tão seguras quanto qualquer outra operação de gerenciamento de pacotes. A principal exceção é quando você está removendo arquivos de bloqueio. Se você tiver uma maneira de fazer isso, é sempre importante eliminar quaisquer processos que possam estar usando esses arquivos antes de removê-los. Fique atento ao que seu sistema está fazendo. Você pode ter esquecido uma instância do apt ou pacman em execução em algum lugar!
A melhor prática seria sempre fazer backup do sistema antes de qualquer atualização.
3. O que devo fazer se interromper uma atualização?
Quebrando um processo de atualização pressionando Ctrl + C , encerrar o processo do gerenciador de pacotes ou fechar o terminal prematuramente resultará em algum nível de corrupção em seu banco de dados de pacotes que pode complicar as coisas para você quando tentar instalar outra coisa. Para corrigir isso, limpe o cache e repita a atualização.
No Debian / Ubuntu / Mint / Pop! _OS / etc .:
sudo apt-get clean
No Fedora / CentOS / RHEL:
sudo dnf clean all
No Arco:
sudo pacman -Scc
Empacotando
Esperançosamente, uma dessas correções funcionou para você e você voltou a trabalhar em seu sistema Linux normalmente. Lembre-se de que a melhor maneira de lidar com uma situação totalmente descontrolada é tentar voltar ao que era antes. Não tente avançar e adicionar mais coisas para resolver uma quebra adicionando mais coisas, a menos que você saiba exatamente o que está fazendo. Provavelmente, você acabará com uma confusão emaranhada de coisas quebradas que serão mais difíceis de resolver.
Você também pode precisar limpar seu sistema Linux para se livrar de pacotes desnecessários e corrompidos. Se a causa for um PC antigo incapaz de suportar o software mais recente, você também pode fazer uso destas três maneiras de fazer um bom uso do seu PC antigo.