मैंने अपने फेडोरा 17 पर कुछ आरपीएम पैकेज स्थापित किए हैं। कुछ पैकेजों पर बहुत अधिक निर्भरता थी। मैंने कुछ पैकेज निकाले हैं, लेकिन मैं यूम रिमूव के साथ अप्रयुक्त निर्भरता को दूर करना भूल गया हूं।
अब मैं कैसे कर सकता हूं?
मैंने अपने फेडोरा 17 पर कुछ आरपीएम पैकेज स्थापित किए हैं। कुछ पैकेजों पर बहुत अधिक निर्भरता थी। मैंने कुछ पैकेज निकाले हैं, लेकिन मैं यूम रिमूव के साथ अप्रयुक्त निर्भरता को दूर करना भूल गया हूं।
अब मैं कैसे कर सकता हूं?
जवाबों:
यह आसान नहीं है। आप "एक फ़ाइल जो मेरे द्वारा हटाए गए कुछ" के लिए आवश्यक थी, के बीच अंतर कैसे करते हैं "" एक ऐसी फाइल जिसे किसी और चीज की आवश्यकता नहीं है जो मुझे वास्तव में चाहिए "?
आप अपने पैकेज पर निर्भरता ग्राफ में "लीफ नोड्स" को सूचीबद्ध करने के लिए पैकेज package-cleanup
से कमांड का उपयोग कर सकते हैं yum-utils
। ये ऐसे पैकेज हैं जिन्हें किसी और चीज को प्रभावित किए बिना हटाया जा सकता है:
$ package-cleanup --leaves
यह "पुस्तकालयों" की एक सूची तैयार करेगा, जिस पर और कुछ भी निर्भर नहीं करता है। ज्यादातर मामलों में आप इन पैकेजों को सुरक्षित रूप से निकाल सकते हैं। यदि आप --all
कमांड लाइन में जोड़ते हैं :
$ package-cleanup --leaves --all
आपको ऐसे पैकेज मिलेंगे, जिन्हें लाइब्रेरी नहीं माना जाता है, लेकिन यह सूची इतनी लंबी होने वाली है कि यह उपयोगी नहीं होगी।
यदि आप किसी पैकेज को yum install
कहते हैं pdftk
, तो यह बहुत सारी निर्भरता में खींच जाएगा:
Installed:
pdftk.x86_64 0:1.44-10.fc18
Dependency Installed:
bouncycastle.noarch 0:1.46-6.fc18
itext-core.noarch 0:2.1.7-14.fc18
libgcj.x86_64 0:4.7.2-8.fc18
bouncycastle-mail.noarch 0:1.46-6.fc18
java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
sinjdoc.x86_64 0:0.5-13.fc18
bouncycastle-tsp.noarch 0:1.46-5.fc18
java_cup.noarch 1:0.11a-10.fc18
itext.x86_64 0:2.1.7-14.fc18
javamail.noarch 0:1.4.3-12.fc18
Complete!
yum remove pdftk
केवल उस पैकेज को हटा देगा और सभी निर्भरताएँ नहीं।
लेकिन आप सभी 'लेनदेन' को देख सकते हैं (इंस्टॉल, हटाएं आदि):
$ sudo yum history list pdftk
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
88 | install pdftk | 2012-12-14 13:35 | Install | 11
और फिर आप उस लेनदेन को पूर्ववत कर सकते हैं:
$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
Dep-Install bouncycastle-1.46-6.fc18.noarch @fedora
Dep-Install bouncycastle-mail-1.46-6.fc18.noarch @fedora
Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch @fedora
Dep-Install itext-2.1.7-14.fc18.x86_64 @fedora
Dep-Install itext-core-2.1.7-14.fc18.noarch @fedora
Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
Dep-Install java_cup-1:0.11a-10.fc18.noarch @fedora
Dep-Install javamail-1.4.3-12.fc18.noarch @fedora
Dep-Install libgcj-4.7.2-8.fc18.x86_64 @fedora
Install pdftk-1.44-10.fc18.x86_64 @fedora
Dep-Install sinjdoc-0.5-13.fc18.x86_64 @fedora
...
Complete!
yum history
। धन्यवाद!
फेडोरा 18 से शुरू, आप बस इस कमांड का उपयोग कर सकते हैं
yum autoremove
या
yum remove --setopt=clean_requirements_on_remove=1
आप विशिष्ट पैकेज के साथ ऑटोरेमोव कमांड भी लागू कर सकते हैं
yum autoremove <package>
जो उस स्थापित पैकेज से अनावश्यक निर्भरता को हटा देगा। autoremove
बहुत अधिक है, remove --setopt=clean_requirements_on_remove=1
लेकिन कुछ कारणों से, अभी भी अनिर्दिष्ट है।
yum remove --setopt=clean_requirements_on_remove=1
मेरे लिए सेंटोस में काम करता है
package-cleanup --leaves && yum autoremove
लिबेरवर्बिस को हटा दिया और इसलिए इंटरनेट-रेडियो-स्ट्रीमिंग "इसेस" एप्लिकेशन को मर दिया - शायद इसलिए कि यह रेपो में नहीं है और मुझे इसे संकलित करना था।
yum autoremove
CentOS 7.6 पर भी काम करता है।
मैंने एक कदम आगे बढ़ते हुए लार्क्स जवाब दिया।
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
यह उन सभी आश्रितताओं को पकड़ लेता है जिन्हें किसी और चीज को प्रभावित किए बिना हटाया जा सकता है और फिर उन्हें हटा दिया जाता है। एक के बाद एक करके बेहतर होता जा रहा है।
"-q" कुछ सिस्टम पर उपयोगी है जो "सेटिंग यम" प्रिंट करते हैं अन्यथा, इस आदेश को यम को हटाने के लिए। और यही आप चाहते नहीं हैं।
package-cleanup
मेरी मशीन पर आउटपुट "यम सेट अप", जिसके परिणामस्वरूप यम ने खुद को हटा दिया। मैं अब यह पता लगाने की कोशिश कर रहा हूं कि इसे कैसे सुलझाया जाए।
-q
पैकेज-क्लीनअप में केवल विकल्प जोड़ें । यह मेरे साथ भी हुआ:
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
चुपचाप xargs छोड़ देंगे अगर पैकेज-सफाई आउटपुट खाली है, तो स्वचालित स्क्रिप्ट जैसे ansible, chef, कठपुतली, योनि के लिए उपयोगी है
yum
मैनपेज देखा : linux.die.net/man/8/yum ?