Perbedaan antara apt-cache dan dpkg -l

9

Saya menggunakan pkgname apt-cache untuk mengambil paket sebagai

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

dapatkan 62803 hasil

tapi

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

Apa alasan yang menyebabkan perbedaan besar. Saya berasumsi bahwa dpkg lebih dari sekadar apt.

Alice
sumber
2
Kemungkinan duplikat dari dpkg-query vs apt-cache
Olorin
@Olorin Saya memilih untuk Biarkan pertanyaan ini Terbuka. Mereka duplikat baik-baik saja, tetapi saya ingin arah duplikasi dibalik dan dpkg-query vs apt-cache ditutup sebagai duplikat dari pertanyaan ini sebagai gantinya.
karel

Jawaban:

16

aptadalah untuk mengelola repositori jarak jauh, dpkg- untuk paket yang diinstal secara lokal. Mereka terkait. aptadalah ujung depan untuk dpkg. Ketika Anda menjalankannya apt-get install packagemendapat .debfile, dan menginstalnya melalui dpkg. Jadi jumlahnya berbeda karena ada banyak paket yang tersedia, tetapi hanya sebagian kecil yang diinstal secara lokal pada sistem Anda.

apt-cachedapat menampilkan paket yang diinstal dan yang tidak diinstal, karena ia menanyakan aptcache - daftar apa yang tersedia di repositori jarak jauh (cache itu adalah apa yang Anda dapatkan ketika Anda melakukannya apt-get update). Contohnya,

$ apt-cache policy terminator
terminator:
  Installed: (none)
  Candidate: 1.91-1


$ dpkg -l terminator
dpkg-query: no packages found matching terminator

Perhatikan bahwa ada alat lain yang dapat meminta daftar paket lokal yang diinstal / dihapus, dan itu dpkg-query. Contohnya,

$ 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

Sesuai manual dpkg

dpkg juga dapat digunakan sebagai front-end ke dpkg-deb (1) dan dpkg-query (1). Daftar tindakan yang didukung dapat ditemukan nanti di bagian TINDAKAN. Jika tindakan semacam itu ditemui, dpkg hanya menjalankan dpkg-deb atau dpkg-query dengan parameter yang diberikan padanya, tetapi saat ini tidak ada opsi khusus yang diberikan kepada mereka, untuk menggunakan opsi tersebut, back-end perlu dipanggil secara langsung.

Sejauh ini dpkg-query, perlu dicatat bahwa alat ini difokuskan pada pencarian basis data paket yang diinstal, dan dapat menampilkan informasi dalam format tertentu ( -fopsi plus -Wtindakan). Contohnya,

$ 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
---

Yang cukup menarik, basis data dpkg mengelola daftar paket yang dipilih untuk dihapus atau dihapus di beberapa titik . dpkg-queryjuga dapat mengambil pola glob sebagai argumen, dan tergantung pada tidak adanya itu hanya menunjukkan paket yang diinstal / dikonfigurasi atau semua paket.

Sergiy Kolodyazhnyy
sumber
2

dpkg -l menunjukkan versi paket Anda yang terinstal (dimulai dengan ii), yang dihapus (rc), dan beberapa lainnya (misalnya diinstal tetapi tidak dikonfigurasi, lihat halaman manual).

apt-cache pkgnames menunjukkan kepada Anda semua nama paket yang tersedia (tetapi bukan versi dari paket yang sama) di repositori yang ditambahkan.

Nyos
sumber