ฉันใช้ apt-cache pkgname เพื่อดึงแพ็คเกจเป็น
me@host:~$ apt-cache pkgnames | wc -l
62803
รับ 62803 ผลลัพธ์
แต่
me@host:~$ dpkg -l | wc -l
2336
อะไรคือสาเหตุที่ทำให้เกิดความแตกต่างอย่างมาก ฉันคิดว่า dpkg นั้นดีกว่าฉลาด
ฉันใช้ apt-cache pkgname เพื่อดึงแพ็คเกจเป็น
me@host:~$ apt-cache pkgnames | wc -l
62803
รับ 62803 ผลลัพธ์
แต่
me@host:~$ dpkg -l | wc -l
2336
อะไรคือสาเหตุที่ทำให้เกิดความแตกต่างอย่างมาก ฉันคิดว่า dpkg นั้นดีกว่าฉลาด
คำตอบ:
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 สามารถใช้เป็น front-end ถึง dpkg-deb (1) และ dpkg-query (1) รายการของการกระทำที่ได้รับการสนับสนุนสามารถพบได้ในภายหลังในส่วนการกระทำ หากพบการกระทำใด ๆ dpkg เพียงแค่เรียกใช้ dpkg-deb หรือ dpkg-query ด้วยพารามิเตอร์ที่กำหนด แต่ปัจจุบันยังไม่มีตัวเลือกที่เฉพาะเจาะจงถูกส่งไปยังพวกเขาเพื่อใช้ตัวเลือกใด ๆ เช่น back-end จำเป็นต้องถูกเรียกโดยตรง
เท่าที่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
ยังสามารถใช้รูปแบบ glob เป็นอาร์กิวเมนต์และขึ้นอยู่กับการขาดงานของมันแสดงเฉพาะแพคเกจติดตั้ง / กำหนดค่าหรือแพคเกจทั้งหมด
dpkg -l แสดงเวอร์ชันแพ็คเกจที่ติดตั้งของคุณ (เริ่มต้นด้วย ii), เวอร์ชันที่ถูกลบ (rc), และอื่น ๆ (เช่นติดตั้ง แต่ไม่ได้กำหนดค่า, ดู manpage)
apt-cache pkgnames แสดงชื่อแพ็กเกจที่มีอยู่ทั้งหมด (แต่ไม่ใช่เวอร์ชันของแพ็กเกจเดียวกัน) ในที่เก็บที่เพิ่ม