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 .deb
file 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-cache
può mostrare sia i pacchetti installati che quelli non installati, perché interroga la apt
cache - 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 ( -f
opzione più -W
azione). 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-query
può anche prendere il modello glob come argomento e, a seconda della presenza di assenza, mostra solo i pacchetti installati / configurati o tutti i pacchetti.