apt retorna “E: dependências não atendidas” quando tento instalar um pacote, como posso diagnosticar o problema e descobrir por que ele ocorre?

0

Estou tentando instalar um pacote, mas o gerenciador de pacotes ( apt-get , centro de software, etc.) se recusa a instalá-lo devido a dependências não atendidas.

As minhas tentativas de instalar o pacote estão causando o problema das dependências? Como posso saber qual é o problema?

    
por Braiam 31.03.2014 / 16:39

1 resposta

5

Se você estiver instalando um pacote / programa específico e encontrar um problema de dependência, haverá duas causas:

  • Suas dependências já foram quebradas.
  • Não é possível instalar o pacote que você deseja devido à sua configuração atual.

O primeiro caso é fácil de descobrir. Apenas execute sudo apt-get check . Isso informará qualquer problema com os pacotes já instalados e você saberá como resolvê-los.

sudo apt-get check                          
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libpurple-dev : Depends: libpurple0 (>= 2.10.9) but it is not installed
                 Depends: libpurple0 (< 2.10.9+1~) but it is not installed
 pidgin : Depends: libpurple0 (>= 2.8.0) but it is not installed
 pidgin-whatsapp : Depends: libpurple0 (>= 2.8.0) but it is not installed
E: Unmet dependencies. Try using -f.

Normalmente, se você não instalou nenhum pacote manualmente com dpkg , faltam espelhos, PPA's quebrados ou uma mistura de repositórios de versões diferentes (como Debian e Ubuntu ou Precise e Saucy), isso pode ser corrigido com um simples% código%. Se isso não resolver o problema, talvez seja necessário pedir ajuda para adicionar todos os resultados das operações que você tentou, além da saída de sudo apt-get -f install para todos os pacotes relevantes:

apt-cache policy pidgin-whatsapp pidgin libpurple-dev libpurple0

Agora, se isso resultar limpo e o problema de dependência só acontecer quando você tentar instalar um pacote, talvez seja necessário saber por que o apt está se recusando a instalar o pacote. Isso é cansativo de fazer e seria um obstáculo se você quiser resolver seu problema rapidamente, e cada problema tem sua própria solução. É recomendado nesses casos usando apt-cache policy . Primeiro nós instalamos:

sudo apt-get install aptitude

Agora você perguntará ao aptitude por que não pode instalar o pacote usando:

aptitude why-not package

Ele mostrará uma boa lista dizendo por que o pacote não pode ser instalado. Pode ser um pacote ausente, que depende de um pacote que não está disponível ou de algum outro pacote que tenha conflitos / quebras. Exemplo:

aptitude why-not lsb-core:amd64
i   lsb-security Recommends lsb-core (>= 4.1+Debian12)
i A lsb-core     Conflicts  lsb-core:amd64

Neste caso, instalei o pacote lsb-security, que instalou a versão de 32 bits do lsb-core, e não permiti que eu instale a versão de 64 bits.

    
por Braiam 31.03.2014 / 16:39