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


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

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)

478
2017-09-14 21:54


मूल


इस पोस्ट में आपके कुछ प्रश्नों का उत्तर दिया जा सकता है: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application* अवसर पर अप्रत्याशित परिणाम दे सकते हैं - उदाहरण के लिए, यदि आपके पास नाम की वर्तमान निर्देशिका में एक फ़ाइल है application_information, खोल इसे प्राप्त करने से पहले खोल इसे विस्तारित करेगा। यदि यह हो रहा है और आप शाब्दिक तारांकन चाहते हैं, तो आप इसका उपयोग कर सकते हैं application\* या 'application*' - Izkata
application* और भी खतरनाक है जहां वर्तमान निर्देशिका में कोई फाइल नहीं है: apt-get नियमित अभिव्यक्तियों का उपयोग करता है, कोई ग्लोब पैटर्न नहीं। लोगों ने हटाने की कोशिश कर रहे पूरे सिस्टम को लगभग मिटा दिया है wine*। - Andrea Corbellini
क्या आप एक जवाब स्वीकार कर सकते हैं? उन लोगों का आभारी होना जिन्होंने आपको उत्तर दिया। - m-ric
न application* न application\* सुरक्षित है! का हवाला देते हुए * साथ में \ या '  ' केवल बढ़ती है जोखिम, सुनिश्चित करना * के रूप में पारित किया गया है apt-get (हालांकि यह आमतौर पर वैसे भी है!), कारणों apt-get एक रेगेक्स के रूप में तर्क की व्याख्या करने के लिए। एक रेगेक्स में * का मतलब है "पिछले चरित्र के शून्य या अधिक।" गलती का एक आम रूप अनइंस्टॉल करना है wine*, सभी संकुल के साथ हटा रहा है win (नहीं wine, win) कहीं भी उनमें से किसी के आधार पर उनके नाम और सभी पैकेजों में। देख यह स्पष्टीकरण तथा संभावित सुधार। @Izkata - Eliah Kagan


जवाब:


  • 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

638
2017-09-14 22:04



- कॉन्फ़िगर विकल्प सहित किसी भी शेष निर्भरता को पूरी तरह से निकालने का प्रयास करते समय --purge विकल्प भी आसान होता है: apt-get-autoremove --purge  यह भी ध्यान रखना महत्वपूर्ण है कि आपकी होम निर्देशिका में कॉन्फ़िगरेशन फ़ाइलें --purge विकल्प से अप्रभावित हैं। ये आपको मैन्युअल रूप से हटाना होगा। - Glutanimate
यहां एक त्रुटि हुई: apt-get आरई स्वीकार करता है, ग्लोब नहीं; तो एपीटी-निकालें पैक * सभी पैकेजों को हटा देगा जो पीएसी के साथ शुरू होता है जिसके बाद शून्य या अधिक के ... जो आमतौर पर अप्रत्याशित होता है। मैंने anser संपादित किया। यह भी देखें 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] [...]। - Jonathan Y.
@JonathanY। आप अधिष्ठापित संकुल भी नहीं चुनेंगे। वैसे भी, क्या आप कृपया एक नया प्रश्न पूछ सकते हैं और विस्तार से थोड़ा और विस्तार से बता सकते हैं कि आपकी स्थिति क्या है। मुझे इसे देखकर खुशी होगी :) - gertvdijk
मैं एक नया सवाल नहीं पूछ रहा हूं। मैं एक संभावित परिवर्तन पर इशारा कर रहा हूं क्योंकि यह उत्तर दिया गया था जो कुछ विवरण गलत बनाता है। बुद्धिमानी के लिए, ऐसा लगता है apt-get remove packa* वास्तव में ग्लोब लेता है packa* इसे रेगेक्स के रूप में देखने की बजाय: यह मेल खाता है package लेकिन नहीं pack। - Jonathan Y.


उबंटू 12.04 और शायद उच्च के लिए, सही विधि है:

sudo apt-get --purge autoremove packagename

विस्तृत के रूप में यहाँ

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


92
2017-11-20 20:01



यह सही जवाब है, संक्षिप्त और संक्षेप में: - Anwar


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

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

17
2017-09-16 20:08



हालांकि आप सही हैं, लेकिन कोई भी इसका उपयोग कर सकता है sudo apt-get --purge autoremove packagename। यहां 1 वही आदेश है - Anwar
पूरा आदेश भी लिखा जा सकता है apt-get autoremove --purge के बजाय apt-get purge --auto-remove ? - felwithe
क्या कोई मुझे शूट कर सकता है? - Martin Andersson


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

sudo apt-get remove gedit*

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

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


7
2017-09-14 22:05





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

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/

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


5
2018-02-26 09:26





मुझे इंटरनेट पर यह आदेश मिला।

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems


3
2017-09-14 22:10





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

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

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


1
2017-09-14 22:10



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


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

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

  • डीपीकेजी के साथ: निर्भरता क्या है? तुमने मुझे सिर्फ लानत को शुद्ध करने के लिए कहा था
    पैकेज तो मैंने यही किया! आपके हिस्से पर खराब योजना नहीं है
    मेरे हिस्से पर एक आपात स्थिति का गठन।

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

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 यह रिपोर्ट करने के बजाय वास्तविक शुद्ध संचालन करने के लिए कि यह क्या कदम उठाएगा।


1
2017-08-23 23:32