it-swarm-pt.tech

Como resolvo dependências não satisfeitas depois de adicionar um PPA?

Ocasionalmente, quando estou instalando coisas, recebo um erro como o seguinte:

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:
 package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Como posso resolver isto?

528
jrg

O APT é um sistema de gerenciamento de pacotes para o Debian e outras distribuições Linux baseadas nele, como o Ubuntu. Na maior parte, o APT é fácil de usar para instalar, remover e atualizar pacotes. Em casos raros, muitas vezes, quando você está misturando dependências de terceiros, há uma chance de que apt-get possa acabar dando a você um erro informando que uma instalação de pacote não pôde ser concluída.

Soluções:

É sempre uma boa idéia fazer backup dos arquivos de configuração, como /etc/apt/sources.list, para que você possa reverter as alterações, se necessário.

  • Se o error mostrar algo parecido com isto:

    <some-package>: Depends: <other-package> (= version) but this-version is to be installed

    Em seguida, certifique-se de que os repositórios restricted e universe estejam ativados. Acertar Alt+F2, digite software-properties-gtk e clique em Enter.

    Na guia Ubuntu Software, ative todos os repositórios.

  • Uma possível causa de dependências não atendidas pode estar corrompida no banco de dados do pacote e/ou alguns pacotes não foram instalados corretamente. Para corrigir esse problema, pressione Alt+Ctrl+T para abrir o terminal e tentar executar um dos seguintes comandos:

    Sudo apt-get clean

    ou,

    Sudo apt-get autoclean

    apt-get clean limpa o repositório local de arquivos de pacotes recuperados (os arquivos .deb). Ele remove tudo, exceto o arquivo de bloqueio de/var/cache/apt/archives/e/var/cache/apt/archives/partial /. apt-get autoclean limpa o repositório local de arquivos de pacotes recuperados, mas ao contrário de apt-get clean, ele apenas remove arquivos de pacotes que não podem mais ser baixados e são inúteis.

  • Uma das correções mais básicas para resolver problemas de dependências é executar:

    Sudo apt-get -f install

    O -f aqui significa "conserto quebrado". Apt tentará corrigir dependências quebradas. Se você instalou manualmente um pacote que tinha dependências não atendidas, apt-get instalará essas dependências, se possível, caso contrário, pode simplesmente remover o pacote que você instalou para resolver o problema.

    Então corra:

    Sudo dpkg --configurar -a

    Em seguida, execute isso novamente:

    Sudo apt-get -f install

    Se a saída é:

    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

    Isso significa que falhou.

  • A próxima solução é executar:

    Sudo apt-get -u dist-upgrade

    Se mostrar algum pacote retido, é melhor eliminá-los. Os pacotes são mantidos devido a conflitos de dependência que apt não pode resolver. Tente este comando para encontrar e reparar os conflitos:

    Sudo apt-get -o Depurar :: pkgProblemResolver = sim dist-upgrade

    Se não puder corrigir os conflitos, sairá com:

    0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

    Exclua os pacotes retidos um por um, executando dist-upgrade a cada vez, até que não haja mais pacotes retidos. Em seguida, reinstale os pacotes necessários. Certifique-se de usar a opção --dry-run, para que você esteja totalmente informado das consequências:

    Sudo apt-get remove --dry-run nome-do-pacote

    Como remover o pacote que você está tentando instalar pode não ser o ideal, você também pode tentar encontrar um repositório que tenha os pacotes necessários para satisfazer as dependências.

Finalmente, se tudo mais falhar, você pode tentar satisfazer as dependências, encontrando e instalando os pacotes necessários, ou instalando-os a partir da fonte e, em seguida, criando pacotes “ deb ” para eles.

Desativar/remover/eliminar os PPAs:

PPAs (Personal Package Archive) são repositórios hospedados em Launchpad . Você pode usar PPAs para instalar ou atualizar pacotes que não estão disponíveis nos repositórios oficiais do Ubuntu.

Uma das causas mais comuns de dependências não atendidas são os PPAs, especialmente quando usados ​​para atualizar o pacote existente nos repositórios do Ubuntu. Para resolver o problema, você tem três opções: desativar, limpar (reverter para o pacote original nos repositórios do Ubuntu) ou remover o PPA.

  • Desativar:

    Desativar um PPA significa que não há mais atualizações para os pacotes instalados a partir desse PPA. Para desativar um PPA: abra Software Center > Edit > Software Sources ou

    Acertar Alt+F2 e execute software-properties-gtk.

    Clique na guia Other Software, você verá que cada PPA tem duas linhas aqui, uma para os pacotes compilados e outra para a fonte, Uncheck ambas as linhas para desabilitar um PPA. Aqui você também pode adicionar e remover PPAs.

  • Purge:

    Purgar um PPA significa fazer um downgrade dos pacotes no PPA selecionado para a versão nos repositórios oficiais do Ubuntu e desabilitar esse PPA. PPA Purge faz exatamente isso. Para instalar o PPA Purge, execute o seguinte comando:

    Sudo apt-get instala ppa-purga

Mas, considerando que a questão apt está quebrada, o comando acima falhará. Então use este comando

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && Sudo dpkg -i ./*.deb

Para usar o PPA Purge:

Sudo ppa-purge ppa: someppa/ppa

Se o comando 'ppa-purge' falhar por algum motivo, não será possível executar o 'ppa-purge' novamente, a menos que você reative o PPA (Para ativar o PPA, siga as mesmas etapas que desabilitar um PPA e Check as duas linhas de um PPA particular para habilitá-lo).

Nota: PPA Purge não remove PPAs ( pode ser no futuro ), Então você terá que remover manualmente o PPA.

  • Remover:

    Se o pacote instalado a partir de um PPA não existir nos repositórios oficiais do Ubuntu, então usar PPA Purge não é recomendado, porque não há nada para ser rebaixado e PPA Purge também não o deletaria. Para remover um PPA e pacotes instalados, execute os seguintes comandos: (Ignore o primeiro comando se não quiser remover os pacotes instalados)

     Sudo apt-get autoremove --purge nome-do-pacote 
     Sudo add-apt-repositório --remove ppa: someppa/ppa 
     Sudo apt-get autoclean 
    

Alternativamente, você pode usar Y PPA Manager para desabilitar/remover/limpar os PPA's (Detalhes no final da resposta).

Medidas preventivas:

Então, como podemos evitar que isso aconteça em primeiro lugar?

  • Mantenha o Ubuntu atualizado. O Ubuntu notifica automaticamente quando as atualizações estão disponíveis, você também pode verificar as atualizações disponíveis clicando em Session Indicator no painel do Unity:

    Ou, clique em Alt+Ctrl+T para abrir o terminal e executar os seguintes comandos:

    Sudo apt-get update 
     Sudo apt-get atualizar

    Update: Sincroniza sua lista de pacotes disponíveis com os servidores nos repositórios de origem. Upgrade: Faz o download e instala qualquer versão mais recente dos pacotes instalados.

  • Se você decidir adicionar outros repositórios ao sources.list, certifique-se de que o repositório funcione (e saiba que funciona) com o Ubuntu. Repositórios que não são projetados para funcionar com sua versão do Ubuntu podem introduzir inconsistências em seu sistema e podem forçá-lo a reinstalar. Além disso, certifique-se de que você realmente precisa adicionar repositórios externos, pois os pacotes de software que você está procurando já podem ter sido introduzidos nos repositórios oficiais! fonte
  • Remova os PPAs duplicados. Y PPA Manager (guia de instalação no final da resposta) pode facilmente digitalizar e remover PPAs duplicados.

    • Acertar Alt+F2 e execute y-ppa-manager para abrir o Y PPA Manager.
    • Uma vez aberto, clique duas vezes ou pressione Enter em Advanced.
    • Na janela resultante, selecione Scan and remove duplicate PPAs e clique em OK.

enter image description here

Conseguindo ajuda:

Ao pedir ajuda no Askubunt ou em qualquer outro fórum de ajuda, você deve incluir a saída dos seguintes comandos em sua pergunta:

  • Saída do erro real:

    Sudo apt-get install nome-do-pacote
  • Isso mostrará sua sources.list:

    cat /etc/apt/sources.list
  • Isto mostrará a lista de PPAs (se houver):

    cat /etc/apt/sources.list.d/*

Fontes adicionais:


Y PPA Manager : O Y PPA Manager é um balcão único para todas as suas necessidades de PPA.

y ppa manager

Aqui estão alguns de seus recursos:

  • pacotes de pesquisa em todos os PPAs do Launchpad
  • listar e baixar pacotes em um PPA
  • adicionar/remover/limpar um PPA
  • fazer backup e restaurar origens PPA
  • remova fontes duplicadas do PPA

Para instalar Y PPA Manager, abra o terminal pressionando Alt+Ctrl+T e execute os seguintes comandos:

 Sudo add-apt-repositório ppa: webupd8team/y-ppa-gerente 
 Sudo apt-get update 
 Sudo apt-get instala y-ppa-manager 

Considerando a questão, apt está quebrado, então use estes comandos

Sudo su

e

32 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_AMD64.deb && dpkg -i ./*.deb
554
Basharat Sialvi

Nota: Todos os comandos pedidos para serem executados devem ser executados no terminal, que pode ser aberto por Ctrl+Alt+T ou procurando por terminal no traço.

Está realmente quebrado?

Tente executar o seguinte comando e tente reinstalar o software que você estava tentando instalar

Sudo apt-get update

Passos Pré-Perfomance

Fazendo backup

Faça o backup dos seguintes arquivos:

  • /etc/apt/sources.list
  • /var/lib/dpkg/status

Para fazer isso, use esses comandos

Sudo cp /etc/apt/sources.list /etc/apt/sources.list.original

e

Sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original

Limpando seu apt-cache

apt mantém um cache de pacotes baixados recentemente para economizar largura de banda quando é necessário instalá-lo. Isso pode ser contraproducente em alguns casos

Agora, para limpá-lo, você tem duas opções

Sudo apt-get clean 

Isso removerá todos os pacotes armazenados em cache pertencentes às pastas /var/cache/apt/archives/ e /var/cache/apt/archives/partial, exceto os arquivos .lock. Isso é recomendado

Sudo apt-get autoclean

Isso verifica as pastas /var/cache/apt/archives/ e /var/cache/apt/archives/partial e verifica se o pacote ainda está nos repositórios e remove aqueles que não estão


Corrigindo Dependências

Usando o modo de correção de falhas do apt

Sudo apt-get -f install

Isso fará com que o apt verifique se há dependências ausentes e corrija-as dos repositórios

Se a saída indicar que nada novo foi instalado ou atualizado, ele falhou.


Verificar se todas as fontes necessárias estão ativadas

Digite gksu software-properties-gtk e você terá esta janela

Certifique-se de que todas as fontes estejam ativadas.

em seguida, vá para a guia Outro software e verifique se os PPAs necessários para o software a ser instalado estão lá e estão habilitados. Além disso, tente desativar alguns PPAs que possam estar tendo pacotes quebrados

agora, execute Sudo apt-get update

Tente instalar o software agora

Selecionando um servidor melhor para baixar

Digite gksu software-properties-gtk e você terá esta janela

Clique no botão Download da caixa suspensa e selecione outro

Clique em Selecionar Melhor Servidor

Executar Sudo apt-get update

Tente instalar o software

além disso, tente usar Sudo apt-get install -f


PPA Purge

Esta é uma ferramenta usada para limpar ppa quebrados/indesejados e suas aplicações junto com ele

Para instalá-lo, execute

Sudo apt-get install ppa-purge

Mas, Considerando que a questão apt está quebrada, o comando acima irá falhar. Então use este comando

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && Sudo dpkg -i ./*.deb

Agora use purga

Sudo ppa-purge ppa:someppa/ppa  

Gerente de Y-PPA

O Y-PPA Manager é um aplicativo gui que ajuda você a gerenciar os PPA's e vários problemas associados a ele.

Para instalá-lo

Sudo add-apt-repository ppa:webupd8team/y-ppa-manager

e

Sudo apt-get update

e

Sudo apt-get install y-ppa-manager

Considerando a questão, apt está quebrado, então use estes comandos

Sudo su

e

32 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_AMD64.deb && dpkg -i ./*.deb

Agora digite y-ppa-manager

Você será presenteado com esta janela

Clique duas vezes em avançado e você terá esta janela

Faça o seguinte Tarefas descritas em preto


Prevenção é melhor que a cura

É melhor prevenir do que procurar por essa pergunta no AskUbuntu: D

Então, aqui estão as diretrizes para mantê-lo seguro

Mantenha seu sistema atualizado

sempre execute o seguinte comando regularmente

Sudo apt-get update&&Sudo apt-get upgrade

ou, você sempre pode usar o Update Manager com este comando

gksu update-manager

Usando apenas PPAs confiáveis

Apenas use PPAs para uso no Ubuntu também, use somente PPAs com fontes confiáveis. De fato, o pacote pode já estar nos repositórios do Ubuntu

Fazendo backup quando as coisas estão boas e restaurando depois

Para isso, você precisa do Y-PPA-Manager. As etapas para instalá-lo são fornecidas acima.

Execute este comando para abrir o Y-PPA-Manager

y-ppa-manager

Você será presenteado com esta janela

Clique duas vezes em avançado e você terá esta janela

Rode isto:

Você será solicitado a salvar um arquivo tar.gz com um diálogo semelhante ao abaixo. Salve-o em outra partição ou em um lugar seguro

Posteriormente, quando precisar restaurá-lo novamente, siga as etapas similares e, quando chegar ao diálogo avançado, clique nele:

Você será solicitado a restaurar do backup anterior que você salvou antes com uma caixa de diálogo semelhante à abaixo


Ainda não funciona?

Erros de dependência de pacote nem sempre são genéricos e dependem do pacote a ser instalado.

Se seguir todas as etapas dadas para corrigir o erro não funcionar para você, você pode sempre perguntar em Ask Ubunt

Aqui estão alguns comandos que você precisa postar a saída de

Sudo apt-get install packagename

e

cat /etc/apt/sources.list

e

cat /etc/apt/sources.list.d/*

(Obrigado a Basharat Sial )

Há também outros arquivos/comandos dos quais você precisa de uma saída que pode ser específica do erro, e os usuários provavelmente irão avisá-lo nos comentários para postar o arquivo/comando.

86
Amith KK

Até o momento, essas respostas estão focadas em como solucionar automaticamente esse problema, principalmente na esperança de que ele se resolva sozinho, mas não focado em entender como investigar dependências. É importante tentar coisas como garantir que suas listas de pacotes estejam atualizadas, para que você precise garantir que uma atualização ou limpeza simples do cache não resolva o problema antes de ir mais fundo. Se tudo nos bastidores está funcionando como deveria, no entanto, é fundamental aprender como entender as dependências. Às vezes, as camadas de dependências podem parecer opressivas, mas o conceito é simples e fundamental para entender como o software é instalado/desinstalado em um sistema Ubuntu.

Eu recomendo altamente aptitude para qualquer um usando um sistema baseado em .deb como o Ubuntu. Sua estrutura em árvore permite que você navegue facilmente por dependências, incluindo pacotes recomendados e sugeridos, bem como visualize conflitos e dependências não atendidas. É uma ferramenta inestimável para quando o apt-get não oferece uma solução simples, e para visualizar dependências em geral. ( Synaptic também está disponível no Ubuntu, mas não acho isso intuitivo.)

O Aptitude também oferece um resolvedor de conflitos que o orientará em todas as combinações possíveis de pacotes instalados/removidos/atualizados/etc para satisfazer todos os requisitos sem conflito ou problema. Isso pode ser bem-sucedido mesmo quando o apt não consegue encontrar uma solução. Como usuário do Ubuntu, normalmente não surgem situações que exigem que você investigue por que esse pacote em particular está sendo instalado, mas é quase inevitável quando você usa o sistema mais.

38
overprescribed

package1: Depende: package2 (> = 1.8) mas 1.7.5-1ubuntu1 deve ser instalado

Explicação da mensagem:

  1. Para que sua instalação seja concluída, package1 precisa de package2.
  2. package2 tem que estar disponível na versão> = 1.8
  3. O gerenciador de pacotes verificou todos os repositórios e encontrou apenas a versão 1.7.5-1ubuntu1 que poderia ser instalada, o que não será feito porque é <1.8

Consertar

Não há uma única resposta certa para esta questão e não há resposta simples.

Existem muitos cenários pelos quais isso pode acontecer e é preciso investigar todas as opções e tentar resolver as condições prévias que levam a esse erro.

Cenário A:

Todos os repositórios aos quais você tem acesso não possuem package2 na versão> = 1.8, então você terá que encontrar um repositório que tenha. Se você não conseguir encontrar um repositório com versões> = 1.8, talvez seja necessário criar e instalar o pacote 2 a partir do código-fonte. E tente instalar o pacote1.

Se você quiser saber como criar um pacote a partir do código-fonte, verifique outras perguntas/respostas ou poste um novo.

Cenário B:

Os repositórios incluem o package2 em uma versão> = 1.8, mas o gerenciador de pacotes ainda deseja instalar uma versão mais antiga (1.7.5).

A razão para isso pode ser que as versões posteriores do pacote2 foram construídas por alguma tecnologia mais recente que não é suportada por outros pacotes que você já instalou.

Isso pode não ser possível para corrigir. Você pode tentar usar apt ou synaptic e procurar por todas as versões do pacote2 que estão disponíveis nos repositórios, e tentar instalar uma versão específica> = 1.8

Se você tiver outros pacotes incompatíveis e fizer isso, você receberá uma lista de mensagens de erro semelhantes para todos os outros pacotes que impedem a instalação de package2> = 1.8.

Neste caso, você tem um problema maior. Você queria instalar o pacote1, que precisa do pacote2 para ser> = 1.8, mas o pacote2 na versão> = 1.8 requer que o pacote3 esteja na versão> = 6.7 e você tenha o pacote3 versão 6.3

O problema é que o gerenciador de pacotes (APT) tenta resolver automaticamente todas essas dependências, se for possível. Quando diz que não é possível (e emite uma mensagem como na pergunta), então você deve confiar nele.

Se você decidir não confiar no gerenciador de pacotes e se tiver certeza de que não terá problemas, tente forçar a instalação das versões específicas necessárias de todos os pacotes, um por um, e espere estar OK.

Cuidado, fazendo isso para pacotes do sistema pode criar sérios problemas. Você pode se proteger do sistema, bloquear serviços críticos, etc.

Cenário C:

Não importa as razões do problema, você sempre pode configurar a compilação manual e criar o pacote necessário e todas as dependências nas versões exatas necessárias da origem. Com essa opção, você pode manter o que construiu em um diretório separado e fora do caminho do sistema para que ele não crie conflitos com o sistema. Esta é provavelmente a solução mais limpa e, às vezes, pode ser mais rápida de se fazer.

Cenário D:

O gerenciador de pacotes tem acesso a informações desatualizadas sobre pacotes e, portanto, não consegue encontrar uma solução. Olhe nas outras respostas.

Cenário E:

Gerenciador de pacotes tem um bug no código de resolução de dependência.

Você tem que investigar que este é realmente o caso e, em seguida, emitir uma solicitação de bug.

...

Cenário Z:

Pode haver outros cenários.

Por exemplo, os mantenedores de pacotes poderiam estar errados e não verificaram se o pacote1 funcionaria mesmo com a versão do pacote2 <1.8 e na especificação eles configuravam dependências erradas.

24
Vangel V. Ajanovski

Esses métodos precisam ser seguidos sempre que você tiver dúvidas sobre Dependências não satisfeitas

Depois de seguir as instruções, tente instalar o software. Pelo menos um desses métodos deve funcionar para você

1. Antes de tentar qualquer novo comando ou adicionar qualquer novo ppa, tente

Limpeza do cache do apt:

Sudo apt-get clean

Limpeza de quaisquer dependências não utilizadas:

Sudo apt-get autoremove

Atualizando o apt-cache

Sudo apt-get update

Isso removerá todo o cache e fará o download de um novo cache. Isso deve ser feito para obter novos pacotes de cache e atualizações mais recentes.

2. Tente Sudo apt-get install -f.

Ele provavelmente dará algumas sugestões sobre a remoção e instalação de pacotes, faça o que parecer razoável.

. Altere o Download Server de Software Sources porque às vezes os arquivos em um servidor estão corrompidos.

enter image description here
enter image description here
enter image description here

4. Isso também acontece se você adicionou um ppa externo para a dependência quebrada. Tente remover esse ppa por

  • digitando Sudo add-apt-repository --remove ppa:someppa/ppa e removendo manualmente os arquivos/bibliotecas instalados pelo ppa

ou

  • purgando um ppa (isso também remove os arquivos instalados)

    Sudo apt-get install ppa-purge   #a one time install 
    Sudo ppa-purge ppa:someppa/ppa  
    

5. Se no 4 não for o seu caso, tente pelo menos remover o pacote que está sendo mostrado como uma dependência quebrada. Em seguida, tente novamente a instalação. Isso é relatado como tendo sido usado por várias pessoas.

6. Sempre adicione a versão estável de um repositório/PPA.

enter image description here

7 Verifique também se você tem todos os repositórios oficiais habilitados (em Software Sources)

enter image description here

Por favor, não habilite o Proposed Updates como eles são destinados a testes/desenvolvedores.

enter image description here


Como dito por doug:

Normalmente, o melhor primeiro passo para resolver isso é identificar a origem de <pkg1> e <pkg2>.

Além disso, não é notado que, em muitos, se não na maioria dos casos, "<qualquer um> deve ser instalado" significa "o que está instalado" e deve ser removido se nada mais funcionar (como no ponto 5).


Vou continuar adicionando mais coisas para encontrar unmet dependencies.

17
Ashu

Minha resposta é semelhante à de Rick acima.

Usando apt-get clean, apt-get autoclean, apt-get autoremove, apt-get upgrade, apt-get update, apt-get -u dist-upgrade, etc. tudo não funcionou para mim.

Eu finalmente resolvi esse problema descendo para a árvore de dependências via apt-get install, ilustrado com um exemplo abaixo. No meu caso, eu queria instalar o libmagickwand-dev:

apt-get install libmagickwand-dev

Eu recebi este erro:

The following packages have unmet dependencies:
 libmagickwand-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libmagickcore-dev (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed

Então, eu corri apt-get install para uma das dependências com falha:

apt-get install libmagickcore-dev

The following packages have unmet dependencies:
 libmagickcore-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libgraphviz-dev but it is not going to be installed

Eu desci mais abaixo na árvore:

apt-get install libgraphviz-dev

com outro erro:

The following packages have unmet dependencies:
 libgraphviz-dev : Depends: libgvc5 (= 2.26.3-10ubuntu1) but it is not going to be installed

Mais uma vez mais abaixo na árvore:

apt-get install libgvc5

Por algum motivo estranho, isso foi bem-sucedido e consegui instalar o pacote original que queria com apt-get install libmagickwand-dev:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libpathplan4
Suggested packages:
  libgd-tools
The following NEW packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libgvc5 libpathplan4
0 upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
Need to get 808 kB of archives.
After this operation, 2,320 kB of additional disk space will be used.
Do you want to continue [Y/n]?
11
Michael Franzl

Excelentes respostas! Mas hoje meu caso parece diferente do seu. Aqui está o meu conselho.

Problema:

Eu não consegui instalar o Apache2 no Ubuntu 10.10.

[email protected]:~$ Sudo apt-get install Apache2

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:

 Apache2 : Depends: Apache2-mpm-worker (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    Apache2-mpm-prefork (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    Apache2-mpm-event (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    Apache2-mpm-itk (= 2.2.16-1ubuntu3) but it is not going to be installed

           Depends: Apache2.2-common (= 2.2.16-1ubuntu3) but it is not going to be installed

E: Broken packages

Solução:

Meu jeito é adicionar o pacote dependido na lista de instalação.

Se o 'Sudo apt-get instalar o Apache2' falhou, tente 'Sudo apt-get instala o Apache2 Apache2.2-common'.

Vejo? O Apache2.2-common vem do log de erros da etapa anterior.

Por fim, descobri que há uma cadeia de dependências assim:

 Apache2.2-common <-- Apache2.2-bin <-- libaprutil1-ldap <-- libaprutil1

Para os 3 primeiros pacotes, o apt-get log me disse 'não vai ser instalado',

mas para o último pacote, mostra 'libaprutil1-ldap: Depende: libaprutil1 (= 1.3.9 + dfsg-3build1) mas 1.3.9 + dfsg-3ubuntu0.10.10.1 deve ser instalado'

Eu tenho uma versão diferente existente no meu lib, então:

Sudo apt-get remove libaprutil1

Sudo apt-get install Apache2

Agora está tudo bem.

8
rick

o que é dependências não atendidas Erro

No Ubuntu, os pacotes são a principal maneira de o software ser construído, implementado e instalado. Muito simplesmente, os pacotes são uma alternativa para baixar, construir e instalar software do zero. Eles oferecem uma série de vantagens em termos de instalação, remoção, monitoramento e manipulação de interações entre partes de software sobre o modelo padrão "compilar a partir da origem". Ubuntu usa sistema de pacotes centralizado, ou seja, cada pacote depende de alguns outros pacotes. Quando instalamos um pacote, suas dependências serão instaladas. O erro de dependências não atendidas ocorre quando as dependências do pacote não estão disponíveis para instalação.

Causas possíveis

1.Computer is not connected to the Internet
2.The repository containing the depandancy package is not enabled
3.Package catalog is not updated
4.The version of the depandancy in the current repository is old
5.Software index is broken
6.The depandancy is not available for ubuntu

Vamos tentar resolvê-lo

  1. Conecte-se à internet: D
  2. Certifique-se de que todos os repositórios padrão estejam ativados

    -> Você pode adicioná-los facilmente no Software Center-> Edit-> Software Sources-> Other Sources-> Add "

    -> Inicie o Software Center.

    ->. No painel, vá para Edit e selecione Software Sources.

    edit-software-sources

    -> Verifique se todos os repositórios estão marcados enter image description here

  3. Atualize o catálogo do software

    clique no ícone superior direito e selecione Entrada disponível para atualização no menu
    enter image description here

e pressione o botão de verificação enter image description here

4. tipo ctrl+alt+t para abrir o terminal e digitar Sudo apt-get install -f

5.Purge o ppa recentemente adicionado usando o ppa-purga ppa-purgaInstall ppa-purge

Este programa desativa um PPA de suas fontes de software e reverte seu sistema de volta para os pacotes oficiais do Ubuntu. Você pode usar isso para retornar o sistema ao normal após testar uma nova versão de um PPA.

Sintaxe

Sudo ppa-purge ppa:<repository-name>/<subdirectory>

Exemplo

Sudo ppa-purge ppa:ubuntu-mozilla-daily/ppa
  1. abrir o software center e tentar instalar qualquer software. Se a caixa de diálogo a seguir for exibida, pressione o botão de reparo e aguarde

enter image description here

Else type ctrl+alt+t para abrir o terminal e digite Sudo apt-get install -f e siga as instruções na tela

Se ainda ocorrer erro, sinta-se à vontade para perguntar em askbunt

7
Tachyons

... não se esqueça de "build-dep"

Além dessas respostas acima - eu tenho que admitir que estou surpreso que ninguém tenha mencionado essa abordagem, que é o que eu sempre usei como uma "bala de prata" a qualquer momento que eu encontrei conflitos de apt-get ou pacotes não resolvidos (ou até mesmo se o sistema está sendo teimoso ... ha!).

EDITADO: usar Sudo dpkg -r [package] é incentivado, pois tem uma função de remoção bastante poderosa. Já que apt-get trabalha em conjunto com dpkg, o que significa que apt-get irá obedecer à função dpkg.

  Sudo dpkg -r [package]
  Sudo apt-get build-dep [package]  
  ## pre-install all deps for the package

Você chama o apt-get para limpar o pacote com falha que você estava tentando instalar no sistema, e então chama o comando build-dep, que o apt-get irá pegar e instalar dependências pertencentes individualmente a este pacote, para que elas satisfaçam o pacote antes. Então finalmente, chame a instalação do apt-get:

Sudo apt-get install [package]

.... 'Ugh! Vamos torcer o seu braço até você gritar "Tio!"

Isso raramente aconteceu durante meus longos anos de uso do Linux, mas eu me vi usando essa abordagem raramente e com sucesso. Este é um exemplo da recente luta que tive há um mês atrás com pacotes mysql-client/mysql-server. Depois de uma dúzia de tentativas fracassadas de resetar minha senha de root com o mysql-server (mesmo via techqiue --skip-grant-tables mas ainda assim falhei), finalmente consegui “torcer o braço do Linux até ele gritar“ Uncle! ”':

Sudo dpkg -r mysql-server mysql-client
Sudo apt-get autoclean  
## this dumps any copy of existing package to prevent apt-get from "re-using" it.
Sudo apt-get build-dep mysql-client   
 ## one package at a time, starting with client first
Sudo apt-get install mysql-client
Sudo apt-get build-dep mysql-server
Sudo apt-get install mysql-server

apt-get autoclean é a chave nesta solução

5
Faron

Durante a instalação de pacotes i386 em sistemas Multiarch Ubuntu de 64 bits

Se você está tentando instalar um pacote que depende de muitos pacotes i386, o erro de dependência acima também seria causado se você não adicionar a arquitetura i386 executando o comando Sudo dpkg --add-architecure i386.

exemplo:

[email protected]:~$ Sudo apt-get install skype
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:
 skype : Depends: skype-bin but it is not installable
E: Unable to correct problems, you have held broken packages.
[email protected]:~$ Sudo dpkg --add-architecture i386
[email protected]:~$ Sudo apt-get install skype
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype-bin:i386 sni-qt:i386 zlib1g:i386
Suggested packages:
  nas:i386 glibc-doc:i386 locales:i386 rng-tools:i386 libglide3:i386
  gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 libvisual-0.4-plugins:i386
  gstreamer-codec-install:i386 gnome-codec-install:i386
  gstreamer1.0-tools:i386 gstreamer1.0-plugins-base:i386 jackd2:i386
  pulseaudio:i386 libqt4-declarative-folderlistmodel:i386
  libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386
  libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386
  libicu48:i386 libthai0:i386 qt4-qtconfig:i386
Recommended packages:
  xml-core:i386
The following NEW packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype skype-bin:i386 sni-qt:i386 zlib1g:i386
0 upgraded, 115 newly installed, 0 to remove and 7 not upgraded.
Need to get 63.7 MB of archives.
After this operation, 225 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
3
Avinash Raj

O que funcionou para mim é reinstalar a dependência. É o caso em que a versão instalada é mais recente que a mais recente (o que o synaptic mostra). Na verdade, é equivalente permitir que o synaptic faça o downgrade do pacote de dependências.

Outra coisa que funcionou é usar o "aptitude":

[email protected]:~# aptitude install libgfortran3
The following NEW packages will be installed:
  libgfortran3{b} 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 250 kB of archives. After unpacking 1 230 kB will be used.
The following packages have unmet dependencies:
 libgfortran3 : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is installed.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     libgfortran3 [Not Installed]                       



Accept this solution? [Y/n/q/?] n
Internal error: found 2 (choice -> promotion) mappings for a single choice.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

      Downgrade the following packages:                                        
1)      cpp-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
2)      gcc-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
3)      gcc-4.8-base [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
4)      libasan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
5)      libatomic1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
6)      libgcc-4.8-dev [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]
7)      libgomp1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
8)      libitm1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
9)      libquadmath0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
10)     libstdc++6 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
11)     libtsan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      

Accept this solution? [Y/n/q/?] y
1
Bob Yoplait

Depois de ter tentado perto de todos os métodos mencionados neste tópico (e outros) eu estava perto de desistir. Eu atualizei meu Debian Lenny para o Squeeze, e não pude, durante minha vida, descobrir por que PHP5, Apache, MySQL etc. não queriam instalar. No final tentei usar

Sudo apt-get purge Apache2
Sudo apt-get purge php5
Sudo apt-get purge mysql-server
Sudo apt-get clean
Sudo apt-get autoremove
Sudo apt-get install Apache2 php5 mysql-server

..e funcionou perfeitamente! (Cuidado, ele pode destruir seus arquivos de configuração, então faça o backup deles!)

1
h2ooooooo

Se você está recebendo um erro como este:
enter image description here

Isso está dizendo que os pacotes já estão instalados, mas não instalou todos os outros pacotes de que precisa para funcionar. Você deve ser capaz de resolver isso executando isto:

Sudo apt-get -f install

(Este comando deve instalar automaticamente as dependências não atendidas.)

ou algo assim (com os pacotes relevantes) :

Sudo apt-get install click curl dpkg-dev python-lzma python-requests imagemagick ubuntu-dev-tools

Mas se você acabar com esse tipo de erro: cannot install package/package not available/no installation candidate etc

Você pode então procurar maneiras de instalá-los aqui ou aqui .
Com o exemplo acima, você deve ser capaz de encontrar uma página como this , e então usar m PPA , ou instalar a .deb para 32 bits , ou a .deb para 64 bits .

0
Wilf