apt
для управления удаленными репозиториями, dpkg
- для локально установленных пакетов. Они связаны. apt
это передний конец к dpkg
. При запуске apt-get install package
он получает .deb
файл и устанавливает его через dpkg
. Таким образом, цифры различаются, потому что доступно много пакетов, но в вашей системе локально установлена только часть.
apt-cache
может показывать как установленные, так и не установленные пакеты, потому что он запрашивает apt
кеш - список того, что доступно в удаленных репозиториях (этот кеш - это то, что вы получаете, когда делаете apt-get update
). Например,
$ apt-cache policy terminator
terminator:
Installed: (none)
Candidate: 1.91-1
$ dpkg -l terminator
dpkg-query: no packages found matching terminator
Обратите внимание, что есть другой инструмент, который может запрашивать список установленных / удаленных локальных пакетов, и это dpkg-query
. Например,
$ 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
Согласно инструкции dpkg
dpkg также можно использовать в качестве внешнего интерфейса для dpkg-deb (1) и dpkg-query (1). Список поддерживаемых действий можно найти позже в разделе ДЕЙСТВИЯ. Если встречается какое-либо подобное действие, dpkg просто запускает dpkg-deb или dpkg-query с заданными ему параметрами, но в настоящее время им не передаются никакие конкретные опции, чтобы использовать любую такую опцию, нужно напрямую вызывать серверные части.
В отношении dpkg-query
этого следует отметить, что этот инструмент ориентирован на запросы к базе данных установленных пакетов и может выводить информацию в определенном формате ( -f
опция плюс -W
действие). Например,
$ 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
---
Интересно, что база данных dpkg поддерживает список пакетов, которые были выбраны для удаления или были удалены в какой-то момент . dpkg-query
также может принимать шаблон glob в качестве аргумента и в зависимости от наличия его отсутствия показывать только установленные / настроенные пакеты или все пакеты.