Come faccio a sapere da quale archivio proviene un pacchetto?


147

Esiste un metodo o un comando che può dire da quale repository proviene un pacchetto?


1
Questo è ambiguo. Intendi: quali repository attualmente abilitati forniscono un pacchetto con il nome specificato oppure: quale repository è stato utilizzato per installare il pacchetto con quel nome attualmente installato? (Entrambi sono utili. Sto cercando il secondo, non il primo.)
Reinier Post,

Risposte:


112

Comandi necessari:

  • dpkg -s <package>- ti permette di trovare la versione che hai installato. ( fonte )
  • apt-cache showpkg <package>- mostrerà un elenco di versioni del pacchetto disponibili. Per ogni versione, verrà fornito l'origine del pacchetto, sotto forma di un nome di file indice.

Se vuoi trovare l'origine del pacchetto attualmente installato, avrai bisogno dell'output di dpkg -s <package>. Altrimenti, puoi semplicemente guardare l'output della versione più recente di apt-cache showpkg <package>.

Esempio:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Dal primo comando, vedo che è installata la versione 1.6.2-1ubuntu6 di Liferea. Dal secondo comando, posso vedere che quella versione è elencata in /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Senza troppa fatica, posso dedurre che la linea di origine contiene archive.ubuntu.com, ubuntu, lucid, e main.

E, abbastanza sicuro, il mio /etc/apt/sources.listcontiene la seguente riga.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse

mac, grazie per la risposta dettagliata! Sfortunatamente non mi aiuta con il mio problema iniziale di un problema di dipendenza non soddisfatto :-( Sto cercando di installare libqt4-opengl e dice: I seguenti pacchetti hanno dipendenze non soddisfatte: libqt4-opengl: Dipende: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) ma 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 deve essere installato Dipende: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) ma 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 deve essere installato
dfme

Da questo è difficile capire quale sia il problema. È necessario aprire una nuova domanda in modo da poter fornire tutti i dettagli. Se lo fai, lascia un link in un commento. :-)
Michael Crenshaw,

4
apt-cache policy <package name>(da: superuser.com/a/236605/37279 )
franzlorenzon

Apt-cache {showpkg, policy} mostra effettivamente da dove è stato installato un pacchetto installato o da dove verrebbe installato al momento della query?
Croad Langshan,

1
L'ultimo. Se utilizzo generalmente i trustysorgenti del pacchetto Ubuntu , quindi aggiungo temporaneamente utopical mio sources.listper installare la versione 1.20ubuntu3 init-system-helperse quindi rimuovo nuovamente il repository dal mio sources.list, mentirò apt-cache showpkg init-system-helperssolo sull'elenco dei pacchetti originale e apt-cache policy init-system-helpersdichiarerà l'ovvio.
Blubberdiblub,

104

Usa il seguente comando. Ha un output migliore:

apt-cache policy <Package Name>

Per Ubuntu 16.04 e versioni successive esiste un modo più breve per farlo:

apt policy <Package Name>

11
Questa è la risposta corretta! I comandi nella risposta di mac9416 necessitano di noiose interpretazioni + ipotesi basate sul loro output. Per ulteriori informazioni, apt-cache policyconsultare anche superuser.com/a/236605/61370
pabouk,

3
apt-cache policyè buono ma alcune volte è necessario apt-cache showpkgconfrontare le somme MD5 dal pacchetto. Vedi anchedebsums --changed
gavenkoa il

questa policyopzione è la più utile se confrontata consources.list
infinite-etcetera il

Questa dovrebbe essere la risposta accettata! @pabouk ha ragione. Questa risposta è più pertinente alla domanda rispetto a quella attualmente accettata.
HEXcube,

Come ha sottolineato @ pablo-bianchi nella sua risposta , è apt policy <package-name>possibile utilizzarne uno ancora più semplice , a partire dal 16.04LTS. Una volta che 14.04LTS è diventato EOL nel 2018, questa risposta potrebbe essere modificata per utilizzare il comando più recente.
HEXcube,

9

apt su Ubuntu 16.04+

Accanto apt-cache policy, showpkge show, ora abbiamo un sottocomando più semplice, facile da ricordare: apt(non confondere con il classico apt-*):

apt policy <package> 

Oppure l'alternativa con più informazioni apt show <package>, linea che inizia con "Fonti APT:" .

Descrizione: questo pacchetto fornisce strumenti da riga di comando per la ricerca e la gestione, nonché per la ricerca di informazioni sui pacchetti come accesso di basso livello a tutte le funzionalità della libreria libapt-pkg. Questi includono: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Comandi di base da apt --help

Altri sottocomandi facili da ricordare:

  • apt list - elenca i pacchetti in base ai nomi dei pacchetti
  • apt search - cerca nelle descrizioni dei pacchetti
  • apt show - mostra i dettagli del pacchetto
  • apt update - aggiorna l'elenco dei pacchetti disponibili
  • apt install - installa pacchetti
  • apt remove - rimuovere i pacchetti
  • apt purge- rimuovere pacchetti e file di configurazione :

    La rimozione di un pacchetto rimuove tutti i dati compressi, ma in genere lascia dietro di sé file di configurazione utente (modificati) di piccole dimensioni, nel caso in cui la rimozione sia stata un incidente. In questo caso, solo l'emissione di una richiesta di installazione per il pacchetto rimosso accidentalmente ripristinerà la sua funzione. D'altra parte puoi sbarazzarti di questi resti chiamando l'eliminazione anche sui pacchetti già rimossi. Si noti che ciò non influisce su alcun dato o configurazione archiviati nella home directory.

  • apt upgrade - aggiorna il sistema installando / aggiornando i pacchetti

  • apt full-upgrade - aggiorna il sistema rimuovendo / installando / aggiornando i pacchetti
  • apt edit-sources - modifica il file delle informazioni di origine

apt policy xxxsembra identico a apt-cache policy xxx, forse avrebbe dovuto essere invece un commento. O almeno menzionate che apt showsembra aver bisogno del -apassaggio per vedere "record aggiuntivi" da altre fonti
Xen2050,

6

Purtroppo, queste informazioni non vengono registrate durante l'installazione del pacchetto. Puoi fare un'ipotesi decente se il repository è ancora nell'elenco dei sorgenti e il repository ha ancora il pacchetto:

grep -l PKG /var/lib/apt/lists/*

Perfino Synaptic non può dire se disabiliti il ​​repository e aggiorni.


4
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

fonte


1

Questo è un po 'più preciso:

apt-cache show <packagename> | grep "Version:"

La versione più recente verrà in genere installata a meno che non sia stata impostata la funzione di blocco apt o l'installazione esplicita di una versione particolare.

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.