Incapaz de corrigir problemas, você realizou pacotes quebrados

199

Após a atualização de 10.04 para 12.04, estou tentando instalar pacotes diferentes. Por exemplo, ia32-libs e skype (4.0).

Ao tentar instalá-los, recebo a mensagem de erro 'Não foi possível corrigir problemas, você segurou pacotes quebrados'.

Saída de comandos:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Depois de executar isso:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    
por trond 29.11.2012 / 00:48

7 respostas

220

Essa mensagem de erro em particular pode indicar que você segurou os pacotes, mas também pode indicar um problema diferente.

Você pode obter uma lista de pacotes em real :

dpkg --get-selections | grep hold

Se não houver nenhum, ou nenhum parecer relacionado, então provavelmente é outra coisa. Verifique cuidadosamente a saída do comando que você estava tentando quando recebeu a mensagem de erro, pois pode haver outras pistas na saída completa desse comando, além da mensagem de erro.

Outro método de resolução de problemas pode ser usar o aptitude em vez do apt-get para tentar instalar o seu pacote:

sudo aptitude install <packagename>

O Aptitude irá desistir menos facilmente e tentará encontrar soluções que possam envolver a modificação de outros pacotes. Pode dar-lhe mais explicações sobre o problema e opções para corrigi-lo.

Ocasionalmente, o aptitude estará muito ansioso para remover ou reduzir o tamanho de um grande número de pacotes para satisfazer sua solicitação. Nesse caso, tentar novamente com -f altera suas prioridades e ajuda a encontrar soluções que envolvam a remoção / redução de menos pacotes, mesmo que significa que nem todas as alterações solicitadas podem ser feitas:

sudo aptitude -f install <packagename>
    
por thomasrutter 29.11.2012 / 02:58
29

Isso aconteceu comigo também. Tudo o que fiz foi sudo apt-get update e isso resolveu meu problema. Boa sorte.

    
por user2292711 27.08.2013 / 04:43
8

Eu encontrei um cenário semelhante em relação às dependências ausentes. No meu caso eu estava tentando instalar o curl no ubuntu salamandra saquinho 13.10 ...

O erro afirmou que a dependência exigia uma versão anterior da biblioteca curl3.

Consegui degradar a versão anterior tentando instalar o curl usando o aptitude.

Quando notou a dependência ausente e o motivo (requer uma versão anterior do arquivo de biblioteca), ela me deu várias opções em como responder ... y / / n / q

Y teria abortado a instalação, N procuraria outra opção, e Q simplesmente sairia e não faria mais nada, deixando um pacote quebrado.

Selecionei N e ele me deu a opção de fazer o downgrade do arquivo da biblioteca para uma versão anterior. Então foi o que eu fiz, e enrolar terminou de instalar sem mais erros.

  • Eu posso procurar atualizar o arquivo da biblioteca novamente após a instalação, mas, até agora, tudo bem.
por Peopleunit 02.03.2014 / 07:53
8

Eu tive um cenário semelhante em uma nova instalação do 14.04, sem arquivos listados em dpkg --get-selections | grep hold e sem alegria após sudo apt-get update .

O que fez consertar para mim foi um simples

sudo apt-get autoremove

Quando tentei reinstalar o pacote com defeito, funcionou bem. Yay!

    
por yochannah 27.07.2015 / 15:41
4

Tive o mesmo problema, executei o comando de verificação de pacote da outra resposta ( dpkg --get-selections | grep hold )  e viu

tomcat7                                         deinstall
tomcat7-common                                  install

então usei " apt-get remove tomcat7-common "

Então eu pude instalar o Tomcat 6 (eu estava removendo o Tomcat 7 e instalando o Tomcat 6 como você faz).

    
por Nollaig 03.10.2013 / 13:03
2

Estas são algumas maneiras rápidas e fáceis de corrigir o erro you have held broken packages .

  • Abra seu arquivo sources.list em /etc/apt/sources.list e verifique se não há fontes de software para uma versão diferente do Ubuntu que a versão do Ubuntu que você está usando atualmente. Se você encontrar linhas de lançamento incorretas em sources.list, abra o arquivo sources.list com sudoedit /etc/apt/sources.list , comente as linhas incorretas em sources.list precedendo-as com um caractere # , salve o arquivo sources.list e execute sudo apt update para atualizar a lista de pacotes de software disponíveis.

  • Selecione a opção Corrigir pacotes quebrados no gerenciador de pacotes Synaptic. Execute os seguintes comandos para instalar o Synaptic.

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    Abra o Synaptic e, no Synaptic, selecione Editar - > Corrigir pacotes quebrados e depois repetir Editar - > Corrigir pacotes quebrados uma segunda vez.

    No Synaptic, no painel esquerdo, clique no botão Filtros Personalizados , que é marcado pelo cursor do mouse na captura de tela abaixo. Na lista no canto superior esquerdo, selecione Broken . No painel central serão listados todos os pacotes quebrados que ainda precisam ser reparados.

    Selecione os pacotes quebrados, um de cada vez. Selecione um pacote quebrado e abra o terminal e execute apt policy <package-name> . Os resultados deste comando lhe dirão se esse pacote quebrado foi instalado a partir dos repositórios padrão do Ubuntu ou de alguma outra fonte. Se o pacote quebrado foi instalado de alguma outra fonte, talvez esse pacote possa ser removido junto com sua fonte de software e substituído por uma versão diferente do mesmo pacote dos repositórios padrão do Ubuntu. Geralmente, isso significa corrigir um pacote corrompido fazendo o downgrade desse pacote para uma versão mais antiga.

  • Se você receber esta mensagem de erro:

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    Execute os seguintes comandos:

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • Remova manualmente um pacote quebrado.

    1. Encontre seu pacote em /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. Mova a pasta do pacote para outro local.

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. Execute o seguinte comando:

      sudo dpkg --remove --force-remove-reinstreq <package>
      
por 08.10.2018 / 13:13
0

Para mim, nenhum dos itens acima funcionou porque o meu sistema não foi atualizado. Eu fiz

Home Key > Software Updater > Install

e atualizei meu sistema; depois, eu poderia instalar meu pacote normalmente com apt .

    
por nathangeorge1 25.05.2018 / 16:01

Tags