Apt-cache और dpkg -l के बीच अंतर


9

मैं संकुल को पुनः प्राप्त करने के लिए apt-cache pkgname का उपयोग करता हूँ

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

62803 परिणाम प्राप्त करें

परंतु

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

ऐसे कौन से कारण हैं जो इतना बड़ा अंतर पैदा करते हैं। मुझे लगता है कि dpkg उपयुक्त से अधिक है।


2
Dpkg

@ ऑरलिन मैंने इस प्रश्न को छोड़ने के लिए मतदान किया। वे ठीक से डुप्लिकेट कर रहे हैं, लेकिन मैं चाहता हूं कि डुप्लिकेट की दिशा उलट जाए और dpkg-query बनाम apt-cache को इस प्रश्न के डुप्लिकेट के रूप में बंद किया जाए।
कारेल

जवाबों:


16

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-query चलाता है, लेकिन वर्तमान में कोई भी विशिष्ट विकल्प उन्हें नहीं दिया जाता है, ऐसे किसी भी विकल्प का उपयोग करने के लिए बैक-एंड को सीधे कॉल करने की आवश्यकता होती है।

जहां तक 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एक तर्क के रूप में ग्लोब पैटर्न भी ले सकते हैं, और यह अनुपस्थिति की उपस्थिति के आधार पर केवल स्थापित / कॉन्फ़िगर किए गए पैकेज या सभी पैकेज दिखाते हैं।


2

dpkg -l आपके स्थापित पैकेज संस्करण (ii से शुरू), हटाए गए (आरसी), और कुछ अन्य (उदाहरण के लिए, लेकिन कॉन्फ़िगर नहीं किए गए, मैनपेज देखें) दिखाता है।

apt-cache pkgnames आपको जोड़े गए रिपॉजिटरी में सभी उपलब्ध पैकेज नाम (लेकिन एक ही पैकेज के संस्करण नहीं) दिखाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.