2011-10-15 18 views
19

कल cpan द्वारा स्थापित मॉड्यूल मैं कुछ सॉफ्टवेयर परीक्षण करना चाहता था और दस्तावेज में कहा गया है कि, स्थापित करने के लिए मैं सिर्फ टाइप करने के लिएस्थापना रद्द करें सभी पर्ल

cpan -i Software 

मैं इस्तेमाल कभी नहीं किया cpan की जरूरत है, मैं सिर्फ इतना पता है कि यह है पर्ल पैकेज प्रबंधक। (क्या यह ..?) हालांकि, यह पता चला कि मुझे निर्भरता के भार की आवश्यकता है, और मैं बेवकूफ हूं, मैंने बस उन सभी को स्थापित किया है। (सबसे पहले, मुझे सीपीएन स्थापित करना पड़ा जिसने मुझे बहुत सारे प्रश्न पूछे) लंबी कहानी छोटी, मैं बस इसे फिर से हटाना चाहता हूं। मैंने थोड़ा गुस्सा किया, और ऐसा लगता है जैसे सीपीए में अनइंस्टॉल दिनचर्या नहीं है, खासतौर पर सभी पैकेजों के लिए। क्या मैं कुछ निर्देशिका हटा सकता हूं या क्या मैं परेशानी में भाग जाऊंगा?

उत्तर

27

cpan कमांड वास्तव में apt-get जैसे पैकेज प्रबंधक नहीं है। यह एक ऐसा उपकरण है जो सीपीएएन (साइट, या इसके दर्पणों में से एक) से डाउनलोड और इंस्टॉल करता है। इस कार्य को समाप्त करने के बाद इसे पहले से किए गए कार्यों के बारे में बहुत कुछ याद नहीं है, कम से कम पहले से स्थापित मॉड्यूल को हटाने के लिए पर्याप्त नहीं, कम से कम भरोसेमंद, साफ या निर्भरता-सुरक्षित रूप से नहीं। (अद्यतन:App::pmuninstall पर देखने के बाद, इसका उपयोग निर्भरताओं को संभालने के लिए किया जा सकता है, लेकिन यह बाहरी (पढ़ने: वेब) स्रोतों से कनेक्ट करके ऐसा करता है, जो इन्हें अलग से गणना करता है, जो ठीक है, लेकिन मैं पिछले कथन से खड़ा हूं CPAN.pm ऐसा नहीं करता है।)

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

विंडोज़ पर या यदि आप लिनक्स/मैक पर एक गैर-सिस्टम पर्ल का उपयोग कर रहे हैं तो आप केवल पर्ल को हटा सकते हैं और इसे पुनः इंस्टॉल कर सकते हैं। यदि आप लिनक्स/मैक पर सिस्टम स्थापित पर्ल का उपयोग कर रहे हैं, तो मैं इसकी अनुशंसा नहीं करता हूं, हालांकि आप इसे अपने ओएस को तोड़ सकते हैं (यदि आप सावधान थे, तो आप ठीक हो सकते हैं, लेकिन कुछ एमबी बचाने के लिए इसके लायक नहीं हैं!)।

भविष्य में, आप perlbrew का उपयोग करके पर्ल के स्थानीय संस्करण को आसानी से इंस्टॉल कर सकते हैं, यदि दस्तावेज़ पर्याप्त नहीं हैं (वे होना चाहिए) तो पूरे वेब पर ट्यूटोरियल हैं। इसमें आपको नवीनतम और महानतम पर्ल संस्करणों के साथ खेलने का बोनस भी है, जो आपकी प्रणाली की संभावना अभी तक नहीं आती है। फिर यदि आप जंक का पर्वत स्थापित करते हैं, या इसे कुछ पागल कर देते हैं, तो उस संस्करण को हटा दें और एक अलग संस्करण को पुनर्स्थापित/इंस्टॉल करें।

एक और अच्छा टूल cpanminus (या संक्षिप्त के लिए सीपीएनएम) है जो एक नया, अधिक उपयोगकर्ता के अनुकूल सीपीएन उपकरण है। सभी अच्छे बच्चे इसका उपयोग कर रहे हैं।

+1

अच्छी व्याख्या के लिए धन्यवाद। मैंने lib निर्देशिकाओं में थोड़ा गहरा खोद लिया और जैसा आपने सुझाव दिया है उन सभी फ़ाइलों को रखने का फैसला किया। – janoliver

+0

'pm-uninstall' मॉड्यूल को हटा सकता है। – xenoterracide

+0

@xenoterracide यह स्थापित करने के लिए cpanm इस्तेमाल करने पर निर्भर करता है? डॉक्टर पर एक सरसरी नज़र यह सुझाव देने लग रहा था। किसी भी तरह से, मुझे कम से कम डेटा स्टोरेज परिप्रेक्ष्य से सीपीएएन पर किसी भी मॉड्यूल को अनइंस्टॉल करने की आवश्यकता नहीं दिखाई देती है। अभी भी यह जानना अच्छा है कि कुछ –

0

मुझे लगता है कि सबसे अच्छा विकल्प पर्ल अनइंस्टॉल है और इसे फिर से इंस्टॉल करें।

+7

इस सुझाव के साथ एकमात्र समस्या यह है कि आपको यह नहीं करना चाहिए कि आप लिनक्स/मैक पर अपने सिस्टम-व्यापी इंस्टॉल का उपयोग कर रहे हैं। यदि आप विंडोज़ पर हैं तो यह वास्तव में शायद पसंद किया जाता है। –

2

मुझे "यह सब" हटाने के बारे में निश्चित नहीं है। लेकिन एक मॉड्यूल को हटाने के लिए आप App::pmuninstall का उपयोग मॉड्यूल को अनइंस्टॉल करने के लिए इसकी एकमात्र स्क्रिप्ट pm-uninstall के साथ कर सकते हैं। फिर आप deps को रिकर्सली हटाने के लिए किसी प्रकार की स्क्रिप्ट लिखने में सक्षम हो सकते हैं।

13

आप cpanplus साथ अलग-अलग मॉड्यूल स्थापना रद्द कर सकते (पर्ल के साथ जहाजों) इस तरह:

cpanp uninstall SQL::Abstract 

आप इस तरह cpan स्क्रिप्ट के साथ स्थापित सभी मॉड्यूल देख सकते हैं:

perldoc perllocal 

एक साथ दो लाना :

for module in $(perldoc -u perllocal | grep -F 'C<Module> L<' | sed 's/^.*L<\(.*\)|.*>$/\1/') ; do 
    cpanp uninstall "$module" 
done 
+1

मुझे लगता है कि स्क्रिप्ट का लाइन 2 'cpanm --uninstall "$ मॉड्यूल होना चाहिए" –

1

यदि आप सीपीएन का उपयोग नहीं कर सकते हैं क्योंकि आपके अंदर असंगत मॉड्यूल हैं पथ, आप हाथ से सभी स्थापित मॉड्यूल को हटा सकते हैं। उदाहरण के लिए, मैंने फेडोरा 22 से फेडोरा 23 तक अपग्रेड किया और पर्ल संस्करण बदल गया। /usr/local/lib64/perl5 में सीपीएनएम के माध्यम से पहले स्थापित सभी मॉड्यूल अब और काम नहीं करते थे और मुझे सीपीएनएम का उपयोग करने से रोका था।

$ cpanm --uninstall Apache::DBI 
Attempt to reload Scalar/Util.pm aborted. 
Compilation failed in require at /usr/share/perl5/vendor_perl/File/Temp.pm line 18. 
... 

मुझे लगता है कि निर्देशिका को ले जाकर इस का समाधान कर सकता:

$ mv /usr/local/lib64/perl5 /root/usr-local-lib64-perl5 

कि निर्देशिका का नाम आपके सिस्टम पर भिन्न हो सकते हैं।

सावधान: यदि मॉड्यूल उस निर्देशिका के बाहर फ़ाइलों को स्थापित करता है, उदाहरण के लिए सिस्टम लाइब्रेरी फाइलें, ये फ़ाइलें वहां रहेंगी।

संबंधित मुद्दे