मैं एक डिबेट पैकेज के लिए निर्भरता सूची कैसे देख सकता हूं


93

मैं एक डिबेट पैकेज के लिए निर्भरता सूची कैसे देख सकता हूं। मैं Ubuntu 11.10 चला रहा हूं और मैंने सभी डिबेट पैकेज का बैकअप ले लिया है var/cache/apt/archives। मैं अपने पीसी को प्रारूपित करना चाहता हूं और केवल चयनित एप्लिकेशन को फिर से इंस्टॉल कर सकता हूं। इसके अलावा मैं कैसे स्थापित संकुल और निर्भरता की सूची प्राप्त कर सकते हैं।


अपने दूसरे प्रश्न के लिए askubuntu.com/questions/17823/…
htorque

इंस्टॉल किए गए पैकेजों की पूरी सूची के लिए उपयोग करेंdpkg --get-selections | sed -n 's/[[:space:]]install$//p'
Tino

जवाबों:


72

dpkgविधि के अलावा , आप भंडार में संकुल की निर्भरता की जाँच कर सकते हैं:

apt-cache depends package-name

EDIT @ Tino की अनुशंसा के साथ अपडेट किया गया। @ तिगरान की टिप्पणी अब लागू नहीं होती है।


3
नोट: यह केवल तभी काम करता है जब पैकेज पहले से स्थापित हो।
तिगरान सालुवे

@TigranSaluev ध्यान दें कि dpkg -I packageकेवल स्थापित पैकेज के लिए काम करता है। apt-cacheउन सभी पैकेजों के लिए काम करता है जो आपके द्वारा किए जाने के बाद जाने जाते हैं apt-get update
टीनो

1
apt-cache depends packageएक बेहतर तरीका है, उस मामले में, जैसा कि showpkgयह नहीं बताता कि क्या निर्भरता एक सिफारिश, संघर्ष आदि है, इसलिए यह थोड़ा हैरान करने वाला है। एक स्क्रिप्ट जो करता है के लिए dependsके साथ संयुक्त showpkgदेखने unix.stackexchange.com/a/362866/23450
टीनो

100

यह आपको पैकेज के बारे में सारी जानकारी दिखाएगा:

dpkg -I package.deb

यह अब Ubuntu 14.04 पर काम नहीं करता है:dpkg -I splunkforwarder-6.3.3-f44afce176d0-linux-2.6-amd64.deb new debian package, version 2.0. size 15881308 bytes: control archive=3104 bytes. 153 bytes, 5 lines control 6058 bytes, 207 lines * postinst #!/bin/bash 2912 bytes, 93 lines * preinst #!/bin/bash Package: splunkforwarder Version: 6.3.3 Maintainer: Splunk Inc. <info@splunk.com> Architecture: amd64 Description: Splunk The platform for machine data.
क्रेग एस। एंडरसन

@ क्रेग्स। एंडरसन 14.04 रनिंग यहाँ और यह मेरे मामले में एकदम सही काम करता है। होना चाहिए जवाब स्वीकृत IMHO।
Magic_al

/var/cache/apt/archives/पैकेज नाम से पहले रखना न भूलें और संस्करण के साथ पूर्ण पैकेज नाम खोजने के लिए टैब पूरा करने का उपयोग करें dpkg -I /var/cache/apt/archives/elasticsearch_2.4.4_all.deb
जेसन आर। कोमब्स

1
मुझे कोई निर्भरता जानकारी नहीं
निक

आप यह जोड़ सकते हैं कि पैकेज को फिर से स्थापित किए बिना (पुनः) प्राप्त किया जा सकता है (जो संभवतः एक लोकप्रिय उपयोग मामला है) sudo apt-get install --reinstall --download-only [package name]
कार्ल रिक्टर

2

apt-cache depends [Package-Name]साथ ही काम करेगा। यद्यपि यदि आप .debअपनी स्रोत सूची के बाहर से पैकेज का स्रोत बनाते हैं, तो apt-cache showpkg [Package-Name] && apt-cache depends [Package-Name]पुरानी जानकारी जैसी चीजें वास्तविक स्थापित पैकेज के साथ सिंक हो सकती हैं या नहीं हो सकती हैं, इसलिए dpkg -I [Package-Name]उस स्थिति में सबसे अच्छा काम करेगा।


2

14.04 और बाद के लिए:

dpkg-Iकोई और अधिक नहीं है और आपको dpkg-debनिर्भरता सहित पैकेज की जानकारी दिखाने के लिए उपयोग करना होगा:

dpkg-deb -I package.deb

1
Hi Fabby, dpkg का वर्तमान में कोई विकल्प नहीं है। Ubuntu 12.04 और 16.04 पर परीक्षण किया गया। आपको इसके बजाय dpkg-deb का उपयोग करना होगा।
रूप नारायण

टिप्पणी वापस ली गई; उत्तर स्पष्ट और उत्कीर्ण
Fabby

0

यहाँ कुछ मैला है, और संभवतया बहुत प्रसंस्करण के बाद नहीं है आप dpkg -Iएक सूची के रूप में निर्भरता आइटम प्राप्त करने के लिए आउटपुट कर सकते हैं :

कंप्यूटर के लिए संघनित

# dpkg -I package.deb | python -c "import sys, re; t=re.split(r'\n(?= ?[\w]+:)|:', sys.stdin.read()); print '\n'.join([i.strip() for i in {key.strip(): value.strip() for key, value in zip(t[::2], t[1::2])}['Depends'].split(',')])"
#

मनुष्यों के लिए विस्तारित:

dpkg -I package.deb | python -c "
    import sys, re;
    # Split keys and values into pairs (zipped together later)
    t=re.split(
        r'\n(?= ?[\w]+:)|:', 
        sys.stdin.read()
    ); 
    # Newline separate each dependency
    print '\n'.join([
        # Trim each dependency value
        i.strip() for i in {
            # Build assoc array from package metadata
            key.strip(): value.strip() 
            for key, value in zip(t[::2], t[1::2])
        }['Depends'].split(',')
    ])
"

यह उन पैकेजों को प्रतिध्वनित करेगा जो 'foo.deb' पर निर्भर हैं और जिन्हें अभी स्थापित किया जाना है: dpkg -I foo.deb | i में $ (awk -F), '' / Depend: / {gsub (/: /, ","), के लिए (i = 2; i <= NF; i ++) {gsub (/। * $ /)। "", $ (i)); प्रिंटफ ("% s \ n", $ (i));}} '); dpkg -s $ i &> / dev / null || इको $ मैं; हो गया | tr '\ n' ''
ग्रेगरी बर्ड

@GregoryBurd, मेरे उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें / आप सभी को पसंद करें, मैंने इसे इस कारण से समुदाय विकि के रूप में पोस्ट किया है ^ u ^
ThorSummoner

जब मैं इस आदेश को इलास्टिक्स खोज पर चलाता हूं, तो यह निकलता है libc6\nadduser\n Installed-Size\n। यही है, यह सिर्फ डिपेंड्स लाइन से अधिक मेल खाता हुआ प्रतीत होता है।
जेसन आर। कोमब्स

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