किसी एप्लिकेशन को पूरी तरह से हटाने का सही तरीका क्या है?


545

मैंने इस तरह की जानकारी के लिए नेट खोजा है और इनकी तरह अलग-अलग कमांड लाइन पाई हैं:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

तो, सही तरीका क्या है? क्या उस "*" का उपयोग करना आवश्यक है?

उसके बाद, मुझे ये कमांड्स भी मिलीं:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

1
इस पोस्ट में आपके कुछ सवालों के जवाब दिए जा सकते हैं: askubuntu.com/questions/1143/how-can-i-uninstall-software
Glutanimate

8
application*इस अवसर पर अप्रत्याशित परिणाम दे सकते हैं - उदाहरण के लिए, यदि आपके पास वर्तमान निर्देशिका में एक फ़ाइल है application_information, तो शेल इसे विस्तारित-प्राप्त करने से पहले इसे विस्तारित करेगा। यदि यह हो रहा है और आप शाब्दिक तारांकन चाहते हैं, तो आप उपयोग कर सकते हैं application\*या'application*'
इज़काता

6
application*और भी खतरनाक है जहां वर्तमान निर्देशिका में कोई फाइल नहीं है: apt-getनियमित अभिव्यक्ति का उपयोग करता है, कोई ग्लोब पैटर्न नहीं। लोगों ने लगभग पूरी व्यवस्था को हटाने की कोशिश की है wine*
एंड्रिया कोरबेलिनी

3
क्या आप एक उत्तर स्वीकार कर सकते हैं? उन लोगों के प्रति आभारी होना जिन्होंने आपको उत्तर दिया।
m-ric

न तो application*है और न ही application\*सुरक्षित है! के *साथ उद्धृत करना \या ' 'केवल जोखिम बढ़ जाता है, यह सुनिश्चित करना इस तरह *से पारित किया जाता है apt-get(हालांकि यह आमतौर पर वैसे भी है!), apt-getतर्क के रूप में व्याख्या करने का कारण बनता है। रेगेक्स में *"पूर्ववर्ती चरित्र के शून्य या अधिक" का अर्थ है। गलती का एक सामान्य रूप की स्थापना रद्द करने के लिए है wine*के साथ सभी संकुल को हटाने, win(नहीं wine, win) कहीं भी उनके नाम और उनमें से किसी के आधार पर सभी संकुल में। यह स्पष्टीकरण और संभावित सुधार देखें । @ इज़्काता
कागन

जवाबों:


704
  • apt-get remove packagename

    बायनेरिज़ को हटा देगा, लेकिन पैकेज के कॉन्फ़िगरेशन या डेटा फ़ाइलों को नहीं packagename। यह स्थापना के समय इसके साथ स्थापित निर्भरता को भी अछूता नहीं छोड़ेगा।

  • apt-get purge packagename या apt-get remove --purge packagename

    पैकेज के बारे में सब कुछ निकाल देगा packagename, लेकिन स्थापना पर इसके साथ निर्भरताएं स्थापित नहीं। दोनों आज्ञाएँ समान हैं।

    विशेष रूप से तब उपयोगी होता है जब आप किसी एप्लिकेशन के साथ 'सब शुरू करना चाहते हैं' क्योंकि आपने कॉन्फ़िगरेशन को गड़बड़ कर दिया है। हालांकि, यह उपयोगकर्ताओं की होम निर्देशिकाओं में रहने वाले कॉन्फ़िगरेशन या डेटा फ़ाइलों को नहीं हटाता है, आमतौर पर वहां छिपे हुए फ़ोल्डरों में। साथ ही उन्हें हटाने का कोई आसान तरीका नहीं है।

  • apt-get autoremove

    अनाथ पैकेजों को हटा देता है, अर्थात ऐसे पैकेज जो एक निर्भरता के रूप में स्थापित किए जाते थे, लेकिन अब नहीं हैं। एक पैकेज को हटाने के बाद इसका उपयोग करें, जिस पर निर्भरताएं स्थापित की गई थीं, जिसमें अब आपकी रुचि नहीं है।

  • aptitude remove packagenameया aptitude purge packagename(इसी तरह)

    उन अन्य पैकेजों को भी हटाने का प्रयास करेगा, जिनके लिए आवश्यक थे, packagenameलेकिन किसी भी शेष पैकेज की आवश्यकता नहीं है। ध्यान दें कि aptitudeकेवल उन संकुल के लिए निर्भरता की जानकारी को याद रखता है जो उसने स्थापित किया है।

और कई और मौजूद हैं। निचले-स्तर के- dpkgवैंड्स का उपयोग किया जा सकता है (उन्नत), या जीओआई उपकरण जैसे मून, सिनैप्टिक, सॉफ्टवेयर सेंटर, आदि । आपके पैकेज प्रबंधन के साथ बातचीत को हटाने या अन्य कार्यों को करने का कोई एक 'सही तरीका' नहीं है।

आपको जो सूची मिली है वह केवल उदाहरण हैं। सुनिश्चित करें कि आप अर्थों को समझते हैं और कोशिश करें कि कार्रवाई को स्वीकार करने से पहले वह क्या करना चाहता है (आपको Yवास्तव में प्रस्तावित कार्यों को पूरा करने से पहले प्रेस करने की आवश्यकता है )।

प्रश्न में तारांकन संस्करण संभवतः गलत है ; apt-getएक नियमित अभिव्यक्ति को स्वीकार करता है और शेल के रूप में एक ग्लोब पैटर्न नहीं। तो क्या होता है

sudo apt-get remove application*

निम्नलखित में से कोई:

  1. खोल application*वर्तमान निर्देशिका में फ़ाइलों को देखने का विस्तार करने की कोशिश करता है । यदि (जैसा कि आम तौर पर मामला होता है) यह कुछ भी नहीं पाता है, तो यह ग्लोब पैटर्न को वापस लौटा देता है ( bashयहां डिफ़ॉल्ट व्यवहार के साथ --- इसमें zshत्रुटि होगी)।

  2. apt-getसंकुल जिसका नाम हटा देगा एक स्ट्रिंग है कि नियमित अभिव्यक्ति को संतुष्ट करता है application*, यह है कि, applicatioकी एक मनमाना संख्या के द्वारा पीछा किया n: applicatio, application, applicationn, libapplicatio, आदि

  3. यह देखने के लिए कि यह कैसे खतरनाक हो सकता है, कोशिश करें (दोहरी सुरक्षा के लिए जड़ के बिना) apt-get -s remove "wine*"( -sइसे करने के बजाय चीज़ का अनुकरण करेंगे) --- यह कहेंगे कि उन सभी पैकेजों को हटा दिया जाएगा जिनके नाम और आश्रित में "जीत" है। लगभग पूरी व्यवस्था ...

शायद, जो आदेश दिया गया था वह वास्तव में है

 sudo apt-get remove "^application.*"

(उद्धरण और बिंदु पर ध्यान दें) जो उन सभी पैकेजों को हटा देगा जिनके नाम से शुरू होता है application

ये आदेश,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

पूरी तरह से पैकेज प्रबंधन के दायरे से बाहर हैं। पैकेज मैनेजर का उपयोग किए बिना पैकेज से संबंधित फाइलें न निकालें! यह भ्रमित हो जाएगा और चीजों को करने का गलत तरीका है।

यदि आपको नहीं पता कि फ़ाइल किस पैकेज की है, तो यह आज़माएँ:

dpkg -S /path/to/file

9
--Purge विकल्प तब भी काम में आता है जब उनकी कॉन्फिग फाइलों सहित किसी भी शेष निर्भरता को पूरी तरह से हटाने का प्रयास किया जाता है: apt-get-autoremove --purge यह भी ध्यान रखना महत्वपूर्ण है कि आपके होम डायरेक्टरी में कॉन्फ़िगरेशन फाइल्स --purge ऑप्शन से अप्रभावित हैं। ये आपको मैन्युअल रूप से निकालने होंगे।
Glutanimate

1
यहाँ एक त्रुटि थी: apt-get स्वीकार करता है RE, ग्लोब नहीं; इसलिए apt-get remove pack * शून्य या अधिक k के बाद pac से शुरू होने वाले सभी पैकेजों को हटा देगा ... जो सामान्य रूप से अप्रत्याशित है। मैंने ऐसर को एडिट किया। यह भी देखें askubuntu.com/questions/210976/...
Rmano

मुझे लगता है कि यह उत्तर अब सटीक नहीं है। या तो apt remove -s texlive*या इसकी apt-getसमकक्ष वापसी लाइनें Note, selecting 'texlive-font-utils' for glob 'texlive*'( जैसे कि वे वास्तव में ग्लब्स स्वीकार करते हैं), इसके बाद सामान्य Package 'texlive-common' is not installed, so not removedऔर अंत में Remvलाइनें, जैसे Remv texlive-font-utils [2015.20160320-1] [...]
जोनाथन वाई।

@JonathanY। आप पैकेजों का भी चयन नहीं करेंगे। वैसे भी, क्या आप एक नया प्रश्न पूछ सकते हैं और विस्तार से थोड़ा और विस्तार से बता सकते हैं कि आपकी स्थिति क्या है। मुझे यह देखकर खुशी होगी :)
gertvdijk

मैं एक नया सवाल नहीं पूछ रहा हूँ। मैं एक संभावित बदलाव की ओर इशारा कर रहा हूं क्योंकि यह उत्तर बनाया गया था जो कुछ विवरणों को गलत बनाता है। बुद्धि के लिए, ऐसा प्रतीत होता है कि apt-get remove packa*वास्तव packa*में इसे रेगेक्स के रूप में देखने के बजाय ग्लोब लेता है : यह मेल खाता है packageलेकिन नहीं pack
जोनाथन वाई।

109

Ubuntu 12.04 और शायद उच्चतर के लिए, सही विधि है:

sudo apt-get --purge autoremove packagename

जैसा यहाँ विस्तृत है

packagename*उस का उपयोग न करें जो अनजाने पैकेजों को हटा सकता है और इससे अधिक समस्याएं पैदा कर सकता है। या यदि आप कम से कम एक के साथ इसे चलाना चाहिए -s, --simulate, --dry-runझंडा पहले वास्तव में देखने के लिए क्या यह यह कर के बिना नहीं होगा।


13
यह सही उत्तर है, संक्षिप्त और संक्षिप्त:
अनवर

20

आप इस कमांड का उपयोग कर सकते हैं:

sudo apt-get purge --auto-remove packagename

यह उन पैकेजों के साथ स्थापित की जाने वाली निर्भरता के साथ आवश्यक पैकेजों को शुद्ध करेगा। --auto-removeविकल्प (के उपनाम के किया जा रहा है autoremove) के लिए इसी तरह काम करता है sudo apt-get autoremove। इस कमांड का उपयोग करके हम एक कमांड चला सकते हैं:

sudo apt-get purge --auto-remove packagename

के बजाय:

sudo apt-get purge packagename
sudo apt-get autoremove

2
हालांकि आप सही हैं, लेकिन एक भी उपयोग कर सकते हैं sudo apt-get --purge autoremove packagename। यहाँ 1 कमांड
अनवर

क्या apt-get autoremove --purgeइसके बजाय पूरा कमांड भी लिखा जा सकता है apt-get purge --auto-remove?
felwithe

3
क्या कोई मुझे गोली मार सकता है?
मार्टिन एंडरसन

7

आप सुरक्षित रूप से sudo apt-get remove --purge applicationया sudo apt-get remove applications99% समय का उपयोग कर सकते हैं । जब आप purgeध्वज का उपयोग करते हैं , तो यह बस सभी कॉन्फ़िगर फ़ाइलों को भी हटा देता है। जो आप चाहते हैं या नहीं हो सकता है, इस पर निर्भर करता है कि क्या आप उक्त एप्लिकेशन को फिर से स्थापित करना चाहते हैं। application*सभी एप्लिकेशन को साथ शुरू की भरपाई कर देंगे application, जो आमतौर पर प्लग इन, अतिरिक्त सुविधाओं, मुख्य आवेदन आप निकाल रहे हैं उनमें आदि कर रहे हैं। अर्थात

sudo apt-get remove gedit*

निकाल देंगे gedit, gedit-pluginsऔर gedit-common। आमतौर पर ऐसा करना आवश्यक नहीं है, क्योंकि अधिकांश प्लगइन्स / संबद्ध प्रोग्राम मुख्य एप्लिकेशन पर निर्भर होते हैं, और जब आप मुख्य एप्लिकेशन को अनइंस्टॉल करते हैं तो स्वचालित रूप से हटा दिया जाएगा (या हटाने के लिए चिह्नित)।

आपका अंतिम आदेश केवल उन अनुप्रयोगों से बचे हुए को हटाने के लिए है जो गंदे अनइंस्टालर के रूप में जाने जाते हैं, और यह केवल अनुप्रयोग के किसी भी अवशेष को हटा रहा है।


5

मुझे एक पैकेज को हटाने में कुछ त्रुटि संदेश मिले, एकमात्र तरीका जो मैंने पाया कि यह काम किया था:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

मैंने पाया कि हालांकि केवल का उपयोग कर

dpkg --remove --force-remove-reinstreq package

उस पैकेज को नहीं हटाता है जो मुझे फ़ाइल को ले जाने के लिए सही रास्ता दिखाता है:

mv /var/lib/dpkg/info/package.* /tmp/

अपने आवेदन नाम के साथ स्थानापन्न पैकेज। Ubuntu में sudo का उपयोग करें, डेबियन में रूट बनें।



1

यह उस एप्लिकेशन पर निर्भर करता है जिसे आप हटाना चाहते हैं। हां कमांड जारी करने से पहले हमेशा इसकी निर्भरता की जांच करना सुनिश्चित करें। जब आप कमांड लाइन द्वारा कुछ हटाते हैं, तो यह कभी-कभी मुट्ठी भर पुस्तकालयों को दिखाएगा जिनकी अब आवश्यकता नहीं है। इन्हें apt-get autoremove से हटाया जा सकता है।

खबरदार कि sudo apt-get remove --purge applicationname जैसी कमांड्स का उपयोग करके कुछ निर्भरताएँ दूर कर सकते हैं जो अन्य अनुप्रयोगों द्वारा आवश्यक हैं और, जैसे कि, आपके सिस्टम को तोड़ सकती हैं।

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


मुझे लगता है कि पूरे डेबियन पैकेज सिस्टम को विशेष रूप से एक पैकेज को हटाने के लिए डिज़ाइन नहीं किया गया था अगर अन्य पैकेज उस पर निर्भर हैं। आप (सहायक रूप से) पूछा जा सकता है कि क्या आप सभी आश्रित पैकेजों को भी हटाना चाहते हैं, और यहीं आपको वास्तव में हटाए जाने वाले पैकेजों की सूची को पढ़ना चाहिए , जो मुझे लगता है कि आप क्या कहना चाह रहे हैं।
Xen2050

1

मैं सिर्फ एक बात स्पष्ट करना चाहता था जो यहां भ्रम की स्थिति पैदा करती है। dpkgउपयोगिता के बारे में जानते हैं या एक दूसरे के है, जो एक बड़ा कारण यह है कि था के संबंध में संकुल निर्भरता ट्रैक नहीं करता है aptविकसित किया गया था मेरा मानना है कि। आप इसके बारे में इस पृष्ठ पर खंड 8.6 में पढ़ सकते हैं डेबियन जीएनयू / लिनक्स एफएक्यू - डेबियन पैकेज प्रबंधन उपकरण

  • उपयुक्त के साथ: अगर मैं पैकेज ए को शुद्ध करना चाहता था, और इसमें पैकेज बी नामक एक निर्भरता है, और पैकेज बी में कोई अन्य निर्भर पैकेज नहीं था, तो पैकेज ए और बी को शुद्ध किया जाएगा। यदि पैकेज B DID में अन्य आश्रित पैकेज हैं, तो केवल पैकेज A को शुद्ध किया जाएगा।

  • Dpkg के साथ: क्या निर्भरता? आपने अभी मुझे लानत
    पैकेज को शुद्ध करने के लिए कहा था, इसलिए मैंने ऐसा किया! आपकी ओर से खराब योजना
    मेरे हिस्से में आपातकाल नहीं है ।

उस ने कहा, यहाँ दो एक-लाइनर हैं जिनका उपयोग प्रत्येक शुद्ध तरीकों के लिए किया जा सकता है:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

--dry-runवास्तविक पर्ज ऑपरेशन करने के लिए यह रिपोर्ट करने के बजाय कि यह क्या कार्रवाई हुई है, हटाने के लिए।

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