Como resolvo dependências não atendidas após adicionar um PPA?

540

Ocasionalmente, ao instalar 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?

jrg
fonte
33
Esqueça o nome exato do pacote. É irrelevante para esta questão. Estou tentando criar uma pergunta canônica . Como tal, o pacote exato não é relevante nesta instância específica.
jrg
33
Na verdade, "o nome exato do pacote", embora não seja relevante na sua pergunta, é extremamente relevante para o problema de qualquer indivíduo a esse respeito. Normalmente, o melhor primeiro passo para resolver isso é identificar a fonte de pkg1 e pkg2. Isso parece ter sido esquecido nas respostas, a maioria das quais é muito boa de outra maneira. Além disso, não é observado que em muitos casos, se não na maioria dos casos, "<whatever> deve ser instalado" realmente significa "<whatever> está instalado". Isso é algo que tende a confundir muitos usuários enfrentando este e também deve ser incluído em uma resposta abaixo
Doug
5
@doug Adicione isso como resposta e não como comentário, é muito bom! :)
jrg
1
@Braiam Whaaaat tem um ponto, porém, a pergunta não é específica para um PPA e algumas respostas também não. Sei que as duas principais respostas sobrecarregam as outras, mas não tenho certeza de que alterar a natureza da pergunta seja a solução certa, principalmente porque você anula as outras respostas. Estou deixando por enquanto, já que não tenho uma resposta melhor, mas é algo para se pensar.
Seth
2
Ah, e onde está minha pergunta para solução de problemas? : D
Seth

Respostas:

561

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

Soluções:

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

  • Se a errormostra algo como isto:

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

    Em seguida, verifique se os repositórios restrictede universeestão ativados. Pressione Alt+ F2, digite software-properties-gtke clique Enter.

    Na Ubuntu Softwareguia, ative todos os repositórios.

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

    sudo apt-get clean

    ou,

    sudo apt-get autoclean

    apt-get cleanlimpa o repositório local dos arquivos de pacotes recuperados (os arquivos .deb). Ele remove tudo, menos o arquivo de bloqueio de / var / cache / apt / archives / e / var / cache / apt / archives / parcial /. apt-get autocleanlimpa o repositório local de arquivos de pacote recuperados, mas, ao contrário apt-get clean, remove apenas os arquivos de pacote que não podem mais ser baixados e são amplamente inúteis.

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

    Instalação do sudo apt-get -f

    O -faqui significa "reparo quebrado". Apttentará corrigir dependências quebradas. Se você instalou manualmente um pacote que tinha dependências não atendidas, apt-getinstalará essas dependências, se possível, caso contrário, poderá simplesmente remover o pacote que você instalou para resolver o problema.

    Então corra:

    sudo dpkg --configure -a

    Em seguida, execute isso novamente:

    Instalação do sudo apt-get -f

    Se a saída for:

    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á-lo. Os pacotes são mantidos devido a conflitos de dependência que aptnão podem ser resolvidos. Tente este comando para encontrar e reparar os conflitos:

    sudo apt-get -o Debug :: pkgProblemResolver = yes dist-upgrade

    Se não conseguir 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-upgradecada vez, até que não haja mais pacotes retidos. Em seguida, reinstale os pacotes necessários. Certifique-se de usar a --dry-runopção para estar 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 possua os pacotes necessários para satisfazer as dependências.

Finalmente, se tudo mais falhar, você pode tentar satisfazer as dependências, localizando e instalando os pacotes necessários ou instalando-os a partir do código-fonte e criando pacotes " deb " para eles.

Desativar / remover / limpar PPAs:

Os PPAs (Personal Package Archive) são repositórios hospedados na Barra de Ativação . 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:

    Desabilitar 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 SourcesOu,

    Pressione Alt+ F2e corra software-properties-gtk.

    Clique na Other Softwareguia, você verá que cada PPA tem duas linhas aqui, uma para os pacotes compilados e uma para a fonte, Uncheckambas as linhas para desativar um PPA. Aqui você também pode adicionar e remover PPAs.

  • Purga:

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

    sudo apt-get install ppa-purge

Mas, considerando que a pergunta aptestá 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 a PPA Purge:

sudo ppa-purpa 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 da desativação de um PPA e Checkdas duas linhas de um determinado PPA para habilitá-lo).

Nota: PPA Purgenão remove PPAs ( pode ser no futuro ); portanto, você deverá remover manualmente o PPA.

  • Retirar:

    Se o pacote instalado a partir de um PPA não existir nos repositórios oficiais do Ubuntu, o uso PPA Purgenão é recomendado, porque não há nada para ser rebaixado e PPA Purgetambém não seria excluído. Para remover um PPA e os pacotes instalados, execute os seguintes comandos: (Ignore o primeiro comando se não desejar remover os pacotes instalados)

    sudo apt-get autoremove --purge package-name
    sudo add-apt-repository --remove ppa: someppa / ppa
    sudo apt-get autoclean
    

Como alternativa, você pode usar Y PPA Managerpara desativar / remover / limpar os PPAs (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 no Session Indicatorpainel do Unity:

    Ou pressione Alt+ Ctrl+ Tpara abrir o terminal e execute os seguintes comandos:

    sudo apt-get update
    sudo apt-get upgrade

    Atualização: sincroniza sua lista de pacotes disponíveis com os servidores nos repositórios de origem. Atualização: baixa e instala as versões mais recentes dos pacotes instalados.

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

    • Pressione Alt+ F2e execute y-ppa-managerpara abrir o Y PPA Manager.
    • Depois, clique duas vezes aberta ou bater Enterem Advanced.
    • Na janela resultante, selecione Scan and remove duplicate PPAse clique em OK.

insira a descrição da imagem aqui

Conseguindo ajuda:

Ao pedir ajuda no Askubuntu ou em qualquer outro fórum de ajuda, inclua a saída dos seguintes comandos na sua pergunta:

  • Saída do erro real:

    sudo apt-get install nome do pacote
  • Isso mostrará seu sources.list:

    cat /etc/apt/sources.list
  • Isso 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 gerente de ppa

Aqui estão algumas de suas características:

  • procurar pacotes em todos os PPAs da Barra de Ativação
  • listar e baixar pacotes em um PPA
  • adicionar / remover / limpar um PPA
  • fazer backup e restaurar fontes PPA
  • remova fontes duplicadas de PPA

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

sudo add-apt-repository ppa: webupd8team / y-ppa-manager
sudo apt-get update
sudo apt-get instala o y-ppa-manager

Considerando a pergunta, aptestá quebrado, portanto, use esses 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
Basharat Sialvi
fonte
3
Como instalar despandâncias não atendidas se o apt estiver quebrado?
Tachyons
4
Esta foi uma grande ajuda para mim ... nova instalação do Lubuntu 12.04 e não consegui instalar coisas básicas, como gvim (vim-gtk) ou openssh-server. Eu tentei todos os tipos de opções de linha de comando, incluindo literalmente fazer uma comparação do /etc/apt/sources.list desta máquina e de outra (que funcionou corretamente, executando o Xubuntu). Depois de seguir este guia, descobri que, de alguma forma, em software-properties-gtk, a caixa dos repositórios 'principais' estava desmarcada! Problema resolvido!
memilanuk
1
Em algum momento você realmente teve pacotes quebrados ... Então, a melhor coisa é desenterrá-los e excluí-los. Veja askubuntu.com/a/363244/16395
Rmano
3
Ninguém respondeu como instalar esses pacotes com versões de dependências não atendidas. Deus! Eu só quero forçar a instalação de versões mais antigas dos pacotes.
marines
3
Isso não funcionou para mim: S
AlvaroAV
87

Nota: Todos os comandos solicitados para execução devem ser executados no terminal, que pode ser aberto com Ctrl+ Alt+ Tou procurando o 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

Etapas de pré-desempenho

Fazendo backup

Faça backup dos seguintes arquivos:

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

Para fazer isso, use estes 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

aptmantém um cache de pacotes baixados recentemente para economizar largura de banda quando é necessário instalar. 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 em cache pertencentes à pasta /var/cache/apt/archives/e /var/cache/apt/archives/partialexceto os arquivos .lock. Isto é recomendado

sudo apt-get autoclean

Este explora as pastas /var/cache/apt/archives/e /var/cache/apt/archives/partiale verifica se o pacote ainda está nos repositórios e remove os que não são


Corrigindo dependências

Usando o modo reparo-quebrado do apt

sudo apt-get -f install

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

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


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

Digite gksu software-properties-gtke você verá esta janela

Verifique se todas as fontes estão ativadas.

Em seguida, vá para a guia Outro software e verifique se os PPAs necessários para a instalação do software estão lá e estão ativados. Além disso, tente desativar alguns PPAs que podem estar com pacotes quebrados

agora corra sudo apt-get update

Tente instalar o software agora

Selecionando um servidor melhor para baixar

Digite gksu software-properties-gtke você verá esta janela

Clique no Download na caixa suspensa e selecione outro

Clique em Selecionar melhor servidor

Corre 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's quebrados / indesejados e suas aplicações junto com ele

Para instalá-lo, execute

sudo apt-get install ppa-purge

Mas, Considerando que a pergunta aptestá 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

Agora use ppa purge

sudo ppa-purge ppa:someppa/ppa  

Gerente Y-PPA

O Y-PPA Manager é um aplicativo de interface gráfica que ajuda você a gerenciar PPAs 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 pergunta, aptestá 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ê verá esta janela

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

Execute as seguintes tarefas descritas em preto


Prevenção é melhor que a cura

É melhor prevenir do que procurar esta 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

Use apenas PPAs destinados a serem usados ​​no Ubuntu também, use apenas PPAs com fontes confiáveis. De fato, o pacote já pode 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ê verá esta janela

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

Rode isto:

Você será solicitado a salvar um arquivo tar.gz com uma caixa de diálogo semelhante à abaixo. Salve-o em outra partição ou em um local seguro

Posteriormente, quando precisar restaurá-lo novamente, siga as etapas semelhantes e, quando chegar à caixa de diálogo avançada, clique aqui:

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


Ainda não funciona?

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

Se seguir todas as etapas fornecidas para corrigir o erro não funcionar, você sempre pode perguntar no Ask Ubuntu

Aqui estão alguns comandos que você precisa para 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 )

Também existem outros arquivos / comandos dos quais você precisa que possam ser específicos para erros, e os usuários provavelmente solicitarão que você nos comentários publique o arquivo / comando.

Amith KK
fonte
Eu colocaria apt-get updateperto do topo da lista. Às vezes, seu sistema fez uma atualização em que um pacote mais recente foi atualizado remotamente, mas um dos quais depende ainda não terminou de compilar. Ou a versão que você possui no cache local foi atualizada. Nesses casos, um simples apt-get updateatualizará seu cache local e você poderá continuar.
Hamish Downer
1
Resposta de primeira qualidade! Isso apenas me faz desejar que o apt e / ou o dpkg tenham melhores proteções para garantir que não entrem nesses estados interrompidos ou que sejam melhores em resolvê-los. Eu já tive esse problema antes e fiquei bastante frustrado quando apt-get install -fnão o corrigiu.
Jeff Welling
Você também pode incluir este aviso: "Nunca atualize seu sistema enquanto o PPA estiver ativado, desative-o primeiro e depois atualize". Porque, se você atualizar para uma versão do PPA e depois o PPA ficar morto, isso significa que você está morto. . Você não pode fazer o downgrade de todo o sistema para os números de versão inferiores e não pode instalar algo de um repositório padrão, pois o pacote do repositório std tem conflitos com o pacote PPA instalado.
Anwar
2
Escolha um servidor melhor corrigido para mim. Obrigado!
Hoang Huynh 28/02
Eu pensei que a -fbandeira representa força e sempre evitado usá-lo
user907860
38

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

Eu recomendo o aptitude para quem usa um sistema baseado em .deb como o Ubuntu. Sua estrutura em árvore permite procurar facilmente dependências, incluindo pacotes recomendados e sugeridos, além de visualizar 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. (O Synaptic também está disponível no Ubuntu, mas não acho tão intuitivo.)

O Aptitude também oferece um solucionador de conflitos que o guiará por 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 puder encontrar uma solução. Como usuário do Ubuntu, normalmente não ocorrem situações que exigem que você investigue por que esse pacote específico está sendo instalado, mas é quase inevitável que você use mais o sistema.

sobrescrito
fonte
3
Votada para a menção de resolvedor de conflitos de aptidão. Há momentos em que é essencial usar ferramentas avançadas como esta para determinar quais são as possibilidades e identificar o conflito principal.
John S Gruber
3
Esta pode realmente ser a melhor resposta neste tópico. Pode até ser aprimorado com um tutorial sobre aptitudeo solucionador de conflitos.
Luís de Sousa
2
esse link, embora não explique dependências, ou seu conceito geral, mostra um tutorial rápido do resolvedor interativo: aptitude.alioth.debian.org/doc/en/ch02s03s03.html
sobrescrito em
1
A aptidão com +1 acabou de salvar meu bacon diante de um conflito no GTK3. O apt-get não ajudou em nada.
Chris Laplante
1
O que eu gosto é sudo aptitude --full-resolver my_package. Isso geralmente fornece The following packages have unmet dependenciesuma lista entre as quais 7) <my_package> [Not Installed](7 é apenas um exemplo). A cada passo, o aptitude oferece novas opções. O que funcionou para mim foi escolher primeiro 7, depois r 7(que corresponde à descrição Rejecting the removal of my_package) e depois n (para NÃO) como as opções anteriores que não eram o que eu queria: mas depois disso, novas opções ofereciam a desclassificação de alguns pacotes e a instalação do my_package; so, last, Y(for YES)
24

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, o pacote1 precisa do pacote2.
  2. O package2 deve 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á possível porque é <1,8

Consertar

Não existe uma única resposta certa para esta pergunta e não existe uma resposta simples.

Existem muitos cenários pelos quais isso pode acontecer e é preciso investigar todas as opções e tentar resolver as pré-condições 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, portanto, você precisará encontrar um repositório que possua. Se você não conseguir encontrar um repositório com versões> = 1.8, poderá ser necessário criar e instalar o package2 a partir da fonte. E, em seguida, tente instalar o package1.

Se você quiser saber como criar um pacote a partir da fonte, verifique outras perguntas / respostas ou poste um novo.

Cenário B:

Os repositórios incluem 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 criadas por alguma tecnologia mais recente que não é suportada por outros pacotes que você já instalou.

Talvez isso não seja possível de corrigir. Você pode tentar usar o apt ou o synaptic e procurar todas as versões do pacote2 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, receberá uma lista de mensagens de erro semelhantes para todos os outros pacotes que impedem a instalação do package2> = 1.8.

Nesse caso, você tem um problema maior. Você queria instalar o package1, que precisa que o package2 seja> = 1.8, mas o package2 na versão> = 1.8 exige que o package3 esteja na versão> = 6.7 e você possui o package3 versão 6.3

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

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 necessárias específicas de todos os pacotes, uma por uma, e espere estar OK.

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

Cenário C:

Independentemente das razões do problema, você sempre pode configurar a compilação manual e criar o pacote necessário e todas as suas dependências nas versões exatas e necessárias do código-fonte. Com esta opção, você pode manter o que foi construído em um diretório separado e fora do caminho do sistema, para que não crie conflitos com o sistema. Esta é provavelmente a solução mais limpa e, às vezes, pode ser mais rápida.

Cenário D:

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

Cenário E:

O gerenciador de pacotes possui um erro no código de resolução de dependências.

Você precisa investigar se esse é realmente o caso e emitir uma solicitação de erro.

...

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 definiram dependências incorretas.

Vangel V. Ajanovski
fonte
17

Esses métodos precisam ser seguidos sempre que você errar em relação às dependências não atendidas

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 isto

Limpando o cache do apt:

sudo apt-get clean

Limpando 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.

Provavelmente dará algumas sugestões sobre como remover e instalar pacotes, faça o que parecer razoável.

3 . Alterar o Download Serverde Software SourcesPorque às vezes os arquivos em um servidor estão corrompidos.

insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui

4 . Isso também acontece se você tiver adicionado anteriormente um ppa externo para a dependência quebrada.

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

ou

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

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

5 . Se não for o caso 4, pelo menos tente remover o pacote que está sendo mostrado como uma dependência quebrada. Em seguida, tente instalar novamente. Isso é relatado como tendo sido causado por algumas pessoas.

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

insira a descrição da imagem aqui

7 Verifique também se todos os repositórios oficiais estão ativados (Entrada Software Sources)

insira a descrição da imagem aqui

Por favor, não ative o Proposed Updatesque se destina a testes / desenvolvedores.

insira a descrição da imagem aqui


Como dito por doug:

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

Além disso, não é observado que em muitos casos, se não na maioria dos casos, "<whatever> deve ser instalado" realmente significa "<whatever> está instalado" e deve ser tentado removê-lo se nada funcionar (como no ponto 5).


Continuarei adicionando mais coisas que encontrarei para corrigir unmet dependencies.

Ashu
fonte
3
@Ashu Uma coisa que você pode querer fix-- apt-get updateque não atualizar o cache do apt (que consiste em baixados .debarquivos e um arquivo que armazena informações sobre quais .debarquivos armazenados). Ele atualiza os arquivos de índice de pacotes (que consistem em informações sobre quais pacotes estão disponíveis para serem baixados e instalados em cada fonte de software disponível). Como eu disse antes, apt-get cleannão limpa a mesma coisa que apt-get updateatualiza. Veja man apt-getpara detalhes.
Eliah Kagan
16

Na maioria dos casos, a instalação do pacote aptituderesolverá dependências não atendidas.Por padrão, o aptitudepacote não foi instalado no seu pc.Por isso, primeiro instale-o executando,

sudo apt-get update
sudo apt-get install aptitude

então,

sudo aptitude install packagename

Por exemplo,

    
avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo apt-get install ubuntu-sdk
Lendo listas de pacotes ... Concluído
Construindo árvore de dependência       
Lendo informações do estado ... Concluído
Alguns pacotes não puderam ser instalados. Isso pode significar que você tem
solicitou uma situação impossível ou se você estiver usando o dispositivo instável
distribuição que alguns pacotes necessários ainda não foram criados
ou foi removido do Incoming.
As seguintes informações podem ajudar a resolver a situação:

Os seguintes pacotes têm dependências não atendidas:
 ubuntu-sdk: Depende: qtcreator-plugin-ubuntu, mas não será instalado
E: Não foi possível corrigir os problemas, você manteve pacotes quebrados.

Instalando o pacote por meio de aptitude

avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo aptitude install ubuntu-sdk
Os seguintes NOVOS pacotes serão instalados:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} em {a} build-essential {a} 
  clique em {a} click-apparmor {a} click-dev {a} click-doc {a} cordova-ubuntu-2.8 
  cordova-ubuntu-2.8-examples {a} debhelper {a} devscripts {a} dh-apparmor {a} 
  dh-make {a} distro-info-data {a} dpkg-dev {a} taxa {a} g ++ {a} g ++ - 4.8 {a} 
  cigano-geoclue {a} libalgoritmo-diff-perl {a} libalgoritmo-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libboost-filesystem1.53.0 {a} 
  libboost-program-options1.53.0 {a} libboost-regex1.53.0 {a} 
  libbotan-1.10-0 {a} libdee-qt5-3 {a} libdistro-info-perl {a} 
  libexporter-lite-perl {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libio-stringy-perl {a} libjs-jquery {a} libjs-sphinxdoc {a} 
  libjs-sublinhado {a} liblockdev1 {a} libmail-sendmail-perl {a} 
  libparse-debcontrol-perl {a} libpcre3-dev {a} libpcrecpp0 {a} 
  libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5declarative5 {a} 
  libqt5designer5 {a} libqt5designercomponents5 {a} libqt5feedback5 {a} 
  libqt5help5 {a} libqt5location5-plugins {a} libqt5multimedia5 {a} 
  libqt5multimedia5-plugins libqt5multimediaquick-p5 {a} 
  libqt5multimediawidgets5 {a} libqt5organizer5 {a} 
  libqt5qml-graphicaleffects {a} libqt5script5 libqt5scripttools5 {a} 
  libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} libqt5v8-5-dev 
  libqt5versit5 {a} libqt5versitorganizer5 {a} libqt5webkit5-dev 
  libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4.8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-launch1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-click {a} python3-clique {a} 
  python3-magic {a} qmlscene qt3d5-dev qtbase5-doc {a} qtcreator {a} 
  qtcreator-doc {a} qtcreator-plugin-ubuntu {a} 
  qtcreator-plugin-ubuntu-common {a} qtdeclarative5-accounts-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-doc-html {a} qtdeclarative5-folderlistmodel-plugin 
  qtdeclarative5-friends0.2 qtdeclarative5-localstorage-plugin 
  qtdeclarative5-particles-plugin qtdeclarative5-poppler1.0 
  qtdeclarative5-qtaudioengine-plugin qtdeclarative5-qtfeedback-plugin {a} 
  qtdeclarative5-qtlocation-plugin qtdeclarative5-qtmultimedia-plugin {a} 
  qtdeclarative5-qtorganizer-plugin qtdeclarative5-qtquick2-plugin {a} 
  qtdeclarative5-qtsensors-plugin qtdeclarative5-u1db1.0 
  qtdeclarative5-ubuntu-ui-extras-navegador-plugin {a} 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin-assets {a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin {a} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtgraphicaleffects5-doc {a} qtlocation5-dev {a} qtmultimedia5-dev 
  qtmultimedia5-doc {a} qtmultimedia5-doc-html {a} qtscript5-dev 
  qtscript5-doc {a} qtscript5-doc-html {a} qtsensors5-dev {a} qtsvg5-doc {a} 
  qtsvg5-doc-html {a} qttools5-dev qttools5-dev-tools qttools5-doc {a} 
  qtwebkit5-doc-html {a} schroot {a} schroot-common {a} sqlite3 {a} 
  ubuntu-html5-container ubuntu-html5-sdk {ab} ubuntu-html5-theme {a} 
  ubuntu-html5-theme-examples ubuntu-sdk ubuntu-sdk-libs 
  ubuntu-sdk-libs-dev {a} ubuntu-ui-toolkit-doc {a} 
  ubuntu-ui-toolkit-examples {a} ubuntu-ui-toolkit-theme {a} 
  unity-action-doc {a} lançamento do aplicativo inicial {a} ferramentas do início do aplicativo {a} 
  usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Os seguintes pacotes serão atualizados:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 pacotes atualizados, 151 recém-instalados, 0 para remover e 293 não atualizados.
Precisa obter 108 MB / 126 MB de arquivos. Após descompactar, 273 MB serão usados.
Os seguintes pacotes têm dependências não atendidas:
 ubuntu-html5-sdk: Depende: qtdeclarative5-ubuntu-webapps-api, que é um pacote virtual.
                    Depende: ubuntu-html5-ui-toolkit, mas não será instalado.
As ações a seguir resolverão essas dependências:

     Mantenha os seguintes pacotes na versão atual:              
1) qtcreator-plugin-ubuntu [Não instalado]                          
2) ubuntu-html5-sdk [não instalado]                                 
3) ubuntu-sdk [não instalado]                                       

     Deixe as seguintes dependências não resolvidas:                       
4) libhud-client2 recomenda hud (= 13.10.1 + 13.10.20131014-0ubuntu1)
5) qtcreator-plugin-ubuntu-common recomenda qtcreator-plugin-ubuntu


Aceitar esta solução? [S / n / q /?] Y
Os seguintes NOVOS pacotes serão instalados:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} build-essential {a} 
  clique em {a} clique em aparato {a} debhelper cordova-ubuntu-2.8 {a} dh-apparmor {a} 
  dh-make {a} dpkg-dev {a} g ++ {a} g ++ - 4,8 {a} cigano de geoclue {a} 
  libalgoritmo-diff-perl {a} libalgoritmo-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libdee-qt5-3 {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libjs-jquery {a} libmail-sendmail-perl {a} libpcre3-dev {a} 
  libpcrecpp0 {a} libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5designer5 {a} 
  libqt5designercomponents5 {a} libqt5feedback5 {a} libqt5help5 {a} 
  libqt5location5-plugins {a} libqt5multimedia5 {a} libqt5multimedia5-plugins 
  libqt5multimediaquick-p5 {a} libqt5multimediawidgets5 {a} 
  libqt5organizer5 {a} libqt5qml-graphicaleffects {a} libqt5script5 
  libqt5scripttools5 {a} libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} 
  libqt5v8-5-dev libqt5versit5 {a} libqt5versitorganizer5 {a} 
  libqt5webkit5-dev libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4.8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-launch1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-click {a} python3-clique {a} 
  qmlscene qt3d5-dev qtdeclarative5-accounts-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-folderlistmodel-plugin qtdeclarative5-friends0.2 
  qtdeclarative5-localstorage-plugin qtdeclarative5-particulate-plugin 
  qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-plugin 
  qtdeclarative5-qtfeedback-plugin {a} qtdeclarative5-qtlocation-plugin 
  qtdeclarative5-qtmultimedia-plugin {a} qtdeclarative5-qtorganizer-plugin 
  qtdeclarative5-qtquick2-plugin {a} qtdeclarative5-qtsensors-plugin 
  qtdeclarative5-u1db1.0 qtdeclarative5-ubuntu-ui-extras-navegador-plugin {a} 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin-assets {a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin {a} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtlocation5-dev {a} qtmultimedia5-dev qtscript5-dev qtsensors5-dev {a} 
  qttools5-dev qttools5-dev-tools sqlite3 {a} ubuntu-html5-container 
  ubuntu-html5-theme {a} ubuntu-html5-theme-examples ubuntu-sdk-libs 
  ubuntu-ui-toolkit-theme {a} upstart-app-launch {a} 
  ferramentas upstart-app-launch {{} usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Os seguintes pacotes serão atualizados:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 pacotes atualizados, 108 recém-instalados, 0 a remover e 293 não atualizados.
Precisa obter 27,1 MB / 45,8 MB de arquivos. Após descompactar, 104 MB serão usados.
Você quer continuar? [S / n /?]
Avinash Raj
fonte
Seu exemplo apenas tem o aptitude de parar a instalação. Na verdade, não instala nada.
5134 kiri
2
@AvinashRaj, ..mas antes da instalação aptitude, o problema de dependências não deveria ser resolvido?
precisa
Sim, na maioria dos casos, resolve as dependências.
Avinash Raj
2
Quero dizer, se o sistema quebrou os pacotes, ele não permitiria novas instalações até que isso fosse corrigido. Então, como você instalaria aptitudesem resolver o problema primeiro!
preciso
Nesse caso, primeiro temos que resolver os pacotes quebrados, caso contrário você não poderá instalar aptitude. Se não houve erro causado por pacotes quebrados, você poderá instalar o aptitude.
Avinash Raj
11

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.

Finalmente resolvi esse problema descendo para a árvore de dependências via apt-get install, ilustrada com um exemplo abaixo. No meu caso, eu queria instalar 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 installpara 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

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 alguma estranha razão, isso foi bem-sucedido e eu consegui instalar o pacote original com o qual queria 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]?
Michael Franzl
fonte
8

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

Problema:

Falha ao instalar o apache2 no ubuntu 10.10.

rick@wen-VirtualBox:~$ 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 caminho é adicionar o pacote dependente na lista de instalação.

Se 'sudo apt-get install apache2' falhar, tente ' sudo apt-get install 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ência como esta:

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

Nos 3 primeiros pacotes, o apt-get log me disse 'não será instalado',

mas para o último pacote, ele mostra 'libaprutil1-ldap: Depends: 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 na minha lib, então:

sudo apt-get remove libaprutil1

sudo apt-get install apache2

Agora está tudo bem.

rick
fonte
Uma leitura combinada desta resposta e da outra acima aqui fornece uma melhor compreensão do que é um problema de dependência. Quando outras respostas aqui fornecem SOLUÇÕES 'Altamente Generalizadas', isso fornece COMPREENSÃO.
VenkiPhy6
7

O que é dependências não atendidas?

No Ubuntu, os pacotes são a principal maneira de compilar, implantar e instalar o software. Muito simplesmente, os pacotes são uma alternativa para baixar, criar e instalar software a partir do zero. Eles oferecem inúmeras vantagens em termos de instalação, remoção, monitoramento e manipulação de interações entre partes de software sobre o modelo padrão "build from source". O Ubuntu usa um sistema de empacotamento centralizado, ou seja, todo 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. Verifique se todos os repositórios padrão estão ativados

    -> Você pode adicioná-los facilmente em Software Center-> Editar-> Fontes de software-> Outras fontes-> Adicionar "

    -> Inicie o Software Center.

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

    editar fontes de software

    -> Verifique se todos os repositórios estão marcados insira a descrição da imagem aqui

  3. Atualize o catálogo de software

    clique no ícone superior direito e escolha Entrada disponível para atualização no menu
    insira a descrição da imagem aqui

e pressione o botão de verificação insira a descrição da imagem aqui

4. digite ctrl+ alt+ tpara abrir o terminal e digite sudo apt-get install -f

5.Purge o ppa adicionado recentemente usando ppa-purge ppa-purge Instalar ppa-purge

Este programa desabilita um PPA de suas fontes de software e reverte seu sistema de volta aos 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. abra o centro de software e tente instalar qualquer software. Se a seguinte caixa de diálogo aparecer, pressione o botão de reparo e aguarde

insira a descrição da imagem aqui

Caso contrário, digite ctrl+ alt+ tpara abrir o terminal e digitesudo apt-get install -f e siga as instruções na tela

Se o erro persistir, sinta-se à vontade para perguntar no askbuntu

Tachyons
fonte
@ jrg Eu já tenho isso na minha resposta ... toda resposta precisa ter a mesma coisa?
Ashu 24/05
2
@Ashu Estou tentando ajudar as pessoas a dar uma resposta canônica - e tenho que dizer a todos , já que há uma recompensa de 500 representantes em jogo e não quero jogar como favorito ajudando certas pessoas com suas respostas, mas ignorando outras. . : s
jrg
5

... não se esqueça do `build-dep`

Além das respostas acima - tenho que admitir que estou surpreso por ninguém ter mencionado essa abordagem, que é o que sempre usei como uma "bala de prata" em qualquer momento que encontrei conflitos apt-get ou pacotes não resolvidos (ou até se o sistema estiver sendo teimoso .... ha!).

EDITADO: o uso sudo dpkg -r [package]é incentivado, pois possui uma função de remoção bastante poderosa. Desde que apt-gettrabalha junto com dpkg, o que significa que apt-getirá obedecer a dpkgfunção.

  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 estava tentando instalar no sistema e, em seguida, chama o comando build-dep, que o apt-get pegará e instalará as dependências individualmente pertencentes a este pacote, para que elas satisfaçam o pacote antes. Por fim, chame o apt-get install:

sudo apt-get install [package]

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

Isso raramente acontecia durante meus longos anos de uso do linux, mas me vi usando essa abordagem raramente e consegui. Este é um exemplo da recente luta que tive no mês passado com pacotes mysql-client/mysql-server. Depois de uma dúzia de tentativas fracassadas de redefinir minha senha root com o mysql-server (mesmo via --skip-grant-tables techqiue, mas ainda falhou), finalmente consegui 'torcer o braço do Linux até gritar "Tio!"':

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

Faron
fonte
3

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

Se você estiver tentando instalar um pacote que depende de muitos pacotes do i386, o erro de dependência indicado acima também será causado se você não adicionar a arquitetura do i386 executando o sudo dpkg --add-architecure i386comando

Exemplo:

avinash@avinash-Lenovo-IdeaPad-Z500:~$ 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.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo dpkg --add-architecture i386
avinash@avinash-Lenovo-IdeaPad-Z500:~$ 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] 
Avinash Raj
fonte
Concordo que pode ser uma das possíveis causas. quando tentei instalar outro pacote (por exemplo vlc) depois de instalar o skype e obtive a dependência não atendida. Saí de uma situação semelhante adicionando :amd64no final do nome do pacote que estava causando o erro. como você se recuperou? qual seria a melhor solução?
souravc
Não sei por que isso foi prejudicado. É o que eu precisava para instalar o Wine de 32 bits. BTW, você tem um erro de digitação em --add-architecture e deve adicionar um lembrete para executar o apt-get upgrade após --add-architecture.
Matt Chambers
1

Depois de tentar perto de todos os métodos mencionados neste tópico (e outros), eu estava quase desistindo. Eu atualizei meu Debian Lenny para o Squeeze e não consegui 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, isso pode destruir seus arquivos de configuração, então faça backup deles! )

h2ooooooo
fonte
Isso não resolve o problema se você não tiver os pacotes mencionados instalados.
Braiam
1

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 mostra sináptica). Na verdade, é equivalente permitir que o synaptic faça o downgrade do pacote de dependência.

Outra coisa que funcionou é usar o "aptitude":

root@arau:~# 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
Bob Yoplait
fonte
não é nada novo, basicamente, a mesma que se pode retirar da resposta mais votados aqui e que segue ...
JoKeR
1
sim, mas existem milhões de soluções, apenas mencionei o que funcionou para mim.
21815 Bob Yoplait
0

Se você estiver recebendo um erro como este:
insira a descrição da imagem aqui

Isso está lhe dizendo que os pacotes já estão instalados, mas não instalou todos os outros pacotes necessários para funcionar. Você deve conseguir resolver isso executando o seguinte:

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: não é possível instalar o pacote / pacote não disponível / nenhum candidato à instalação etc

Você pode procurar maneiras de instalá-los aqui ou aqui .
Com o exemplo acima, você poderá encontrar uma página como esta e, em seguida, use um PPA ou instale um .deb para 32 bits ou um .deb para 64 bits .

Wilf
fonte