“Mas é referido por outro pacote.” - Encontrar esse pacote

24

Não é incomum que um usuário do Ubuntu (ou outra distro com gerenciamento de pacotes apt) encontre o erro:

user@box ~ $ sudo apt-get install x
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package x is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'x' has no installation candidate

Houve várias perguntas sobre isso em vários sites StackExchange, por exemplo, openvpn no AskUbuntu, mas geralmente são sobre como obter o pacote específico, apesar do erro.

Não encontrei nenhum pacote que não seja encontrado de maneira simples (embora nem sempre fácil), determinando se ele ainda está distribuído e em qual repositório, se houver, e garantindo que o repositório esteja no apt.sources, ou o pior ocorre com o pior download de um arquivo. .deb ou fonte a ser compilada.

Portanto, minha pergunta é mais geral e, embora eu ache que ela tenha uma resposta bastante simples e, portanto, não excitante, não consigo pensar em como encontrá-la pelos métodos convencionais de mecanismo de pesquisa, então volto para o AskUbuntu: Existe um comando ou opção que posso usar para determinar qual pacote / quais pacotes fazem referência ao pacote ausente?

Arlo James Barnes
fonte

Respostas:

13

Você pode procurar o pacote com o apt-cache:

apt-cache search x

Isso produzirá todos os pacotes que, de uma maneira ou de outra, fazem referência a x.

Henrique Ferreira
fonte
2
Bem, isso parece razoável ... exceto que não está funcionando para mim. apt-get install libtinfo6relatórios indisponíveis, mas referidos por outro pacote, mas apt-cache search libtinfo6não produzem resultados. Existe alguma outra maneira de fazer uma coisa semelhante?
Erhannis 7/11
@Erhannis 'terminfo' traz alguma coisa à tona? Às vezes, acho que esse erro aparece quando um pacote é renomeado desleixadamente.
Arlo James Barnes
Não tenho certeza. Atualizei para a próxima versão do Debian, e esse pacote aparentemente não apresenta mais esse erro. Vou tentar terminfona próxima vez que isso acontecer; já aconteceu antes e provavelmente acontecerá novamente.
Erhannis 20/11
23

Às vezes, isso acontece porque o APT simplesmente não sabe nada sobre o que você está falando, mas isso pode ser resolvido executando:

sudo apt-get update

Depois de executar isso, normalmente o erro desaparece porque apte apt-getsei como fazer o que peço agora.

Wayne Workman
fonte
4
Você provavelmente significava apt-get updateseguido por apt-get upgrade -ycausa -yde confirmação bypasses usuário. Não faz sentido usá-lo com apt-get update. Mesmo assim, isso não responde à pergunta.
4
@ CelticWarrior: Eu concordo com esta resposta em princípio porque a atualização das informações do repositório de pacotes pode resolver esse problema se tentar instalar um pacote de um PPA adicionado recentemente e se esquecer de executar apt-get update.
David Foerster
7
@ user589808 Acho que não é um conselho muito bom. Uma atualização do apt-get não é necessária e pressionar cegamente -y para tudo pode quebrar mais coisas do que consertar. então wayne estava correto na sua sintaxe.
22717 louca legal
1
apt-get updateresponde à pergunta AB (o pacote existe no repo, mas apt-get installe apt-cachenão sei sobre isso.)
dcorking
1
Para chegadas posteriores, os comentários acima discutem uma versão mais antiga desta resposta. A resposta atual sudo apt-get updateestá livre de controvérsias e foi a solução correta para mim.
Daryn