Que informações eu preciso para resolver um problema de dependência do APT?

4

Eu já vi várias vezes pessoas com dependências não satisfeitas, que o apt-get não diz diretamente qual é o problema, como este:

The following packages have unmet dependencies:
 libgl1-mesa-dri:i386 : Depends: libdrm-intel1:i386 (>= 2.4.38) but it is not going to be installed
                        Depends: libdrm-nouveau2:i386 (>= 2.4.38) but it is not going to be installed
                        Depends: libdrm-radeon1:i386 (>= 2.4.31) but it is not going to be installed
                        Depends: libdrm2:i386 (>= 2.4.38) but it is not going to be installed
                        Depends: libglapi-mesa:i386 but it is not going to be installed
 libgl1-mesa-glx:i386 : Depends: libdrm2:i386 (>= 2.3.1) but it is not going to be installed
                        Depends: libglapi-mesa:i386 (= 9.2.1-1ubuntu3) but it is not going to be installed
                        Depends: libx11-6:i386 (>= 2:1.4.99.1) but it is not going to be installed
                        Depends: libxcb-dri2-0:i386 (>= 1.8) but it is not going to be installed
                        Depends: libxcb-glx0:i386 (>= 1.8) but it is not going to be installed
                        Depends: libxcb1:i386 but it is not going to be installed
                        Depends: libxdamage1:i386 (>= 1:1.1) but it is not going to be installed
                        Depends: libxext6:i386 but it is not going to be installed
                        Depends: libxfixes3:i386 but it is not going to be installed
                        Depends: libxxf86vm1:i386 but it is not going to be installed

Eu sei que percorrer todas as dependências apt-get install libgl1-mesa-dri:i386 libdrm-intel1:i386 até que eu acerte algo está disponível, mas neste caso será um trabalho doloroso devido a quantidade de pacotes. Existe uma maneira mais fácil de fazer isso?

    
por Braiam 24.03.2014 / 17:06

2 respostas

4

Há várias informações que podem ajudar você:

  1. Inclua o comando completo que causou o problema em primeiro lugar.
  2. Inclua informações sobre os pacotes envolvidos com:

    apt-cache policy name-of-packages-involved
    

    Então, no seu caso, a saída de apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libgl1-mesa-glx:i386 libdrm-nouveau2:i386 é mínima.

  3. A saída de sudo apt-get check e possivelmente sudo dpkg -C também melhorou as chances que você tem.

  4. A saída completa de sudo apt-get update e cat /etc/apt/sources.list{,.d/*.list} pode ajudar em determinadas situações. Caso você esteja tentando instalar um pacote, a saída do comando why-not do aptitude será fácil de descobrir:

    aptitude why-not sysvinit-core
    i A systemd-sysv Breaks sysvinit-core
    

Ao pedir ajuda sobre como resolver esses problemas, sempre inclua o resultado completo de tudo que é solicitado, isso agilizará a solução do problema.

    
por 24.03.2014 / 17:06
7

Uma primeira coisa razoável a ser tentada é perguntar por que ela está fazendo o que está fazendo. Isso pode ser feito com a opção -o Debug::pkgProblemResolver=yes . Por exemplo.

apt-get -o Debug::pkgProblemResolver=yes install libgl1-mesa-dri:i386 libdrm-intel1:i386

Se o apt não for disponibilizado, a abordagem padrão para depurar esses problemas é verificar os números de prioridade das versões disponíveis de cada pacote mencionado na mensagem de erro. Isso geralmente é feito usando apt-cache policy .

Por exemplo, para usar apenas a primeira parte da mensagem de erro, você deve executar

apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libglapi-mesa:i386

Como se procede então depende do que isso mostra. Geralmente também é útil executar apenas

apt-cache policy

, que mostrará todas as fontes de pacotes disponíveis, junto com seus números de prioridade. Essas informações geralmente são especificadas em um ou ambos de /etc/apt/sources.list ou /etc/apt/sources.list.d .

As pessoas que tentam obter ajuda aqui devem postar primeiro os resultados desses comandos em sua pergunta . Isso provavelmente será informação suficiente para determinar o problema.

Exemplos da vida real de problemas:

  1. Dependências não atendidas após o uso de backports repositório : o usuário fontes incluídas para www.deb-multimedia.org , sem fixá-lo em um valor menor prioridade. Nunca inclua fontes de terceiros sem fixá-lo em um menor prioridade. Observe que isso não deve ser necessário para repositórios bem comportados que fornecem pacotes para o padrão release, mas www.deb-multimedia.org é bem conhecido por não jogar legal com o Debian e, em geral, você não deve confiar em fontes desconhecidas. Mais geralmente, se você sabe que um repositório não foi projetado para ser usado com seu sistema, fixe-o em uma prioridade mais baixa. Por exemplo. fontes testing / unstable no Debian
    estável.
  2. Dependências não atendidas : usuário de alguma forma conseguiu instalar uma versão do python que não era o versão padrão em seu sistema. Naturalmente, todo o inferno se soltou. Moral da história, verifique se você está instalando apenas versões de pacotes que estão corretos para o seu sistema. Como acima, apt-cache policy pkgname dirá a você.
  3. O dpkg / apt-get deseja instalar e sobrescrever diferentes pacote : o usuário tentou para instalar pacotes, mesmo que seu banco de dados dpkg subjacente fosse quebrado. Moral, se você vir mensagens vindas de dpkg que algo ou o outro está errado com seus pacotes, neste caso

    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 2 not  
    fully installed or removed. 
    

    seu banco de dados de pacotes tem problemas. Primeiro corrija-os, antes de tentar instalar algo mais. Se apt-get -f install não funcionar, talvez seja necessário operar no nível dpkg para consertar as coisas.

por 24.03.2014 / 17:32

Tags