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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Ivan de Gusmão Apolonio