apt
sert à gérer les référentiels distants, dpkg
- pour les packages installés localement. Ils sont liés. apt
est l'extrémité avant dpkg
. Lorsque vous l'exécutez, apt-get install package
il obtient le .deb
fichier et l'installe via dpkg
. Les nombres diffèrent donc car de nombreux packages sont disponibles, mais seule une fraction est installée localement sur votre système.
apt-cache
peut afficher les packages installés et non installés, car il interroge le apt
cache - liste de ce qui est disponible dans les référentiels distants (ce cache est ce que vous obtenez lorsque vous le faites apt-get update
). Par exemple,
$ apt-cache policy terminator
terminator:
Installed: (none)
Candidate: 1.91-1
$ dpkg -l terminator
dpkg-query: no packages found matching terminator
Notez qu'il existe un autre outil qui peut interroger la liste des packages locaux installés / supprimés, et c'est dpkg-query
. Par exemple,
$ 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
Selon le manuel du dpkg
dpkg peut également être utilisé comme interface pour dpkg-deb (1) et dpkg-query (1). La liste des actions prises en charge se trouve plus loin dans la section ACTIONS. Si une telle action est rencontrée, dpkg exécute simplement dpkg-deb ou dpkg-query avec les paramètres qui lui sont donnés, mais aucune option spécifique ne leur est actuellement transmise, pour utiliser une telle option, les back-ends doivent être appelés directement.
En ce qui concerne dpkg-query
, il convient de noter que cet outil est axé sur l'interrogation de la base de données des packages installés et peut produire des informations dans un format particulier ( -f
option plus -W
action). Par exemple,
$ 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
---
Chose intéressante, la base de données dpkg conserve la liste des packages sélectionnés pour être supprimés ou qui ont été supprimés à un moment donné . dpkg-query
peut également prendre le modèle glob comme argument et, selon sa présence ou son absence, afficher uniquement les packages installés / configurés ou tous les packages.