Distinzione tra apt-cache e dpkg -l


9

Uso apt-cache pkgname per recuperare i pacchetti come

me@host:~$ apt-cache pkgnames | wc -l
62803

ottenere 62803 risultati

ma

me@host:~$ dpkg -l | wc -l
2336

Quali sono i motivi che portano a una così grande distinzione. Presumo che dpkg sia super che apt.


2
Possibile duplicato di dpkg-query vs apt-cache
Olorin

@Olorin Ho votato per lasciare aperta questa domanda. Sono duplicati, ma desidero invertire la direzione della duplicazione e chiudere invece dpkg-query vs apt-cache come duplicato di questa domanda.
karel,

Risposte:


16

aptè per la gestione dei repository remoti, dpkg- per i pacchetti installati localmente. Sono imparentati. aptè front-end a dpkg. Quando lo esegui apt-get install package, ottiene il .debfile e lo installa tramite dpkg. Quindi i numeri differiscono perché ci sono molti pacchetti disponibili, ma solo una frazione è installata localmente sul tuo sistema.

apt-cachepuò mostrare sia i pacchetti installati che quelli non installati, perché interroga la aptcache - elenco di ciò che è disponibile nei repository remoti (quella cache è ciò che ottieni quando lo fai apt-get update). Per esempio,

$ apt-cache policy terminator
terminator:
  Installed: (none)
  Candidate: 1.91-1


$ dpkg -l terminator
dpkg-query: no packages found matching terminator

Si noti che esiste un altro strumento che può interrogare l'elenco dei pacchetti locali installati / rimossi, e questo è tutto dpkg-query. Per esempio,

$ dpkg-query -l 'libc6'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version         Architecture    Description
+++-====================-===============-===============-=============================================
ii  libc6:amd64          2.27-3          amd64           GNU C Library: Shared libraries
ii  libc6:i386           2.27-3          i386            GNU C Library: Shared libraries

$ dpkg -l libc6
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version         Architecture    Description
+++-====================-===============-===============-=============================================
ii  libc6:amd64          2.27-3          amd64           GNU C Library: Shared libraries
ii  libc6:i386           2.27-3          i386            GNU C Library: Shared libraries

Come da manuale dpkg

dpkg può anche essere usato come front-end per dpkg-deb (1) e dpkg-query (1). L'elenco delle azioni supportate è disponibile più avanti nella sezione AZIONI. Se viene rilevata un'azione di questo tipo, dpkg esegue semplicemente dpkg-deb o dpkg-query con i parametri che gli sono stati assegnati, ma al momento non vengono passate loro opzioni specifiche, per usare una di queste opzioni è necessario chiamare direttamente i back-end.

Per quanto riguarda dpkg-query, va notato che questo strumento è focalizzato sull'interrogazione del database dei pacchetti installati e può produrre informazioni in un particolare formato ( -fopzione più -Wazione). Per esempio,

$ dpkg-query -W -f='PACK:${Package}\nARCH:${Architecture}\nSTAT:${Status}\n---\n' libc6
PACK:libc6
ARCH:amd64
STAT:install ok installed
---
PACK:libc6
ARCH:i386
STAT:install ok installed
---

È interessante notare che il database dpkg mantiene l'elenco dei pacchetti selezionati per la rimozione o che sono stati rimossi ad un certo punto . dpkg-querypuò anche prendere il modello glob come argomento e, a seconda della presenza di assenza, mostra solo i pacchetti installati / configurati o tutti i pacchetti.


2

dpkg -l mostra le versioni del pacchetto installato (a partire da ii), quelle rimosse (rc) e alcune altre (ad es. installate ma non configurate, consultare la manpage).

apt-cache pkgnames mostra tutti i nomi dei pacchetti disponibili (ma non le versioni dello stesso pacchetto) nei repository aggiunti.

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.