Я использую способный кэш pkgname для получения пакетов как
me@host:~$ apt-cache pkgnames | wc -l
62803
получите 62 803 результата
но
me@host:~$ dpkg -l | wc -l
2336
Что является причинами, которые приводят такое огромное различие. Я предполагаю, что dpkg супер, чем склонный.
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-запрос (1). Список поддерживаемых действий может быть найден позже в разделе ACTIONS. Если с каким-либо таким действием встречаются, dpkg просто выполняет dpkg-deb или dpkg-запрос с параметрами, данными ему, но никакие определенные опции в настоящее время не передаются им, для использования любой такой опции, которой бэкенды нужно назвать непосредственно.
До 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
может также взять шаблон шарика в качестве аргумента, и в зависимости от присутствия отсутствия его показывают, только установил/настроил пакеты или все пакеты.
dpkg-l показывает Ваши установленные версии пакета (запускающийся с ii), удаленные (дистанционное управление) и некоторые другие (например, установленный, но не настроенный, см. страницу справочника).
способный кэш pkgnames показывает Вам все доступные имена пакета (но не версии того же пакета) в добавленных репозиториях.