2013-03-21 11 views
7

मैं उत्प्रेरक, ओपन स्ट्रीट मानचित्र और मॉड्यूल के दर्जनों के साथ small open-source Perl project पर काम करता हूं। मैं सीपीएएन पर पाए गए कई मॉड्यूल का उपयोग करने की कोशिश करता हूं क्योंकि मेरा उद्देश्य पहिया को फिर से नहीं करना है।ओपन सोर्स पर्ल प्रोजेक्ट द्वारा उपयोग किए गए मॉड्यूल की स्थापना का प्रबंधन कैसे करें?

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

इसके लिए सबसे अच्छे अभ्यास क्या हैं? मुझे Makefile.pl में सभी आवश्यक मॉड्यूल सूचीबद्ध करना है? मुझे अब इस बारे में चिंता है क्योंकि मैंने इस परियोजना पर कड़ी मेहनत की है, बहुत अच्छी प्रथाओं का पालन करने का प्रयास करें, लेकिन मुझे लगता है कि मैं इस विशेष बिंदु पर गलती करता हूं (इस बारे में नहीं सोचने के लिए)।

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

उत्तर

1

आपको केवल उन मॉड्यूल (Makefile.PL) में सूचीबद्ध करना चाहिए जो आपको सीधे चाहिए (यानी, जो आपके 0 मॉड्यूल में use या require) हैं। आपको उन मॉड्यूल के बारे में चिंता करने की आवश्यकता नहीं है जो अप्रत्यक्ष रूप से आवश्यक हैं (यानी, आपके द्वारा उपयोग किए जाने वाले मॉड्यूल द्वारा); वह इंस्टॉलर का काम है।

आपके द्वारा उपयोग किए जाने वाले मॉड्यूल की एक सूची प्राप्त करने के लिए, आप निश्चित रूप से सूची को संकलित कर सकते हैं। लेकिन अगर आपके पास है उत्प्रेरक मार्गदर्शिका पर, पृष्ठ 12 9 पर एक आसान बैश फ़ंक्शन है, जो मुझे यकीन नहीं है कि मैं यहां पुन: पेश कर सकता हूं। Perl::PrereqScanner::App भी है, जिसका मैंने सीधे उपयोग नहीं किया है, लेकिन जिसका उपयोग Dist :: Zilla द्वारा किया जाता है।

एफडब्ल्यूआईडब्ल्यू, यदि आप अपने वितरण को प्रबंधित करने के लिए Dist::Zilla का उपयोग करते हैं (जो मैं निजी परियोजनाओं के लिए भी करता हूं जो मैं सीपीएएन पर अपलोड नहीं करता हूं), यह आपके लिए ट्रैक निर्भरताओं (और डिफ़ॉल्ट रूप से) कर सकता है।

+0

Thanx @ edward-baudrez आपके उत्तर के लिए। यह बहुत बुरा है कि मैंने पर्ल :: प्रीरेक स्कैनर :: ऐप का उपयोग नहीं किया था, अब मुझे लगता है कि मैंने पहिया का फिर से आविष्कार किया है। – smonff

4

यदि आप उत्प्रेरक का उपयोग करते हैं, तो आप अपने उत्प्रेरक अनुप्रयोग के लिए बनाए गए Makefile.PL में निर्भरताओं के रूप में आवश्यक मॉड्यूल जोड़ सकते हैं।

+1

मुझे यह इंगित करने में उपयोगी हो सकता है कि ओपी को केवल अपने कोड में 'उपयोग' कथन में दिखाई देने वाले सीपीएएन मॉड्यूल सूचीबद्ध करने की आवश्यकता है। –

+0

@ सिननुनूर एक महत्वपूर्ण बात है जब आप मॉड्यूल के सौ स्थापित करते हैं लेकिन इनमें से कुछ का उपयोग करते हैं! – smonff

1

मैं carton (एक ही लेखक से भयानक सीपीएनएम) पर एक झांक लेने की सलाह दूंगा।

मैं रुबी के bundler का बड़ा प्रशंसक हूं और कार्टन के दस्तावेज़ीकरण ने इसे "पर्ल के लिए बंडलर" के रूप में वर्णित किया है। मैंने थोड़ी देर पहले इसका प्रयोग किया और यह बहुत ही आशाजनक लग रहा था।

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