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-запит із заданими йому параметрами, але конкретні параметри їм зараз не передаються, щоб використовувати будь-який такий варіант, зворотні кінці потрібно викликати безпосередньо.
Що стосується цього 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
також може приймати глобальний шаблон як аргумент, і в залежності від наявності його відсутність показують лише встановлені / налаштовані пакети або всі пакунки.