आप एप्ट-गेट रिमूवर का उपयोग कब करेंगे?


17

मैं समझता हूं कि apt-get removeपैकेज हटाता है और apt-get autoremoveकिसी भी पैकेज को हटाने के लिए है जो किसी दिए गए पैकेज के लिए निर्भरता को पूरा करने के लिए स्थापित किया गया था। उदाहरण के लिए अगर मैं लिब्रे ऑफिस स्थापित किया है और यह कहना जावा पर निर्भरता था और स्थापना के हिस्से के रूप में यह स्थापित जब मैं आदेश चला apt-get libreoffice, मैं क्यों आदेश चला जाएगा apt-get remove libreoffice, जिसके बाद apt-get autoremove? क्या मैं केवल कमांड चलाने में सक्षम नहीं हूं apt-get autoremove libreoffice? या का संयोजन है apt-get removeऔर apt-get autoremoveएक अलग उद्देश्य के लिए?

जवाबों:


12

यह निर्भर करता है कि आप निर्भरता ट्रैकर पर कितना भरोसा करते हैं। जबकि लगभग हमेशा सही होता है, ऐसे समय होते हैं जब आप एक निर्भरता को बनाए रखना चाहते हैं, खासकर जब आप एक डेवलपर या पावर उपयोगकर्ता सॉफ़्टवेयर स्थापित कर रहे हैं जो रिपॉजिटरी में नहीं है।

यदि आप हमेशा अपवाद के बिना, सॉफ़्टवेयर को इंस्टॉल करते हैं, और सभी आश्रितों को सही होने के लिए भरोसा करते हैं (जो वे आमतौर पर हैं), तो आप apt-get autoremoveड्राइव स्पेस की थोड़ी मात्रा और संभावित सुरक्षा छिद्रों के लिए कम जोखिम का उपयोग कर सकते हैं। यह उन पैकेजों को हटा देता है, जिनके पास अब ऐसे पैकेज नहीं हैं जिनकी उन्हें आवश्यकता है।

लेकिन यदि आप सॉफ़्टवेयर को मैन्युअल रूप से इंस्टॉल करते हैं, या सॉफ़्टवेयर विकसित करते हैं, या संभव निर्भरता त्रुटि से निपटना नहीं चाहते हैं, तो संभावित अप्रयुक्त पैकेजों को खाली करने के लिए ऑटोरेमोव का उपयोग नहीं करना शायद सुरक्षित विकल्प है। भले ही आप apt-get autoremoveहर अब और फिर उपयोग करें या नहीं, आप हमेशा सॉफ्टवेयर का उपयोग करके निकाल देंगेapt-get remove Package

उदाहरण के लिए, यदि मैं स्थापित करता हूं, तो AwesomePackageयह निर्भर हो सकता है AwesomeLibrary, और इस प्रकार AwesomeLibraryस्वचालित रूप से एक निर्भरता के रूप में स्थापित हो जाएगा । जब मैं AwesomePackageऑटोरेमोव का उपयोग करना हटा देता हूं , जब तक कि कोई अन्य पैकेज AwesomeLibraryनिर्भरता के रूप में नहीं होता है तो इसे भी अनइंस्टॉल किया जाएगा। लेकिन अगर SuperPackageयह भी आवश्यक है AwesomeLibrary, या अगर मैंने AwesomeLibraryखुद को एक निर्भरता ( apt-get install AwesomeLibrary) के रूप में आने के बजाय स्पष्ट रूप से स्थापित किया है , तो ऑटोरेमोव से छुटकारा नहीं मिलेगा।

यह डिफ़ॉल्ट नहीं होने का कारण यह है कि AwesomeLibraryसिस्टम पर, अप्रयुक्त, एक बहुत ही छोटा मुद्दा है। यह लगभग कभी समस्या पैदा नहीं करेगा, और अधिकांश निर्भरताएं अधिक स्थान नहीं लेती हैं। अपवाद हैं, लेकिन एक निर्भरता को दूर करते समय कई बार समस्याओं का कारण होगा जब यह समस्या को हल या रोक देगा।


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

अगर मैं यह निर्भर करने के लिए स्थापित निर्भरता चाहता था तो क्या यह सही है? अगर मैं खुद को दोनों लिबर्रेफ़िस और उससे जुड़ी निर्भरताओं से मुक्त करना चाहता था, तो यह मानते हुए कि किसी अन्य कार्यक्रम का उपयोग नहीं किया गया था, मैं इसे लेता हूं मैं कमांड चलाऊंगा apt-get autoremovelibreoffice? क्या वो सही है?
मूँगफली के दाने

यह बिल्कुल सही है @PeanutsMonkey। ऑटोरेमोव अन्य पैकेजों को भी हटा देगा जो नामित पैकेज पर निर्भर थे, अगर उन्हें अब किसी चीज की आवश्यकता नहीं है और उद्देश्य पर अलग से स्थापित नहीं किया गया था।
म्यरडिन इमरोज़

वास्तव में, यह बिल्कुल सही नहीं है; मेरे जवाब में कुछ गलत वाक्य रचना थी (जैसा कि @cooper ने बताया)। मैंने ऊपर के उत्तर में इसे सही किया है। apt-get autoremoveसे एक अलग आदेश है apt-get remove Package, मैं प्रारंभिक गलत सूचना के लिए माफी माँगता हूँ।
म्यरदीन इमरोज़

धन्यवाद Myrddin Emrys। क्षमा करें यदि मैं एक n00b जा रहा हूँ। जब आप कहते हैं कि There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem। आप का क्या तात्पर्य है?
मूँगफली के दाने

12

आप हटाएं , ऑटोरेमोव , पर्ज , स्वच्छ और आटोक्लाइन के विवरण के साथ-साथ उपयुक्त-पाने के लिए मैनपेज़ में वाक्यविन्यास पा सकते हैं man apt-get:।

यदि आप इसे पढ़ने के बाद भी अनिश्चित हैं, तो (मैं) इसे स्पष्ट करने का सबसे अच्छा तरीका है इसे आज़माना।

नीचे विम के लिए पूर्ण निर्भरता के पेड़ का एक उदाहरण है :

vim-निर्भरता पेड़

आप इसे प्राप्त कर सकते हैं:

apt-rdepends -d vim > vim.dot
dotty vim.dot

आप उपयोग करके तात्कालिक निर्भरताओं की एक सूची भी प्राप्त कर सकते हैं apt-cache depends( अधिक जानकारी के लिए संकुल के बीच संबंधों की घोषणा देखें ):

$ apt-cache depends vim
vim
  Depends: vim-common
  Depends: vim-runtime
  Depends: libacl1
  Depends: libc6
  Depends: libgpm2
  Depends: libselinux1
  Depends: libtinfo5
  Suggests: <ctags>
    exuberant-ctags
  Suggests: vim-doc
  Suggests: vim-scripts

तो ऐसा लगता है कि विम कई पैकेजों पर निर्भर करता है, चलो इसे स्थापित करने का प्रयास करें apt-get installऔर देखें कि क्या होता है:

$ sudo apt-get install vim
...
The following extra packages will be installed:
  vim-common vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n

काम करने के लिए vim प्राप्त करने के लिए हमें vim-common और vim-runtime संकुल की आवश्यकता है और apt-getइसका ध्यान रखेंगे। हम इसे सत्यापित कर सकते हैं dpkg -s pkg...( man dpkgस्थिति के बारे में अधिक जानकारी के लिए देखें ):

$ sudo dpkg -s libc6
Package: libc6
Status: install ok installed        // we already have it, no need to install

$ sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files   // we don't have it, have to install

जिस तरह हमने जाँच की कि विम किस पर निर्भर है, हम यह भी जाँच सकते हैं कि अन्य पैकेज उसी पैकेज पर निर्भर हैं जो विम का उपयोग कर रहा है apt-cache rdepends। हमें (संभवतः) अन्य चीजों के बीच विम देखना चाहिए :

$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
  vim-latexsuite
  vim-addon-manager
  vim-tiny
  vim-nox
  vim-gtk
  vim-gnome
 |vim-dbg
  vim-athena
  vim                               // there it is

चलो स्थापना के साथ जारी रखें। एक बार जब हम विम स्थापित कर लेते हैं तो हम हटाए और ऑटोरेमोव के बीच अंतर का अनुभव कर सकते हैं । आइए पहले निकालने का प्रयास करें :

$ sudo apt-get remove vim
...
The following packages will be REMOVED:
  vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n

apt-get removeफिर विम को हटा देगा, लेकिन इसकी निर्भरता उन्हें पीछे नहीं छोड़ेगी । आइए अब विम की निर्भरता में से एक को दूर करने का प्रयास करें :

$ sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
  vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n

यह निर्भरता विम-रनटाइम के साथ-साथ उस पर निर्भर पैकेज को हटा देगा , जिसका अर्थ है विम । जिज्ञासा से बाहर, आइए देखें कि क्या होगा अगर हम एक निर्भरता को हटा दें जो विम के निर्भरता के पेड़ पर कम है :

$ sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
  libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
  python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center      // !
  gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1         // !
  libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m          // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n

यह विम और बहुत सारी अच्छाइयों को हटा देगा!

चलो apt-get remove vimफिर आगे बढ़ते हैं । एक बार जब हम यह कर लेते हैं तो हमारे पास कुछ बचे हुए होने चाहिए। यदि हम अब ऑटोरेमोव की कोशिश करते हैं तो हम देख सकते हैं:

$ sudo apt-get autoremove
...
The following packages will be REMOVED:
  vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y

ये दो पैकेज apt-get removeपीछे रह गए हैं जबकि उन्हें और कुछ नहीं चाहिए।

उपयुक्त-प्राप्त 0.9.7.9 के साथ प्रयोग किया गया।


4

इसके अनुसार: http://ubuntuforums.org/showthread.php?t=996053 ऑटोरेमोव उन सभी पैकेजों को हटा देगा जिनकी अन्य कार्यक्रमों को जरूरत नहीं है। आप 'apt-get autoremove' करेंगे, 'apt-get autoremove libreoffice' नहीं। इसके अलावा अनावश्यक पैकेजों को हटाने से केवल एक डिस्क स्थान खाली नहीं होता है, यह आपके सिस्टम की 'हमले की सतह' को कम करता है।


मैं देख सकता हूं कि अप्रयुक्त पुस्तकालयों पर हमला वेक्टर हो सकता है, लेकिन यह मेरे लिए एक बहुत ही मामूली मुद्दा लगता है, अनुचित निष्कासन के महत्वपूर्ण दर्द के सापेक्ष (जो मैंने देखा है कि यह एक से अधिक बार होता है)। उपयोग के बारे में जानकारी के लिए धन्यवाद, हालांकि ... मैं वास्तव में अनुचित तरीके से ऑटोरेमोव का वर्णन कर रहा हूं (मैं खुद इसका उपयोग नहीं करता हूं, इसलिए इसका एहसास नहीं हुआ), सुधार के लिए धन्यवाद।
म्यरदीन इमरोज़

3

removeनिर्दिष्ट कार्यक्रम को हटा देगा जबकि autoremoveनिर्भरता शामिल करेगा अन्यथा अब उपयोग नहीं किया जाएगा।

इसके अलावा, यदि आप ड्राइव स्पेस खाली करना चाहते हैं, तो एक उपयोगी और सुरक्षित कमांड है ...

sudo apt-get clean

जो / var / cache / apt / अभिलेखागार में एप्टीट्यूड कैश को हटाता है


इस तरह के n00b होने के लिए क्षमा करें, लेकिन मैं इसका पालन नहीं करता हूं। इसलिए अगर मैं कमांड चलाता हूं apt-get remove libreoffice, तो मैं यह लेता हूं कि यह बस लिबरऑफिस को हटा देगा। क्या वह सही है? हालाँकि, अगर मैं कमांड चलाता हूँ apt-get autoremove libreoffice, तो यह न केवल कामेच्छा को दूर करेगा, बल्कि इसकी निर्भरता भी?
मूँगफली के दाने

यह सही है। तो चलो कहते हैं कि मैं स्थापित करता हूं neverballऔर neverballनामक पैकेज पर निर्भर करता हूं libisfun। अगर मैं करता हूं apt-get remove neverballतो यह सिर्फ neverballपैकेज को हटा देगा । यदि मैं apt-get autoremove neverballतब इसे हटा दूंगा neverballऔर libisfunयदि libisfunयह किसी अन्य अनुप्रयोग पर निर्भर नहीं है।
कोबाल्टज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.