Używam apt-cache pkgname do pobierania pakietów jako
me@host:~$ apt-cache pkgnames | wc -l
62803
uzyskać 62803 wyników
ale
me@host:~$ dpkg -l | wc -l
2336
Jakie są przyczyny tak ogromnego rozróżnienia. Zakładam, że dpkg jest super niż apt.
Używam apt-cache pkgname do pobierania pakietów jako
me@host:~$ apt-cache pkgnames | wc -l
62803
uzyskać 62803 wyników
ale
me@host:~$ dpkg -l | wc -l
2336
Jakie są przyczyny tak ogromnego rozróżnienia. Zakładam, że dpkg jest super niż apt.
Odpowiedzi:
aptsłuży do zarządzania zdalnymi repozytoriami, dpkg- dla lokalnie zainstalowanych pakietów. Są spokrewnieni. aptjest z przodu do dpkg. Po uruchomieniu apt-get install packagepobiera .debplik i instaluje go za pośrednictwem dpkg. Więc liczby różnią się, ponieważ dostępnych jest wiele pakietów, ale tylko część jest zainstalowana lokalnie w twoim systemie.
apt-cachemoże wyświetlać zarówno zainstalowane, jak i niezainstalowane pakiety, ponieważ odpytuje aptpamięć podręczną - wyświetla listę tego, co jest dostępne w zdalnych repozytoriach (ta pamięć podręczna jest tym, co dostajesz, gdy to robisz apt-get update). Na przykład,
$ apt-cache policy terminator
terminator:
Installed: (none)
Candidate: 1.91-1
$ dpkg -l terminator
dpkg-query: no packages found matching terminator
Zauważ, że istnieje inne narzędzie, które może sprawdzać listę zainstalowanych / usuniętych pakietów lokalnych, i to jest dpkg-query. Na przykład,
$ 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
Zgodnie z instrukcją dpkg
dpkg może być również używany jako interfejs do dpkg-deb (1) i dpkg-query (1). Lista obsługiwanych działań znajduje się później w sekcji DZIAŁANIA. W przypadku napotkania takiej akcji dpkg po prostu uruchamia dpkg-deb lub dpkg-query z podanymi parametrami, ale nie są do nich przekazywane żadne konkretne opcje, aby użyć takiej opcji, back-endy muszą zostać bezpośrednio wywołane.
Jeśli chodzi o dpkg-queryto, należy zauważyć, że to narzędzie koncentruje się na wyszukiwaniu w bazie danych zainstalowanych pakietów i może wyświetlać informacje w określonym formacie ( -fopcja plus -Wakcja). Na przykład,
$ 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
---
Co ciekawe, baza danych dpkg utrzymuje listę pakietów, które zostały wybrane do usunięcia lub zostały w pewnym momencie usunięte . dpkg-querymoże również przyjmować wzorzec glob jako argument, aw zależności od jego braku pokaż tylko zainstalowane / skonfigurowane pakiety lub wszystkie pakiety.
dpkg -l pokazuje zainstalowane wersje pakietu (poczynając od ii), usunięte (rc) i niektóre inne (np. zainstalowane, ale nieskonfigurowane, patrz strona podręcznika).
apt-cache pkgnames pokazuje wszystkie dostępne nazwy pakietów (ale nie wersje tego samego pakietu) w dodanych repozytoriach.