aptsert à gérer les référentiels distants, dpkg- pour les packages installés localement. Ils sont liés. aptest l'extrémité avant dpkg. Lorsque vous l'exécutez, apt-get install packageil obtient le .debfichier 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-cachepeut afficher les packages installés et non installés, car il interroge le aptcache - 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 ( -foption plus -Waction). 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-querypeut é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.