De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Pacotes duplicados RPM e o apt
Colaboração: Ivan de Gusmão Apolonio
Data de Publicação: 08 de Novembro de 2001
A partir da versão 6 do Conectiva Linux os usuários tiveram uma
facilidade nunca vista antes para atualização dos pacotes do sistema:
o apt. Criado originalmente para o Debian e posteriormente portado para o
Conectiva Linux, o apt é um software que checa atualizações de pacotes e,
caso haja, ele baixa e instala os pacotes novos. Porém, às vezes alguns
pacotes estão com problemas e o apt ainda não sabe como lidar com esses
problemas e por isso temos que resolvê-los na mão mesmo.
Quando se instala e desinstala um pacote RPM, ele executa um script, o qual
serve para criar/remover diretórios, checar dependências, etc. Um problema que
já tive é que em alguns pacotes este script está com algum problema de modo que
ele não consegue desinstalar o pacote e conseqüentemente o apt não consegue
atualizá-lo. Na verdade o apt instala o pacote novo sem excluir o velho e ficam
ambos instalados, fica uma bagunça!!! Aí, quando a gente dá um apt-upgrade ele
dá uma mensagem como esta:
# apt-get upgrade
Processing File Dependencies... Done
Reading Package Lists... Error!
E: There are two or more versions of the package 'mtools' installed in your
system, which is a situation APT can't handle cleanly at the moment.
Please do one of the following:
1) Remove the older packages, leaving only one version installed; or
2) If you do want to have multiple versions of that package, add the package
names to the RPM::AllowedDupPkgs option.
E: Error occured while processing mtools (UsePackage2)
E: Problem with MergeList /var/lib/rpm/Packages
E: The package lists or status file could not be parsed or opened.
Neste exemplo nós temos 2 pacotes mtools instalados e por isso o apt não
consegue fazer mais nada! A solução é desinstalar ambos os pacotes repetidos
sem executar os scripts do rpm, ou seja, removê-los apenas do banco de dados do
rpm e depois de removidos instalar apenas o pacote atualizado. O comando para
desinstalar é o seguinte:
rpm -e --nodeps --allmatches --justdb mtools
onde:
-e remove o pacote
— nodeps desinstala o pacote mesmo que isso quebre dependências de outros
pacotes
— allmatches desinstala todos os pacotes que tiverem o mesmo nome (no nosso
caso são 2 mtools)
— justdb apenas remove o pacote do banco de dados RPM mas deixa os arquivos no
lugar
Uma vez desinstalados os pacotes duplicados temos que instalar o novo. O apt
guarda os pacotes que ele baixa no diretório /var/cache/apt/archives. Basta
entar lá e instalar o mtools.
rpm -Uvh mtools-versão.i386
Pronto! Agora já se pode usar novamente o apt e continuar mantendo seu
sistema atualizado.