2010-06-13 15 views
12

हमारे पास एक सर्वर फार्म है कि हम धीरे-धीरे पर्ल (5.12.1) के एक नए संस्करण में माइग्रेट कर रहे हैं। वर्तमान में हम 5.8.5 चल रहे हैं। ओएस को रेडहाट 4 से रेडहाट 5 तक अपग्रेड किया जाएगा, लेकिन रेडहाट 5 अभी भी पर्ल 5.8.8 पर वापस आ गया है। इस प्रकार हमारे स्रोत पेड़ में थोड़ी देर के लिए हम पर्ल के दो संस्करणों का समर्थन करेंगे।पर्ल के विभिन्न संस्करणों को अलग-अलग सीपीएएन मॉड्यूल इंस्टॉलेशन की आवश्यकता होती है?

मुझे पर्ल के नए संस्करण को हमारे स्रोत पेड़ में स्थापित करने के लिए कहा गया है, और साथ ही साथ हमारे द्वारा उपयोग किए जाने वाले सभी सीपीएएन मॉड्यूल भी स्थापित किए गए हैं। मुझे वास्तव में पर्ल के सही संस्करण के साथ मॉड्यूल को 'संकलित' करने के लिए कहा गया था। मैं इस से उलझन में हूँ। क्या कुछ मॉड्यूल वास्तव में पर्ल के विभिन्न संस्करणों के लिए खुद को अलग-अलग कॉन्फ़िगर करते हैं? यह देखते हुए, मुझे लगता है कि मुझे अपने पेड़ में पर्ल के प्रत्येक संस्करण के लिए एक सीपीएएन निर्देशिका कॉन्फ़िगर करना चाहिए?

इस परिदृश्य के बारे में कोई जानकारी या 'गॉथस'?

संपादित करें: एक अतिरिक्त प्रश्न के रूप में, एक ही सीपीए निर्देशिका (~/.cpan द्वारा इंगित) दोनों पेड़ों के लिए सेवा करेगी, या जब मैं विभिन्न पेड़ों (मॉड्यूल स्थापित करना) में काम कर रहा हूं, तो क्या मुझे अलग-अलग निर्देशिकाओं में लिंक करना चाहिए?

उत्तर

9

एक्सएस (संकलित सी कोड, गतिशील रूप से लोड) का उपयोग करने वाले किसी भी पर्ल मॉड्यूल सामान्य रूप से केवल पर्ल के उसी संस्करण के साथ काम करेंगे जो उन्हें संकलित किया गया था। यह दो कारणों से है:

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

कारण दो कारण है क्योंकि perl एपीआई प्रमुख संस्करणों के बीच बदल सकता है, भले ही आप पुस्तकालयों को उचित निर्देशिका में कॉपी करना चाहते हों, फिर भी वे उपयोग की जाने वाली सुविधाओं के आधार पर काम कर सकते हैं या नहीं कर सकते हैं, और दो संस्करणों से कितना अलग perl हैं। 5.8 और 5.12 के बीच महत्वपूर्ण अंतर हैं जो लगभग सभी कोड तोड़ने की संभावना है।

यह शुद्ध पर्ल मॉड्यूल पर लागू नहीं होता है, हालांकि; उन्हें बहुत कम अपवादों के साथ स्वतंत्र रूप से प्रतिलिपि बनाई जा सकती है। यह केवल एक्सएस कोड है जो मुद्दा है।

5

कुछ perl मॉड्यूल संकलित और सिस्टम पुस्तकालयों से खुद को लिंक। यदि आप अपने ओएस को अपग्रेड करते हैं तो एक मौका है कि ये libs अब मौजूद नहीं हैं जो इन मॉड्यूल को गलत तरीके से चलाने या चलाने के लिए कारण नहीं बनेंगे। इसलिए आपके perl मॉड्यूल recompiling की सिफारिश की है।

यदि आप अपने नए सिस्टम पर स्क्रैच से पर्ल का एक नया संस्करण पुनः स्थापित करते हैं तो आपको कोई समस्या नहीं आनी चाहिए, क्योंकि इंस्टॉलेशन के दौरान दाएं हेडर और libs का उपयोग किया जाएगा।

4

यह पर्ल का संस्करण नहीं होगा जो अंतर्निहित प्लेटफॉर्म है। Redhat4 और Redhat5 पर्ल 5.8.5 और 5.8.8 से कहीं अधिक अलग हैं। वास्तव में यदि आपको इन संस्करणों के बीच कोई अंतर मिलता है, तो यह शायद एक बग है।

आरएच 4 और आरएच 5 में विभिन्न लाइब्रेरी सेट हैं, और इन पुस्तकालयों के खिलाफ perl देशी एक्सटेंशन को फिर से सम्मिलित करना होगा। यदि आप इन संकलित पेड़ों को अपने स्रोत भंडार में रखते हैं, तो आपको वास्तव में 2 पेड़ों की आवश्यकता होगी। यदि आप इससे बचना चाहते हैं तो आप 'स्थिर रूप से संकलित' कर सकते हैं लेकिन यह बेहद गन्दा हो जाता है और स्क्रिप्ट के मेमोरी पदचिह्न और संबंधित लोड समय को गंभीर रूप से प्रभावित कर सकता है, अनुशंसित नहीं (और कई मामलों में भी संभव नहीं है)।

एक क्लीनर समाधान एक स्थापित स्क्रिप्ट होगी जो सीपीएएन से प्रतियों को डाउनलोड/संकलित/स्थापित करता है और स्रोत कला को इन कलाकृतियों से मुक्त रखता है। आप अभी भी तय कर सकते हैं कि आप लक्ष्य मशीन पर स्थापना के हिस्से के रूप में या लक्ष्य मशीन पर स्थापना से पहले एक बाइनरी पैकेज बनाने के हिस्से के रूप में ऐसा करना चाहते हैं या नहीं।

-1

कृपया अलग सीपीएएन के लिए मॉड्यूल स्थापित करने के तरीके को समझने के लिए नीचे दिया गया यूआरएल पाएं।

http://perllinux.blogspot.in/2014/08/multiple-perl-cpan-on-single-machine.html

और, हाँ, पर्ल के विभिन्न संस्करणों मॉड्यूल उन सभी पर स्थापित किया जाना चाहिए।

+0

कृपया लिंक प्रदान करने के बजाए लेख को उद्धृत या सारांशित करें। इस तरह आपका उत्तर उपयोगी रहता है, भले ही स्रोत गायब हो जाए। – Brian

+0

@ गौतम प्रशांत: लेख सारांशित करें :) :) –

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