आश्रित पैकेज (रिवर्स निर्भरता) को कैसे सूचीबद्ध करें?


201

दिए गए पैकेज की स्थापना के कारण अनुसंधान के लिए, मैं उन पैकेजों की एक सूची प्राप्त करना चाहता हूं जो उस पैकेज पर निर्भर करते हैं। मुझे इसमें कुछ भी स्पष्ट नहीं मिला man dpkg



5
पुराने प्रश्न के उत्तर चारों ओर घूमते हैं aptitude, कुछ ऐसा जो वर्षों से डिफ़ॉल्ट रूप से स्थापित नहीं किया गया है। 2017 में, उबंटू में अभी भी सभी के पास है apt-cache। जो कोई भी जुड़े हुए प्रश्न का अनुसरण करता है, वह किसी प्रोग्राम के बारे में चर्चा में खो जाता है।
लैम्बर्ट

जवाबों:


252

apt-cache rdepends packagename आपको जो चाहिए वो करना चाहिए


1
अति उत्कृष्ट! apt-cache rdepends tofrodosइस संदेह की पुष्टि की कि यह एक और पैकेज (obsoleted dos2unix) द्वारा स्थापित किया गया था ।
l0b0

2
आज तक (उपयुक्त संस्करण 0.9.9.1) के लिए, --recurse विकल्प है जो rdepends के साथ काम करता है।
जारनो

43
यदि आप जोड़ते हैं --installed, तो आउटपुट उन पैकेजों के लिए भी उपयोगी है, जिनका उपयोग कई अन्य लोग कर सकते हैं:apt-cache rdepends --installed packagename
quazgar

2
थोड़ा अलग सिंटैक्स है जिसने मुझे सिफारिशें, निर्भरता, सलाह आदि के बीच अंतर करने में मदद की, सिंटेक्स है sudo apt rdepends packagename(ध्यान दें कि यह apt-cache का उपयोग नहीं कर रहा है लेकिन केवल उपयुक्त है)
Vahid Pazirandeh

4
आउटपुट के लिए, क्यों कुछ पैकेजों में उनके सामने एक ऊर्ध्वाधर बार (पाइप का प्रतीक) होता है?
वाहिद पजीरंदेह

62

अभिवृत्ति के पास इसे संभालने का एक अच्छा तरीका है:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)

डिफ़ॉल्ट रूप से, यह केवल "सबसे स्थापित, सबसे मजबूत, सबसे मजबूत, सबसे छोटा" कारण को सूचीबद्ध करता है, लेकिन आप इसका उपयोग aptitude -v whyकर इसे सब कुछ प्राप्त कर सकते हैं ।


4
ऐसा लगता है कि यह केवल स्थापित पैकेज मानता है, सब कुछ उपलब्ध नहीं है। और यही मुझे चाहिए था।
तुक्का मुस्तोनन

3
उस के लिए आप चाहते हैं reverse-dependsमेंubuntu-dev-tools
tumbleweed

डेबियन के बारे में कैसे?
तुकाका मस्टोनन

1
ubuntu-dev-toolsडेबियन में है
tumbleweed

यह भी खूब रही। मैंने सीखा है कि एक हेडलेस सर्वर पर openssh-server अनुशंसित (और इसलिए स्थापित) एक महीने xauthमें सैकड़ों x11 निर्भरता और दर्जनों बेकार अपडेट को खींच रहा है । स्वचालित पैकेज प्रबंधन के साथ यही समस्या है!
बेसजेन

18
apt-cache showpkg <pkgname> 

उदाहरण:

apt-cache showpkg lightdm

वर्तमान सिंटैक्सapt showpkg <pkgname>
l --marc l

16

एक से अधिक तरीके हैं, जिसमें प्रत्येक विधि एक अलग आउटपुट दिखाती है।

पूर्ण रिवर्स डिपेंडेंसी ट्री के विस्तृत दृश्य के लिए;

aptitude install apt-rdepends
apt-rdepends -r bash

वैकल्पिक रूप से,

apt-cache showpkg bash

या संक्षिप्त सूची:

apt-cache rdepends bash

वास्तव rdependsमें उस पेड़ में क्या दिखाई देता है? apt-rdepends php7.0-fpmदिखाता है sedsedPHP पर निर्भर नहीं करता है, अकेले PHP FPM चलो।
दानस्केलस्कु

यह रिवर्स निर्भर करता है, इसका मतलब है कि PHP sed पर निर्भर करता है।
एरिक बर्कुन-ड्रेवनिग

1
हाय दोस्तों, वास्तव में "apt-rdepends" "पुनरावर्ती निर्भरता" के लिए खड़ा है। यदि आप रिवर्स पुनरावर्ती निर्भरता चाहते हैं, तो आपको टाइप करना होगा:apt-rdepends -r yourPackageNameHere
SebMa

Apt-कैश मैन पेज कहता है "rdepends प्रत्येक रिवर्स निर्भरता की एक सूची दिखाता है जो एक पैकेज में है"। जबकि apt-rdepends को-निर्भर विकल्प के लिए रिवर्स निर्भरता करने की आवश्यकता होती है, जैसा @SebMa कहता है।
नीलजी

8

सबसे सरल विकल्प अभी भी है:

apt rdepends package-name

जिसे आपको किसी भी पैकेज को स्थापित करने की आवश्यकता नहीं है।


1
स्वीकृत उत्तर के लिए यह क्या जोड़ रहा है?
l0b0

2
स्वीकृत उत्तर का इससे कोई लेना-देना नहीं है। आउटपुट पूरी तरह से अलग है और मानव-उपभोग के लिए apt-cache की तुलना में अधिक उपयोगी है। उत्तर में उल्लेख किया गया है कि apt-cache डिफ़ॉल्ट रूप से हर जगह स्थापित नहीं होता है - कि अकेले एक अच्छा संकेत होना चाहिए कि इस उत्तर का उद्देश्य क्यों है। अंत में, यह वास्तव में वह उत्तर है जिसकी मुझे तलाश थी, इसलिए कोई भी गिरावट मूर्खतापूर्ण है।
स्टीफनक्ट

स्वीकृत संस्करण की तुलना में बेहतर होने का एक बहुत महत्वपूर्ण कारण यह है कि इसमें एस आउटपुट के विपरीत निर्भरता का संस्करण शामिल है apt-cache। यह ठीक है कि मैं अभी क्या जरूरत है (एक glibc 2.28 असंगतता, इतनी upvoting डिबगिंग)
प्रति लुंडबर्ग

सिर्फ उपयुक्त का उपयोग करने के लिए upvote। मूल उत्तर के समय, मुझे यकीन नहीं है कि यह उपयुक्त समाधान मान्य होगा, लेकिन अगर यह अब है, तो यह अच्छा है।
रोबॉटहूमंस

7

अन्य अच्छे उत्तरों के अलावा, एक APT / APT-GET -sएक "सिम्युलेटेड" हटाने (या स्थापित) करता है।

sudo apt -s remove <pkgname>

पैकेजों का उपयोग करना -sया --simulatedनिकालना (या स्थापित करना), आमतौर पर प्रभावित होने वाली किसी भी निर्भरता को सूचीबद्ध करेगा। यह अनाथ जाएगा दिखाने संकुल जब निकालने या उसकी जरूरत निर्भरता जब वास्तव में क्रियान्वित करने के बिना स्थापित करने installया remove। केवल सूचनात्मक।


apt remove -s php7.0-fpmदिखाता है The following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0। अगर मैं PHP FPM को हटाता हूं तो अपाचे क्यों स्थापित किया जाएगा?
Dan Dascalescu

@DanDascalescu हम्म। Apt pkg के लिए एक खराब इंस्टॉलेशन / रिमूवल स्क्रिप्ट हो सकती है या हो सकता है कि आपके पास कुछ अन्य निर्भरताएँ हों जो Apache2 को dep के रूप में स्थापित करती हैं (जिसका अर्थ है कि वेबसर्वर की आवश्यकता है - और मेरा मानना ​​है कि apache2 डिफ़ॉल्ट वेब सर्वर है)। कुछ चीजें हो सकती हैं। बस यकीन नहीं होता। यदि आपको उत्तर नहीं मिला है, तो AskUbuntu पर एक अच्छी पोस्ट की गंध है।
बशीषा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.