2008-09-22 15 views
9

काम पर मैं विंडोज पर पर्ल 5.8.0 का उपयोग कर रहा हूं।मैं मॉड्यूल खोए बिना विंडोज पर पर्ल कैसे अपडेट कर सकता हूं?

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

तो, मैं एक और हालिया संस्करण में अपग्रेड करना चाहता हूं, लेकिन नए को किसी मौजूदा स्क्रिप्ट को तोड़ना नहीं चाहिए। विशेष रूप से, मैंने जो "उपयोग" मॉड्यूल स्थापित किया है, उसका एक समूह नए संस्करण में स्थापित होना चाहिए।

मेरे वर्तमान संस्करण को अपडेट करने का सबसे विश्वसनीय (और सबसे आसान) तरीका क्या है, यह सुनिश्चित करना कि एनएमके नृत्य के साथ मैंने जो भी किया है, वह अभी भी अद्यतन होने के बाद होगा?

+0

यह एक अच्छा विचार हो सकता है किसी को, या कुछ इसी तरह 'खिड़कियों पर पर्ल अद्यतन करने के लिए कैसे' इस के शीर्षक को परिवर्तित करता है। –

+0

मेरा सुझाव है "मॉड्यूल खोए बिना विंडोज़ पर पर्ल अपडेट कैसे करें।" मैंने अपना जवाब देना शुरू कर दिया, फिर एहसास हुआ कि यह फिट नहीं हुआ क्योंकि मेरा जवाब केवल यूनिक्स है, और आपको अपने सभी मॉड्यूल को पुनर्स्थापित करने की आवश्यकता है (जो मुझे लगता है कि वैसे भी एक आवश्यकता होगी)। – skiphoppy

+0

शीर्षक सुझावों के लिए धन्यवाद। मैंने आपके सुझावों को दर्शाने के लिए संपादित किया है। – piCookie

उत्तर

9

जैसा कि अन्य ने नोट किया, नए पर्ल को एक अलग जगह पर स्थापित करके शुरू करें। मेरे पास कई perls इंस्टॉल हैं, प्रत्येक दूसरे से पूरी तरह से अलग है।

ऐसा करने के लिए, आपको स्वयं स्रोतों को कॉन्फ़िगर और संकलित करना होगा। जब आप configure चलाते हैं, तो आपको इंस्टॉलर निर्दिष्ट करने का मौका मिलेगा। मैंने the Spring 2008 issue of The Perl Review में "कंपाइलिंग माई ओन पर्ल" में इसके लिए विस्तृत निर्देश दिए। में एक आइटम भी प्रभावी पर्ल प्रोग्रामिंग है जो आपको दिखाता है कि यह कैसे करें।

अब, अपने मूल वितरण पर वापस जाएं और ऑटोबंडल फ़ाइल बनाने के लिए cpan -a चलाएं। यह एक पॉड दस्तावेज़ है जो आपके द्वारा इंस्टॉल की गई सभी अतिरिक्त सामग्री सूचीबद्ध करता है, और CPAN.pm समझता है कि सब कुछ पुनर्स्थापित करने के लिए इसका उपयोग कैसे करें।

नई पर्ल में चीजों को स्थापित करने के लिए, CPAN.pm शुरू करने के लिए उस perl के पथ का उपयोग करें और आपके द्वारा बनाई गई ऑटोबंडल फ़ाइल इंस्टॉल करें। CPAN.pm उस perl की कॉन्फ़िगरेशन से सही स्थापना पथ प्राप्त करेगा।

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

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

गुड लक, :)

1

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

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

इसे स्वयं बनाने के बारे में सुनिश्चित नहीं है — मैं हमेशा विंडोज के लिए प्रीपेक्टेड बाइनरी का उपयोग करता हूं।

मुझे यकीन नहीं है कि मैं समझता हूं कि आप वास्तव में क्या पूछ रहे हैं। क्या आपके पास 5.8 मेकफ़ाइल में किए गए परिवर्तनों की एक सूची है? या सवाल यह है कि ऐसी सूची कैसे प्राप्त करें? क्या आप यह भी पूछ रहे हैं कि सीपीएएन से प्राप्त बेस इंस्टॉल के ऊपर कौन से पैकेज हैं? क्या आप यह भी पूछ रहे हैं कि कैसे परीक्षण करें कि आपके कस्टम परिवर्तन उन पैकेजों को तोड़ नहीं देंगे यदि आप उन्हें सीपीएएन से फिर से प्राप्त करते हैं?

+0

बड़ी संख्या में संशोधनों को देखते हुए, प्रीपेकेज शायद काम नहीं करेंगे। मैंने फ़ोल्डर नामक संस्करण में भी स्थापित किया है और स्विचिंग में मदद के लिए जेनेरिक आर: \ PERL फ़ोल्डर से लिंक किया है। – piCookie

+0

5.8 मेकफ़ाइल में परिवर्तन महत्वहीन हैं। मैं और पूछ रहा हूं कि मुझे प्राप्त करने वाले बेस इंस्टॉल के ऊपर कौन से पैकेज ढूंढें। मेरे पास बहुत सारी स्क्रिप्ट हैं जो "xxx का उपयोग करें" कहती हैं जहां xxx डाउनलोड और बनाया गया था। उन्हें सभी को काम जारी रखने की आवश्यकता है। – piCookie

+0

यह थोड़ा लंगड़ा हो सकता है, लेकिन आप टेक्स्टपैड की "फ़ाइलें खोजें" या "^ उपयोग" के लिए अपनी सभी स्क्रिप्ट को खोजने के बराबर उपयोग कर सकते हैं। – Kev

8

मैं Strawberry Perl का उपयोग करने पर गंभीरता से विचार करने पर विचार करता हूं।

+0

स्ट्रॉबेरी पर्ल मुझे यह इंस्टॉल करने के बारे में कोई विकल्प नहीं देता है कि यह कहां इंस्टॉल हो रहा है। यह मेरे मामले में एक सौदा ब्रेकर है। – piCookie

4

आप एक अलग स्थान पर पर्ल का दूसरा संस्करण स्थापित कर सकते हैं। आपको नए संस्करण में किसी गैर-कोर मॉड्यूल को फिर से इंस्टॉल करना होगा। सामान्य रूप से, पर्ल के विभिन्न संस्करण द्विआधारी संगत नहीं होते हैं, जो आपके पास कोई समस्या हो सकती है यदि आपके पास कोई प्रोग्राम-विशिष्ट पुस्तकालय है जो XS घटकों का उपयोग करता है। शुद्ध पर्ल मॉड्यूल प्रभावित नहीं होना चाहिए।

3

यदि आप 5.8 ट्रैक के भीतर रहते हैं, तो एक्सएस (बाइनरी) एक्सटेंशन वाले सभी स्थापित मॉड्यूल काम करना जारी रखेंगे, क्योंकि बाइनरी संगतता उसी 5.8 श्रृंखला के भीतर गारेन की जाती है। यदि आप 5.10 पर चले गए हैं तो आपको एक्सएस घटकों वाले किसी भी मॉड्यूल को फिर से कंपाइल करना होगा।

आपको केवल यह सुनिश्चित करना है कि नई बिल्ड में पिछली सूची में इसकी @INC सरणी (जिसे मॉड्यूल देखने के लिए उपयोग किया जाता है) शामिल है।

यह की आवाज़ से, मुझे लगता है कि आप Windows पर हैं, जिस स्थिति में वर्तमान @INC रास्तों यदि आप किसी अन्य निर्देशिका में अपने नए पर्ल संस्करण को लक्ष्य सुनिश्चित करें

perl -le "print for @INC" 

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

स्ट्राबेरी पर्ल शायद इन दिनों विंडोज़ पर अपने आप को रोल करने के लिए सबसे अच्छा वितरण है।

+0

क्या स्ट्रॉबेरी मुझे मॉड्यूल जोड़ने की अनुमति देता है जिसे मैंने 5.8 श्रृंखला में घुमाया है? मैं नवीनतम संस्करण में जाने के लिए सबसे ज्यादा खुश हूं, इसलिए 5.8 बनाए रखना दिलचस्प नहीं है। – piCookie

1

मुझे लगता है कि इसका जवाब किसी तरह का virtualisation शामिल है:

  1. अपने वर्तमान को लाइव मशीन का एक सटीक प्रतिलिपि सेट करें। जैसा कि आप इस समय उपयोग कर रहे हैं उसी निर्देशिका स्थान और संरचनाओं का उपयोग करके पर्ल को अपग्रेड करें।
  2. नई छवि पर परीक्षण की अपनी स्क्रिप्ट के माध्यम से जाएं।
  3. एक बार जब आप खुश हों, तो स्विच फ्लिप करें।

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

आप कोशिश करते हैं और अपने सभी लिपियों की एक सूची का निर्माण करके इस पहचान सकते हैं - संस्करण नियंत्रण में किया जा रहा है एक सूची है कि आप वैसे भी होना चाहिए, अपने सभी कोड के सहारे से (आप हैं संस्करण नियंत्रण का उपयोग कर, जैसे Subversion, हाँ ?) - और इसके माध्यम से पुनरावृत्त, प्रत्येक स्क्रिप्ट पर perl -c चला रहा है। जैसे this script। उस प्रकार का स्वचालित परीक्षण अमूल्य है: आप इसे चलाने के लिए सेट कर सकते हैं, एक कॉफी या जो भी हो, दूर जा सकते हैं, और यह जांचने के लिए वापस आ सकते हैं कि सबकुछ काम करता है या नहीं। पहले कुछ बार आपको शायद एक अस्पष्ट मॉड्यूल मिलेगा जिसे आप भूल गए थे, जो ठीक है: इसे स्वचालित करने का पूरा बिंदु यह है कि आप को प्रत्येक स्क्रिप्ट की जांच करने के लिए काम करने की ज़रूरत नहीं है ।

+0

perl -c के बारे में महान युक्ति। इससे बुनियादी सैनिटी चेक प्राप्त करना बहुत आसान हो जाएगा। – piCookie

0

आप ActivePerl और इसके "पीपीएम" उपकरण का उपयोग क्यों नहीं करते हैं (पुनः) मॉड्यूल स्थापित करने के लिए?

alt text

+0

कारण यह है कि मेरे पास संकलन और स्थापना के माध्यम से स्थापित अतिरिक्त मॉड्यूल के साथ पहले से ही एक perl स्थापना थी, और मैं कुछ ऐसा चाहता था जो उस पर्ल स्थापना को अपग्रेड करेगा जो मैंने पहले ही जोड़ा था। यदि कोई स्वचालित तरीका नहीं है, तो आपको सुझाव देते हुए मुझे पूरी तरह से नई पर्ल रिलीज पर स्विच करना पड़ सकता है। – piCookie

+0

आप "पीपीएम सूची साइट" का उपयोग कर स्थापित मॉड्यूल की एक सूची प्राप्त कर सकते हैं। क्षेत्रों की सूची प्राप्त करने के लिए "पीपीएम क्षेत्र सूची"। "पीपीएम एरिया सिंक साइट" पीपीएम डेटाबेस को उन संकुलों के साथ अद्यतन करने के लिए जो पीपीएम का उपयोग नहीं कर रहे हैं। – lexicalscope

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

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