Nota sobre possível duplicado:
AFAIK, isso não é uma duplicata de Como resolver dependências não atendidas após adicionar um PPA? caso contrário, prove-o resolvendo o problema de teste mencionado abaixo usando qualquer resposta a partir daí.
Fundo:
Eu enfrentei esse problema antes Como corrigir o vinho de instalação no Ubuntu 14.04.3LTS 64 bits . Foi resolvido pela revisão manual / humana de todas as dependências recursivas do pacote de destino ( wine
).
Reproduza o problema (caso de teste):
Vamos criar a mesma situação silenciosamente simplificada com apenas 1 pacote de problemas.
- Instale o novo Ubuntu 14.04 no VirtualBox.
- Abra
software-properties-gtk
e ative obackports
repositório. Obter a última lista de pacotes
sudo apt-get update
Execute
apt-get -s install wine
para confirmar quewine
pode ser instalado.Instale o pacote problemático a
libcgmanager0
partir de backports$ apt-cache policy libcgmanager0 libcgmanager0: Installed: 0.24-0ubuntu5 Candidate: 0.24-0ubuntu7.5 Version table: 0.39-2ubuntu2~ubuntu14.04.1 0 100 http://dz.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages 0.24-0ubuntu7.5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 0.24-0ubuntu7.1 0 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages *** 0.24-0ubuntu5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 100 /var/lib/dpkg/status
Forçar
apt
a instalação dalibcgmanager0
versão0.39-2ubuntu2~ubuntu14.04.1
sudo apt-get install libcgmanager0=0.39-2ubuntu2~ubuntu14.04.1
Agora, acabamos na mesma situação do usuário a partir da pergunta mencionada em segundo plano, a instalação do wine falha com dependência não atendida, mostrando apenas os pacotes de dependência de primeiro nível.
apt-get -s install wine
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine : Depends: wine1.6 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine1.6 : Depends: wine1.6-i386 (= 1:1.6.2-0ubuntu4) E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6-i386
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine1.6-i386:i386 : Depends: libglu1-mesa:i386 but it is not going to be installed or libglu1:i386 Depends: libgphoto2-6:i386 (>= 2.5.2) but it is not going to be installed Depends: libgphoto2-port10:i386 (>= 2.5.2) but it is not going to be installed Recommends: libsane:i386 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
Não é prático seguir dependências apt-get install
uma a uma.
Solução ideal:
A verdadeira questão aqui
apt
Não foi possível instalar alibcgmanager0:i386
versão0.39-2ubuntu2~ubuntu14.04.1
porque o repositório de backports tem uma prioridade mais baixa100
menos que a versão0.24-0ubuntu7.5
doupdates
repositório com500
apt
não foi possível instalar alibcgmanager0:i386
versão0.24-0ubuntu7.5
porquelibcgmanager0:amd64
está instalada com uma versão diferente0.39-2ubuntu2~ubuntu14.04.1
A solução mais rápida é forçar a instalação da mesma versão i386 dos backports
sudo apt-get install libcgmanager0:i386=0.39-2ubuntu2~ubuntu14.04.1
ou faça o downgrade (amd64) para qualquer versão dos repositórios regulares
sudo apt-get install libcgmanager0=0.24-0ubuntu7.5
Maneiras / ferramentas que tentei:
- Desabilitar PPAs não tem relação com o problema.
- Usando
aptitude
no modo interativo, traz apenas soluções com muitas remoções ( > 200 !!! ). - Use
apt-get install
manualmente seguindo a árvore de dependência. Não é prático, pois as dependências de primeiro e segundo nível não geraram mensagens significativas sobre o conflito. debfoster
pode gerar as dependências recursivas, mas apenas para o pacote já instalado. No entanto,wine
ainda não está instalado.
Tópico / Meus interesses:
Digamos que eu queira instalar o wine sem conhecer o problema do libcgmanager0
pacote (ou exatamente o libcgmanager0:amd64=0.39-2ubuntu2~ubuntu14.04.1
que já está instalado).
Estou procurando um método de depuração ou uma maneira de saber o nome do pacote problemático e entender rapidamente o que estava acontecendo.
Como depurar problemas de dependências não atendidas em geral?
Pode haver algumas novas opções em
dpkg
/apt
/aptitude
que rastreiam o resolvedor de dependência interno. Isso pode mostrarlibcgmanager0
em sua saída.Se não houver resposta canônica para isso, alguém poderia me mostrar uma maneira melhor de gerar a lista de dependências recursivas ou simular o resolvedor de dependências com mais detalhes que podem ajudar a resolver o problema?
Por que todas as dependências? Porque eu quero verificar a saída dos comandos abaixo para todos os pacotes de uma só vez.
apt-cache policy <all-dependencies>
apt-get -s install <all-dependencies>
fonte
backports
versão?libcgmanager
, mas com uma dependência? Você mencionou listar recursivamente dependências. Você já tentouapt-rdepends
?wine
(ou outro pacote afetado) com-o Debug::pkgProblemResolver=yes
?Respostas:
Créditos e agradecimentos vão para @muru .
Eu estava procurando qualquer opção de comando ou depuração que possa me mostrar o nome do pacote de problemas (
libcgmanager0
neste caso de teste).apt-get -s -o Debug::pkgProblemResolver=yes install wine
Tem uma saída detalhada, silenciosa, difícil de entender. Tudo bem, se eu me familiarizar com isso.
echo q | aptitude -s install wine
Saída mínima, mas aviso claro sobre o conflito.
Outro ponto que eu procurava é minimizar a saída solicitada do OP. Em vez disso, solicite
apt-cache policy
apenas dependências de 1º / 2º nível. Eu solicitaria todas as dependências recursivas de uma só vez.apt-rdepends wine 2>/dev/null | grep "^[a-zA-Z]" | sort
Esteja ciente de que
apt-rdepends
está emulandoapt-cache
para que seu resultado possa ser diferente dedebfoster
. Outro ponto, ambas as ferramentas não distinguem entre arch (i386 ou amd64), apenas mostram nomes.Como o link acima pode ser removido posteriormente, eis a saída completa de todos os comandos acima.
fonte