मैं फेडोरा में अनाथ पैकेज कैसे निकाल सकता हूं?


42

मैंने बस उबंटू से फेडोरा 14 में स्विच किया। उबंटू में हमारे पास apt-get autoremoveअनाथ / अप्रयुक्त पैकेजों को हटाने की बात थी । फेडोरा में समकक्ष क्या है?

जवाबों:


36

package-cleanup --quiet --leavesसे यम-utils संकुल पुस्तकालय संकुल जो नहीं अन्य संकुल द्वारा पर भरोसा कर रहे हैं सूची जाएगा। दुर्भाग्य से यह थोड़ा अधिक हो जाता है। मेरे सिस्टम पर, उदाहरण के लिए, इसने libvirt को हटाने का सुझाव दिया। --exclude-binतर्क जोड़ने से मदद मिलती है। यदि आप इसके सुझाव से खुश हैं, तो संकुल को साफ करने के लिए, करें:

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

1
स्थापित करने और हटाने netbeans-platformऔर पैकेज-सफाई के बाद इसका परीक्षण किया गया है, कुछ सामानों को सूचीबद्ध करता है, लेकिन वास्तव में पहले से स्थापित netbeans-platformनिर्भरता (फेडोरा 17 का उपयोग करके) में से कोई भी नहीं ।
मैक्सचेलपिजिग

2
काम नहीं करता है, जैसा @maxschlepzig द्वारा बताया गया है
c0da

30

DNF, फेडोरा 22 के बाद से यम प्रतिस्थापन, एक autoremoveउपकमांड भी प्रदान करता है जिसे apt-get / yum autoremove के बाद बनाया गया है

उदाहरण:

# dnf autoremove

जो सभी स्वचालित रूप से स्थापित और अन्यथा अप्रयुक्त निर्भरता पैकेज को हटाने की कोशिश करता है - के लिए बहुत अधिक समकक्ष होना चाहिए apt-get autoremove

# dnf autoremove examplepackage

जो उदाहरण के प्रकार और उसके सभी स्वचालित रूप से स्थापित (और अन्यथा अप्रयुक्त) निर्भरता को हटाता है।

यम

यम के पास फेडोरा 19 के बाद से ऑटोरेमोव कमांड है, और यह फेडोरा 20 / आरएचईएल 7 के बाद से प्रलेखित है।

उपयोग dnf कार्यान्वयन के अनुरूप है, जैसे:

# yum autoremove

या

# yum autoremove examplepackage

Yum के व्यवहार को हटाता है

यम removeउपकमांड के डिफ़ॉल्ट व्यवहार को बदलने के लिए एक विन्यास विकल्प का समर्थन करता है (जैसे /etc/yum.conf के माध्यम से):

clean_requirements_on_remove=yes

yum.conf (5)

जब यह सेट हो जाता है, तो अगला yum removeभी ऑटो संकुल पर निर्भरता को दूर करने की कोशिश करता है यदि उन्हें अन्य पैकेजों की आवश्यकता नहीं होती है।

आप इस विकल्प को अस्थायी रूप से कुछ इस तरह से परख सकते हैं:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

पुराने फेडोरा संस्करण के लिए समाधान

(फेडोरा संस्करणों के लिए, जहां यम ऑटोरेमोव उपकमांड उपलब्ध नहीं है और / या clean_requirements_on_removeकाम नहीं करता है।)

हालाँकि संकुल की स्थापना के दौरान निर्भरताएँ इस तरह से चिह्नित की जाती हैं (आरपीएम / यम की अपेक्षाकृत नई विशेषता प्रतीत होती है)।

आप के माध्यम से अनावश्यक निर्भरता पा सकते हैं:

$ package-cleanup --leaves -q --all \
    | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
    | grep -- '- dep' \
    | cut -d' ' -f1 > tmp

यह कमांड लाइन fenris02 की स्क्रिप्ट से प्रेरित है ।

tmp(और शायद अवधि) के निरीक्षण के बाद आप उन्हें कुछ इस तरह से हटा सकते हैं:

# xargs yum remove < tmp

इसने "अवैध यमदूत क्वेरीटैग 'कारण को स्थापित pkg के लिए त्रुटि दी: adobe-release-x86_64-1.0-1.noarch"। अब यह क्या है?
c0da

@ c0da, मुझे लगता है कि जो सुविधा अपने डेटाबेस में यम रिकॉर्ड करती है, प्रत्येक पैकेज के लिए स्थापना का 'कारण' (उदाहरण के लिए 'या' उपयोगकर्ता ') अपेक्षाकृत नया है। शायद आपका फेडोरा उदाहरण उस सुविधा की शुरूआत से पहले से ही ऐसा है जो आपके पास अभी भी (कुछ) पुराने पैकेज उस टैग सेट के बिना स्थापित है।
मैक्सक्लेपजिग

मैंने कुछ दिन पहले फेडोरा 18 स्थापित किया था। इसलिए मुझे लगता है कि आवश्यक टैग होना चाहिए।
c0da

1
@ c0da, शायद 'कारण' दर्ज नहीं किया गया है क्योंकि आप पैकेज स्थापित किया है adobe-releaseके माध्यम सेyum localinstall
maxschlepzig

16

आपको यम प्लगइन "रिमूव-विथ-लीव्स" स्थापित करने की आवश्यकता है:

# yum install yum-plugin-remove-with-leaves.noarch

एक बार स्थापित:

# yum remove --remove-leaves package

सौभाग्य!


3
और इसे सभी इंस्टॉल किए गए ऐप्स के लिए कैसे चलाया जाए?
CND

साथ ही बहुत विश्वसनीय नहीं लगता है: skvidal.wordpress.com/2010/11/09/orphaned-dep-cleanup-in-yum
maxschlepzig

1
आरएचईएल / सेंटोस / ओरेकल लिनक्स 6 yum-plugin-remove-with-leaves.noarchको उपयोग करने के लिए स्थापित पैकेज की आवश्यकता हैpackage-cleanup
टेरी वांग

8
# package-cleanup --orphans >/tmp/junk

/tmp/junkफ़ाइल को संपादित करें और कमांड लाइन से सूचना देने वाली पहली लाइन को हटा दें जो निम्नलिखित दर्ज करें:

for file in `cat /tmp/junk`
do
  yum remove $file
done

1
पैकेज-क्लीनअप (1) कहता है: '- बोरहंस सूची स्थापित पैकेज जो वर्तमान में कॉन्फ़िगर किए गए रिपॉजिटरी से उपलब्ध नहीं हैं।' यह क्या apt-get autoremoveकरता है के बराबर नहीं है। apt-get (8) कहता है: 'ऑटोरेमोव का उपयोग उन पैकेजों को हटाने के लिए किया जाता है जो स्वचालित रूप से कुछ पैकेज के लिए निर्भरता को पूरा करने के लिए स्थापित किए गए थे और जिनकी अब अधिक आवश्यकता नहीं है।'
मैक्सक्लेपजिग

1
काम नहीं करता है! मुझसे पहले गलती हुई होगी। धन्यवाद @maxschlepzig
c0da

यह मेरे लिए काम करता था लेकिन CentOS 6.6 में यह वास्तव में सभी स्थापित संकुल को सूचीबद्ध करता है, न कि केवल अनाथों को।
गिया

4

नोट: यह उत्तर सही है लेकिन केवल RHEL 7+ और फेडोरा 20+ पर लागू होता है (जहां ऑटोरेमोव को एक नई सुविधा के रूप में जोड़ा गया है)।

# yum autoremove

बस चयनित पैकेजों को हटाने की पुष्टि करें।


0

लैरी मोहर के जवाब पर बिल्डिंग :

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

(यदि आपको आश्चर्य हो तो तेज दर्पण के लिए लंघन शामिल है।)


0

फेडोरा में, अनाथ पैकेज का मतलब है कि कोई भी उम्मीदवार इसे अपडेट करने के लिए रिपोज नहीं करता है!

  1. यदि अनाथ पैकेज आपके द्वारा yum.repos.d / some.conf को अक्षम किया गया था।

    yum distro-sync
    
  2. अन्य अनाथ पैकेज, आदेश खतरनाक हो सकता है।

    yum remove $(package-cleanup --orphans)
    

    या, बस सुरक्षा आदेश का उपयोग करें।

    yum remove name-of-page
    

0

इन मुद्दों का कारण नहीं होने का एक और तरीका लेनदेन का उपयोग करना है।

सेटअप बेस सिस्टम के बाद, जैसा कि आप yum का उपयोग करके इंस्टॉल करते हैं, यह लेनदेन बनाता है। जब आप चीजों को हटाने का इरादा रखते हैं, तो लेनदेन को रोलबैक करें।

https://docs.fedoraproject.org/en-US/Fedora/24/html/System_Administrators_Guide/sec-DNF-Transaction_History.html

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