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.


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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.