apt
é para gerenciar repositórios remotos, dpkg
- para pacotes instalados localmente. Eles são parentes. apt
é front end para dpkg
. Quando você executa, apt-get install package
ele obtém o .deb
arquivo e o instala via dpkg
. Portanto, os números diferem porque há muitos pacotes disponíveis, mas apenas uma fração é instalada localmente no seu sistema.
apt-cache
pode mostrar pacotes instalados e não instalados, porque consulta o apt
cache - listando o que está disponível em repositórios remotos (esse cache é o que você obtém quando faz apt-get update
). Por exemplo,
$ apt-cache policy terminator
terminator:
Installed: (none)
Candidate: 1.91-1
$ dpkg -l terminator
dpkg-query: no packages found matching terminator
Observe que há outra ferramenta que pode consultar a lista de pacotes locais instalados / removidos, e é isso dpkg-query
. Por exemplo,
$ 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
Conforme manual do dpkg
O dpkg também pode ser usado como front-end para o dpkg-deb (1) e o dpkg-query (1). A lista de ações suportadas pode ser encontrada posteriormente na seção AÇÕES. Se alguma ação desse tipo for encontrada, o dpkg executará o dpkg-deb ou o dpkg-query com os parâmetros fornecidos, mas nenhuma opção específica atualmente seja passada a eles. Para usar qualquer opção, os back-ends precisam ser chamados diretamente.
Na medida do possível dpkg-query
, deve-se notar que essa ferramenta está focada na consulta ao banco de dados de pacotes instalados e pode gerar informações em um formato específico ( -f
opção mais -W
ação). Por exemplo,
$ 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
---
Curiosamente, o banco de dados dpkg mantém a lista de pacotes selecionados para remoção ou que foram removidos em algum momento . dpkg-query
também pode considerar o padrão glob como argumento e, dependendo da presença de ausência, mostrar apenas pacotes instalados / configurados ou todos os pacotes.