मुझे कैसे पता चलेगा कि डेबियन सिस्टम पर एक वर्चुअल पैकेज "स्थापित" है या नहीं?


16

कुछ पैकेज, एक Provides:हेडर है। उदाहरण के लिए, postfixडेबियन व्हीज़ी पर पैकेज है Provides: mail-transport-agent

mail-transport-agentजो पैकेज भौतिक रूप से मौजूद नहीं है, उसे "वर्चुअल" पैकेज माना जाता है।

मुझे कैसे पता चलेगा, डेबियन आधारित प्रणाली पर, यदि एक दिया गया आभासी पैकेज "स्थापित" (या "प्रदान किया गया") है? क्या मैं प्रत्येक "प्रदान किए गए" वर्चुअल पैकेज को सूचीबद्ध कर सकता हूं?

संकेत : हर मौजूदा वर्चुअल पैकेज को सूचीबद्ध करने के लिए, स्थापित या नहीं, करें:aptitude search "~v"


1
मेरे पास इस समय एक डेबियन नहीं है, लेकिन एक सूखी-रन स्थापित काम नहीं करेगा?
jthill

जवाबों:


15

उपलब्ध कराने वाले संकुल को सूचीबद्ध करने के लिए mail-transport-agent:

$ aptitude search '~Pmail-transport-agent'
p   citadel-mta                     - complete and feature-rich groupware server
p   courier-mta                     - Courier mail server - ESMTP daemon        
p   dma                             - lightweight mail transport agent          
p   esmtp-run                       - user configurable relay-only MTA - the reg
p   exim4-daemon-heavy              - Exim MTA (v4) daemon with extended feature
p   exim4-daemon-light              - lightweight Exim MTA (v4) daemon          
p   masqmail                        - mail transport agent for intermittently co
p   msmtp-mta                       - light SMTP client with support for server 
p   nullmailer                      - simple relay-only mail transport agent    
i   postfix                         - High-performance mail transport agent     
p   sendmail-bin                    - powerful, efficient, and scalable Mail Tra
p   ssmtp                           - extremely simple MTA to get mail off the s
p   xmail                           - advanced, fast and reliable ESMTP/POP3 mai

कि बनाओ aptitude search '~Pmail-transport-agent ~i'केवल सूची में संकुल स्थापित (यदि हो तो)।

वर्तमान में स्थापित पैकेजों द्वारा प्रदान किए गए सभी आभासी पैकेजों को सूचीबद्ध करने के लिए:

aptitude search '~Rprovides:~i ~v'

खोज पैटर्न के स्पष्टीकरण के लिए योग्यता मैनुअल देखें ।


इस उत्तर को स्वीकार करना क्योंकि मानक का उपयोग करना है aptitude। मुझे @ umläute का स्पष्टीकरण पसंद है।
टॉटोर

डेबियन जेसी पर, मैं बस की कोशिश की aptitude search '~Pmysql-server ~i'जो देता है mariadb-server-10.0और mariadb-server-core-10.0है, लेकिन जब मैं करता हूँ aptitude search '~Rprovides:~i ~v', मैं नहीं दिख mysql-serverसूची में ... लेकिन, मैं देख पा रहे हैं virtual-mysql-client, virtual-mysql-client-core, virtual-mysql-serverऔर virtual-mysql-client-coreसूची में।
टॉटर


10

यहां समस्या यह है कि वर्चुअल पैकेज और अन्य पैकेज द्वारा प्रदान किए गए पैकेज के बीच एक सूक्ष्म अंतर है।

अंतर यह है, कि एक पैकेज एक वास्तविक पैकेज प्रदान कर सकता है , न केवल एक आभासी पैकेज।

किसी भी तरह, निम्नलिखित सभी पैकेजों की खोज करेगा जो एक पैकेज प्रदान करता है और पैकेज नाम और इसके द्वारा प्रदान किए जाने वाले पैकेज दोनों को प्रिंट करेगा:

grep-available -sPackage  -sProvides -FProvides -e '^.'

यह जानने के लिए कि क्या आपके सिस्टम पर कोई पैकेज स्थापित किया गया है जो किसी दिए गए (जैसे मेल-ट्रांसपोर्ट-एजेंट) का उपयोग करता है

grep-status -sPackage -sProvides -FProvides "mail-transport-agent"

3
नोट: कमांड grep-availableऔर पैकेज grep-statusउपलब्ध होने के बाद उपलब्ध हैं dctrl-tools
टॉटर

1

आप apt-cache showpkg <virtual>उम्मीदवार पैकेज की सूची प्रदर्शित करने के लिए और फिर उम्मीदवारों dpkg -l <canddate> <candidate> ...की स्थापना स्थिति प्रदर्शित करने के लिए किसी दिए गए वर्चुअल पैकेज की उपस्थिति का पता लगा सकते हैं ।

उदाहरण के लिए:

$ apt-cache showpkg awk
$ dpkg -l original-awk mawk gawk

यहाँ एक पूर्ण प्रिंटआउट है:

$ apt-cache showpkg awk
Package: awk
Versions: 

Reverse Depends: 
  base-files,awk
  base-files,awk
Dependencies: 
Provides: 
Reverse Provides: 
mawk:i386 1.3.3-17ubuntu2
gawk:i386 1:4.0.1+dfsg-2.1ubuntu2
original-awk 2012-12-20-1
mawk 1.3.3-17ubuntu2
gawk 1:4.0.1+dfsg-2.1ubuntu2

$ dpkg -l original-awk mawk gawk
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  gawk           1:4.0.1+dfsg amd64        GNU awk, a pattern scanning and p
ii  mawk           1.3.3-17ubun amd64        a pattern scanning and text proce
dpkg-query: no packages found matching original-awk

मेरा मानना ​​है कि dpkgऔर apt-cacheनिम्न स्तर के उपकरण हैं aptitude, grep-availableऔर grep-status। अपने विशेष आवश्यकताओं के आधार पर निचले स्तर के उपकरणों का उपयोग करना लाभ हो सकता है या नहीं भी हो सकता है।


-1

आप से आभासी संकुल के सभी प्राप्त कर सकते हैं आभासी पैकेज के नाम के आधिकारिक सूची । यह निर्धारित करने के लिए कि क्या कोई वर्चुअल पैकेज स्थापित किया गया है, मैं उपयोग करता हूं dpkg -lऔर यह तथ्य कि पैकेज स्थापित होने पर इसका 0 से बाहर निकलें कोड है और यदि स्थापित नहीं है तो 1 का निकास कोड।

dpkg -l mail-transport-agent &> /dev/null; echo $?

नहीं, यह काम नहीं करता है। dpkg -l mail-transport-agent0 वापस कर सकता है, भले ही कोई पैकेज उपलब्ध न कराए जो वर्तमान में स्थापित है। मुझे लगता है कि यह उपस्थिति पर आधारित है, /var/dpkg/lib/availableलेकिन मुझे यकीन नहीं है। मैंने dpkg -l fooएक पैकेज के लिए 1 रिटर्न की जांच की, जो मैंने कभी स्थापित नहीं किया है, लेकिन एक पैकेज के लिए 0 जो मैंने अभी-अभी शुद्ध किया है।
गिल्स एसओ- बुराई को रोकें '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.