अनइंस्टॉल किए गए पैकेजों की अनुशंसित और सुझाई गई निर्भरताओं को कैसे निकालें?


16

मुझे पता है कि अनइंस्टाल्ड पैकेज की निर्भरता को कैसे दूर करें? और मैंने कोशिश की

apt-get autoremove

लेकिन यह अन्य पैकेजों द्वारा अनुशंसित / सुझाए गए निर्भरता को नहीं हटाता है।

यही है, अगर मैं एक पैकेज एक्स स्थापित करता हूं जो वाई की सिफारिश करता है, लेकिन मैं वाई स्थापित नहीं करता हूं, और फिर मैं पैकेज जेड स्थापित करता हूं जो वाई पर निर्भर करता है और बाद में मैं करता हूं।

apt-get remove --auto-remove Z

तब Y स्वचालित रूप से हटा नहीं दिया जाता है, भले ही कुछ भी इस पर निर्भर न हो। (एक्स "उठाया" वाई, भले ही यह उस पर निर्भर न हो)।


1
क्या आप इसके बजाय कह सकते हैं कि ऐसा करने वाला पैकेज क्या है?
ब्रह्म

कई उदाहरण हैं, इसलिए मैंने उपरोक्त विवरण में समस्या का सार निकालने की कोशिश की। आप सही हैं कि मुझे एक ठोस उदाहरण भी शामिल करना चाहिए: टेक्सलाइव-फुल की स्थापना पर विचार करें। यह बहुत सारे फ़ॉन्ट पैकेजों को स्थापित करता है, जो कई पूर्व-अस्तित्व वाले पैकेजों द्वारा सुझाए गए (लेकिन आवश्यक नहीं) हैं (मुझे ठीक से याद नहीं हो सकता है, लेकिन मुझे लगता है कि पहले से मौजूद लिबर्रेफ़िस या मैटप्लोटलिब या ऑक्टेव ने इनका सुझाव दिया है)। तो समस्या यह है कि "apt-get install texlive-full" के बाद "apt-get remove --purge --auto-remove texlive-full" सिस्टम को उसी मूल स्थिति में नहीं छोड़ता है।
user2809402

जवाबों:


14

यदि आप अपने सिस्टम से अनुशंसित पैकेजों को हटाना चाहते हैं, भले ही अभी भी कुछ स्थापित पैकेजों की सिफारिश कर रहे हों (या उन्हें सुझाव दे रहे हों), फाइल में निम्नलिखित डालें /etc/apt/apt.conf.d/99_norecommends(इसे बनाएं):

APT::Install-Recommends "false";
APT::AutoRemove::RecommendsImportant "false";
APT::AutoRemove::SuggestsImportant "false";

इन विकल्पों के लिए प्रलेखन यहाँ है

फिर, अगले उपयुक्त रन को उन सभी को हटा देना चाहिए। यदि यह, लॉन्च aptitude, और प्रकार नहीं करता हैg और gफिर से।

यह कॉन्फ़िगरेशन उपयोग करते समय अनुशंसित पैकेजों की स्वचालित स्थापना को भी अक्षम करता है apt-get। इसके aptitudeलिए कंसोल GUI, मेनू विकल्प> वरीयताएँ> "स्वचालित रूप से अनुशंसित पैकेज स्थापित करें" (इसे अनचेक करें) से किया जा सकता है।


मैं अनुशंसाएं नहीं करने की सिफारिश नहीं करूंगा क्योंकि वे ज्यादातर समय उपयोगी होते हैं
ब्रिअम

1
@Braiam यह वह नहीं है जो ओपी ने हालांकि पूछा। आपकी टिप्पणी उसके लिए है, मेरे लिए नहीं।
तोटर

मैं सिर्फ इतना कह रहा हूं कि शायद ओवरकिल है।
ब्रिअम

@Braiam यह आपका POV है। मैं InstallRecommendsविकलांगों के साथ बहुत अच्छी तरह से रहता हूं । रिकॉर्ड के लिए, इसे डिबियन द्वारा जारी किए जाने तक डिफ़ॉल्ट रूप से अक्षम कर दिया गया था, जो कि फरवरी 2011 के बाद से है (उबंटू के बारे में पता नहीं है)। इसके अलावा, आपको सर्वर या डेस्कटॉप सेटअप पर समान कॉन्फ़िगरेशन की आवश्यकता नहीं हो सकती है।
तोटर

2
InstallRecommends: क्योंकि आप चाहते हैं 5MB सामान क्यों स्थापित करते हैं, जब आप 1GB सामान भी स्थापित कर सकते हैं जो आप नहीं चाहते हैं?
मार्क के कोवान

7

ओवरराइडिंग APT विकल्प

निर्भरता के विपरीत, स्वचालित रूप से स्थापित "अनुशंसित" या "सुझाए गए" पैकेजों को अनदेखा किया जा सकता है apt-get autoremove

जैसा कि कहीं और वर्णित है, APT के इस व्यवहार को कॉन्फ़िगरेशन में बदला जा सकता है।

इसी तरह, apt-getकमांड के कॉन्फ़िगरेशन को अस्थायी रूप से के माध्यम से बदला जा सकता है-o कमांड लाइन विकल्प के कमांड है।

यह है, कि आप अप्रयुक्त निर्भरता के अलावा, "अनुशंसित" और "सुझाए गए" पैकेज को हटाने के लिए ऑटोरेमोव को कैसे बाध्य करेंगे।

sudo apt-get autoremove -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0

सावधान!

कुछ कार्यक्षमता खो सकती है। चीजों की जांच और पुनर्स्थापना के लिए तैयार रहें। इन पैकेजों को अकेले छोड़ना आसान हो सकता है।

अन्य विकल्प

केवल विशेष पैकेज के लिए 'अनुशंसित' और 'सुझाए गए' पैकेजों की स्थापना रद्द करने के लिए, उपयुक्त इतिहास लॉग पर एक नज़र डालें।


1
बस ऐसे पैकेजों का विश्लेषण करने के लिए , 's ऑप्शन और पाइप टू के साथ एक ड्राई रन करें - ताकि यह कमांड हो:apt-get-sgrep ^Remvapt-get autoremove -s -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0 | grep ^Remv
myrdd

1

वास्तव में आदेश है:

sudo apt-get autoremove <Z>

लेकिन यह एक चाल है! यदि किसी भी निर्भरता में कुछ अन्य पहले से स्थापित पैकेज हैं जो उन्हें सुझाते हैं / सुझाते हैं तो उपयुक्त उन्हें हटा नहीं सकते हैं।

आपने निर्दिष्ट नहीं किया कि कौन सा पैकेज था, लेकिन उदाहरण के लिए, अगर मैं IcedTea प्लगइन स्थापित करना चाहता था, तो यह निर्भरता के साथ जावा / ओपनजेयर स्थापित करेगा। अगर मैं उन्हें इस्तेमाल करते हुए sudo apt-get autoremove icedtea-7-pluginआपको अनइंस्टॉल कर देता हूं तो आप यह नोटिस करेंगे कि यह Java / OpenJRE को नहीं हटाएगा, क्योंकि LibreOffice पैकेज भी सुझाता है।

इसलिए, उन्हें हटाने के लिए आपको उस पैकेज के बारे में अधिक विशिष्ट होना चाहिए जिसे आप उस सामान्य की स्थापना रद्द करना चाहते autoremoveहैं:

sudo apt-get autoremove <Z> <dependency of Z>

इस तरह आप सुनिश्चित कर सकते हैं कि आपका पैकेज हटा दिया जाए।

आप कुछ निर्भरता को दूर करने के लिए डेबोरफान का उपयोग भी कर सकते हैं।


1
वैसे, उपयुक्त मैनपेज से मेरी समझ यह है कि ऑटोरेमोव पैकेज नाम की उम्मीद नहीं करता है, और सिस्टम में सभी गैर-जरूरी पैकेज निर्भरता को साफ कर देगा। तो आपको 2 चरण करने होंगे: "apt-get remove Z" उसके बाद "apt-get autoremove"। इन 2 चरणों को एक बार "apt-get remove --auto-remove Z" के साथ किया जा सकता है, जैसा कि मेरे मूल प्रश्न में उल्लेख किया गया है। लेकिन जैसा कि मैंने कहा, समस्या यह है कि कुछ बचे हुए पैकेज हैं, जिन्हें यदि किसी और चीज द्वारा सुझाया गया है तो उन्हें हटाया नहीं जाता है।
user2809402

1
हां, आपने मेरी समस्या का पूरी तरह से वर्णन किया है। धन्यवाद। लेकिन, दुर्भाग्य से, आपने इसे हल नहीं किया है, क्योंकि मैं /var/log/apt/history.log पर नहीं जाना चाहता हूं और उन सभी पैकेजों को खोजता हूं जहां Z के साथ कुछ महीने पहले स्थापित किया गया था (आपके उदाहरण में, Y = java / jre, Z = icedtea plugin) और फिर उन सभी को apt कमांड लाइन में मैन्युअल रूप से जोड़ें। मैं केवल Z निर्दिष्ट करना चाहता हूं, और बाकी निर्भरताओं को स्वचालित रूप से उठाया जा सकता है, भले ही वे किसी अन्य मौजूदा पैकेज X (X = libreoffice आपके उदाहरण में) द्वारा सुझाए गए हों।
user2809402

1
दुर्भाग्य से, यह जिस तरह से उपयुक्त सिस्टम काम करता है, यह उन्हें हटाने के बजाय पैकेज स्थापित करने के लिए पसंद करता है, भले ही वे अब और ज़रूरत न हों। उन्हें हटाने का एकमात्र तरीका मैन्युअल रूप से या साथ है, deborphanलेकिन डीबोरफान कुछ संकुल को अभी भी याद कर सकता है। आप Debug::विकल्पों का उपयोग कर सकते हैं और इस बारे में मेरे अन्य उत्तर की भी जांच कर सकते हैं । आप भी उपयोग कर सकते हैं --no-install-recommends, लेकिन apt-get डिफ़ॉल्ट रूप से सुझाए गए पैकेज स्थापित नहीं करते हैं।
ब्रिअम

@ user2809402 आपको askubuntu.com/q/244470/169736 पर
Braiam

Braiam- डेबोरहान पॉइंटर के लिए धन्यवाद। मैं इसकी जांच करुँगा।
user2809402

-1

ठीक है, यदि आप <Z>केवल प्रकारों पर निर्भरता के साथ पैकेज निकालना चाहते हैं :

sudo apt-get autoremove --purge <Z>

3
धन्यवाद, लेकिन दुर्भाग्य से, "--purge" को जोड़ने से केवल "ऑटोरेमोव" के साथ हटाए गए संकुल के विन्यास को हटा दिया जाता है। लेकिन जहां तक ​​मैं देख सकता हूं, यह निर्णय नहीं बदलता है कि किन पैकेजों को निकालना है। यही है, Z की निर्भरताएं जो कुछ पहले से मौजूद पैकेज X द्वारा सुझाई गई हैं, अभी भी हटाए नहीं गए हैं, चाहे मैं "--purit" निर्दिष्ट करता हूं या नहीं।
user2809402 28

1
इसके अलावा, autoremoveसिस्टम-वाइड काम करता है। इसलिए जब भी आप कॉल करते हैं autoremove, तो यह आपके सिस्टम पर मौजूद सभी अप्रयुक्त पैकेजों को हटा देगा। पैकेज स्थापित करना, फिर autoremovingआमतौर पर सिस्टम को उसी स्थिति में नहीं लौटाएगा, और इसके बजाय "बचे हुए" पैकेजों का एक गुच्छा छोड़ देगा।
रॉल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.