Различие между способным кэшем и dpkg-l

Я использую способный кэш pkgname для получения пакетов как

me@host:~$ apt-cache pkgnames | wc -l
62803

получите 62 803 результата

но

me@host:~$ dpkg -l | wc -l
2336

Что является причинами, которые приводят такое огромное различие. Я предполагаю, что dpkg супер, чем склонный.

9
задан 11 March 2019 в 22:16

2 ответа

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 может также взять шаблон шарика в качестве аргумента, и в зависимости от присутствия отсутствия его показывают, только установил/настроил пакеты или все пакеты.

16
ответ дан 23 November 2019 в 04:50

dpkg-l показывает Ваши установленные версии пакета (запускающийся с ii), удаленные (дистанционное управление) и некоторые другие (например, установленный, но не настроенный, см. страницу справочника).

способный кэш pkgnames показывает Вам все доступные имена пакета (но не версии того же пакета) в добавленных репозиториях.

2
ответ дан 23 November 2019 в 04:50

Другие вопросы по тегам:

Похожие вопросы: