जवाबों:
आरपीएम विकल्प आप चाहते हैं:
rpm -q --whatrequires sqlite
संपादित: जोड़ा गया - अन्य उत्तरों / टिप्पणियों में प्रति चर्चा की स्थापना
संपादित: हटाया गया - यह rpm के लिए एक अमान्य विकल्प है
--installed
के लिए एक विकल्प है, repoquery
लेकिन इसके लिए अमान्य है rpm
।
repoquery -q --installed --whatrequires sqlite
rpm -q --whatrequires sqlite
केवल पैकेज नामों पर निर्भरता की रिपोर्ट करता है।
इसके विपरीत, repoquery
पालन के रूप में कार्य करता है (manpages से):
--alldeps
When used with --whatrequires, look for non-explicit dependencies in addition to explicit ones (e.g. files and Provides in addition to package names).
This is the default.
चलो पैकेज लेते हैं libdb
।
# rpm -q --whatrequires libdb
no package requires libdb
कोई भी पैकेज निर्भर नहीं करता है libdb
, इसलिए हमें इसे आसानी से निकालने में सक्षम होना चाहिए। हालाँकि...
# yum remove -y libdb
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package libdb.x86_64 0:5.3.21-19.el7 will be erased
--> Processing Dependency: libdb(x86-64) = 5.3.21-19.el7 for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: pam-1.1.8-12.el7_1.1.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-python-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: python-libs-2.7.5-39.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-devel-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-build-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: iproute-3.10.0-54.el7_2.1.x86_64
--> Running transaction check
. . .
. . .
. . .
Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected
जैसा कि आप देख सकते हैं कुछ अन्य पैकेज सीधे पैकेज पर निर्भर नहीं थे, लेकिन libdb-5.3.so()(64bit)
इसके द्वारा प्रदान की गई फ़ाइल पर ।
अंत में, यहाँ libdb
निम्न के आधार पर संकुल की वास्तविक सूची दी गई है :
# repoquery -q --installed --whatrequires libdb
cyrus-sasl-lib-0:2.1.26-20.el7_2.x86_64
iproute-0:3.10.0-54.el7_2.1.x86_64
libdb-utils-0:5.3.21-19.el7.x86_64
pam-0:1.1.8-12.el7_1.1.x86_64
postfix-2:2.10.1-6.el7.x86_64
python-libs-0:2.7.5-39.el7_2.x86_64
rpm-0:4.11.3-17.el7.x86_64
rpm-build-libs-0:4.11.3-17.el7.x86_64
rpm-devel-0:4.11.3-17.el7.x86_64
rpm-libs-0:4.11.3-17.el7.x86_64
rpm-python-0:4.11.3-17.el7.x86_64
Dnf (yum का नया संस्करण) के लिए आप रेपोवेरी रैपर कमांड के साथ प्रयास कर सकते हैं:
dnf repoquery --whatrequires sqlite
यदि यह उपलब्ध नहीं है, तो आप इसे कमांड के साथ स्थापित कर सकते हैं:
dnf -y install dnf-plugins-core
--installed --recursive
अंत में इसकी आवश्यकता है इसलिए यह केवल वही लौटाता है जो वास्तव में स्थापित है और रिपॉजिटरी से नहीं खींचता है
आप इस आदेश को भी आज़मा सकते हैं।
repoquery --whatrequires sqlite
मुझे यह कमांड सर्वरफॉल्ट से मिला और द फेडोरा फोरम से भी ।
मुझे लगता है कि आप वास्तव में जो जानना चाहते हैं वह है "वे कौन से पैकेज हैं जिनके लिए sqlite-3.3.6 की आवश्यकता होती है, लेकिन sqlite-3.4.z से खुश नहीं होंगे" ... और उस खोज का एकमात्र अच्छा तरीका है, कोशिश करो। पसंद:
echo | yum upgrade sqlite
जैसा कि वेस हार्डेकर ने कहा , एक अच्छा बिल्ट-इन तरीका है rpm -q --whatrequires <package>
। बात यह है कि निर्भरता संकल्प के लिए क्षमताओंrpm
पर काम करता है, न केवल संकुल पर, जैसा कि लिनक्स वितरण के डेबियन / उबंटू परिवार में होता है। जैसा कि अन्य ने उल्लेख किया है, बस करने से पूरी कहानी नहीं मिलती है , इसलिए कुछ का उपयोग करने का सुझाव दिया गया है । हालाँकि, आरएचईएल / सेंटोस 7 में डिफ़ॉल्ट रूप से स्थापित नहीं किया गया है 7 न्यूनतम (शायद डेस्कटॉप भी?), इसलिए यह सभी के लिए उपलब्ध नहीं हो सकता है।dpkg
rpm -q --whatrequires sqlite
repoquery
repoquery
एक उपयोगकर्ता उन rpm -q --provides <pkgname>
सभी क्षमताओं को देखने के लिए कर सकता है जो एक पैकेज प्रदान करता है, फिर rpm -q --whatrequires <capability>
यह देखने के लिए कि कौन से संस्थापित संकुल को उस क्षमता की आवश्यकता है। इस जानकारी को BASH वन-लाइनर (लंबाई के लिए यहां दो लाइनों में अलग किया गया) का उपयोग करके सफलतापूर्वक पूरा किया जा सकता है:
capabilities=($(rpm -q --provides sqlite | awk -F= '{print $1}'));
for c in "${capabilities[@]}"; do rpm -q --whatrequires "$c"; done
यह केवल rpm
अपने आप में निर्मित विकल्पों का उपयोग करता है, और इसलिए इसे किसी भी अतिरिक्त पैकेज को स्थापित करने की आवश्यकता नहीं है (उदाहरण yum-utils
के लिए CentOS 7, जो कि पैकेज में शामिल है repoquery
)।
repoquery
सभी पैकेजों की संरचना जैसे एक विशेष पैकेज की आवश्यकता के लिए एक अच्छा पेड़ उत्पन्न करने के लिए इस्तेमाल किया जा सकता है, उदाहरण के लिए:repoquery --pkgnarrow=installed --tree-whatrequires sqlite