"Ma viene indicato da un altro pacchetto". - Trovare quel pacchetto


24

Non è insolito per un utente Ubuntu (o altra distro con gestione dei pacchetti apt) riscontrare l'errore:

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

Sono state poste diverse domande al riguardo su vari siti StackExchange, ad esempio openvpn su AskUbuntu, ma si tratta generalmente di come ottenere il pacchetto specifico nonostante l'errore.

Non ho trovato alcun pacchetto che non si trova semplicemente (anche se non sempre facilmente) determinando se è ancora distribuito, e in quale repository se è così, e assicurando che il repository sia in apt.sources, o il peggio arriva al peggio scaricando un .deb o sorgente da compilare.

Quindi la mia domanda è più generale, e anche se immagino abbia una risposta piuttosto semplice e quindi non entusiasmante, non riesco a pensare a come trovarla con i metodi dei motori di ricerca convenzionali, quindi mi rivolgo a AskUbuntu: c'è un comando o un'opzione che posso utilizzare per determinare quale pacchetto / quali pacchetti fanno riferimento al pacchetto mancante?

Risposte:


13

Puoi cercare il pacchetto con apt-cache:

apt-cache search x

Questo produrrà tutti i pacchetti che in un modo o nell'altro fanno riferimento a x.


2
Bene, sembra ragionevole ... tranne per il fatto che non funziona per me. apt-get install libtinfo6rapporti non disponibili ma a cui fa riferimento un altro pacchetto, ma apt-cache search libtinfo6non produce risultati. C'è un altro modo di fare una cosa simile?
Erhannis

@Erhannis 'terminfo' fa emergere qualcosa? Penso che a volte questo errore si presenti quando un pacchetto viene rinominato in modo sciatto.
Arlo James Barnes,

Non ne sono sicuro. Ho aggiornato alla prossima versione di Debian e apparentemente quel pacchetto non dà più quell'errore. Ci proverò terminfola prossima volta, però; è successo prima e probabilmente accadrà di nuovo.
Erhannis,

23

A volte questo accade perché APT non sa proprio di cosa stai parlando, ma ciò può essere risolto eseguendo:

sudo apt-get update

Dopo aver eseguito questo, in genere l'errore scompare perché apte apt-getsapere come fare ciò che chiedo ora.


4
Probabilmente intendevi apt-get updateseguita da apt-get upgrade -yperché -yignora la conferma dell'utente. Non ha senso usarlo con apt-get update. Anche così, questo non risponde affatto alla domanda.

4
@CelticWarrior: Sono d'accordo con questa risposta in linea di principio perché l'aggiornamento delle informazioni sul repository dei pacchetti può risolvere questo problema se si tenta di installare un pacchetto da un PPA aggiunto di recente e si è dimenticato di eseguire apt-get update.
David Foerster,

7
@ user589808 Non penso che sia un ottimo consiglio. Non è necessario un aggiornamento apt-get e colpire ciecamente -y a tutto ciò può rompere più cose di quante ne risolva. così Wayne era corretto nella sintassi alta.
figata pazzesca

1
apt-get updaterisponde alla domanda AB (il pacchetto esiste nel pronti contro termine, ma apt-get installe apt-cachenon so su di esso.)
dcorking

1
Per gli arrivi successivi, i commenti sopra illustrano una versione precedente di questa risposta. La risposta attuale sudo apt-get updateè priva di controversie ed è stata la soluzione giusta per me.
Daryn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.