2009-07-23 10 views
5

यह मदद मिलेगी मुझे समझने की अगर मैं कारणों मॉड्यूल समझा कि मैं क्या मॉड्यूल है अप विंडो @INC के लिए उपयोग की जाने वाली विभिन्न निर्देशिकाएं क्या हैं?

ActiveState तहत @INC

के तहत विभिन्न निर्देशिका में समाप्त होता है यह काफी स्पष्ट

C:/Perl/lib 
C:/Perl/site/lib 

पहला है कोर पर्ल है 2nd, जबकि सामान सामान मैं पीपीएम के माध्यम से स्थापित किया है (मैं यह अधिकार मिल गया है?)

डेबियन के तहत हालांकि यह एक बहुत अधिक compicated

/etc/perl 
/usr/local/lib/perl/5.8.4 
/usr/local/share/perl/5.8.4 
/usr/lib/perl5 
/usr/share/perl5 
/usr/lib/perl/5.8 
/usr/share/perl/5.8 
/usr/local/lib/site_perl 
लगता है

इतनी सारी निर्देशिकाओं का कारण क्या है और कहां जाता है।

उत्तर

4

इन निर्देशिकाओं में से फ़ाइलें, और पर्ल की मेरी जानकारी के आधार पर, मैं कहूंगा कि वे इस तरह टूट:

  • /etc/perl - कुछ पर्ल मॉड्यूल लिखने विन्यास फाइल। इनमें से दो उदाहरण CPAN और libnet वितरण में मॉड्यूल हैं। डेबियन आधारित मशीनें इन कॉन्फ़िगरेशन फ़ाइलों को यहां संग्रहित करती हैं।
  • /usr/local/lib/perl/5.8.4 - यह वह जगह है जहां पैकेज सिस्टम के बाहर स्थापित प्लेटफ़ॉर्म-विशिष्ट फ़ाइलें चलती हैं।
  • /usr/local/share/perl/5.8.4 - यह वह जगह है जहां पैकेज सिस्टम के बाहर स्थापित प्लेटफार्म-स्वतंत्र फ़ाइलें जाते हैं।
  • /usr/lib/perl5 - यह वह जगह है जहां पैकेज सिस्टम द्वारा स्थापित प्लेटफ़ॉर्म-विशिष्ट फ़ाइलें जाते हैं।
  • /usr/share/perl5 - यह वह जगह है जहां पैकेज सिस्टम द्वारा स्थापित प्लेटफ़ॉर्म-स्वतंत्र फ़ाइलें जाते हैं।
  • /usr/lib/perl/5.8 - ये मंच स्वतंत्र फ़ाइलों कि कोर का हिस्सा
  • /usr/local/lib/site_perl हैं - - ये प्लेटफ़ॉर्म-विशिष्ट फ़ाइलों कि कोर
  • /usr/share/perl/5.8 का एक हिस्सा हैं यह वह जगह है जहाँ आप अपने मॉड्यूल स्थापित कर सकते हैं (यदि उनके पास सीपीएएन शैली इंस्टॉलर नहीं हैं, जिन्हें वे वास्तव में करना चाहिए)।
+0

यह केवल डेबियन के लिए है। यह एक पर्ल चीज नहीं है। –

+0

@brian d foy आपको यह बताने की आवश्यकता क्यों महसूस हुई कि जब सवाल विशेष रूप से डेबियन पर्ल पैकेज के बारे में पूछ रहा है और उल्लेख करता है कि ActiveState का संस्करण अलग है? यह केवल डेबियन ही है। यहां तक ​​कि मेरा जवाब डेबियन का उल्लेख करता है। –

+0

आप डेबियन का जिक्र करते हैं, लेकिन यह स्पष्ट नहीं है कि विंडोज बनाम लिनक्स चीज़ के बजाय केवल डेबियन है। दरअसल, अच्छे उत्तरों को कुछ भी स्पष्ट नहीं लगता है :) –

1

मुझे लगता है कि ऐसा इसलिए है क्योंकि आप मॉड्यूल - cpan, tar.gz, deb पैकेज को स्थापित करने के कई तरीके हैं - और वे सभी अन्य लड़के के सामान के साथ गड़बड़ नहीं करने का प्रयास करते हैं।

मॉड्यूल की खोज करते समय,% INC बहुत आसान है। यह सभी मॉड्यूल और स्थानों के नाम संग्रहीत करता है, जहां से वे लोड होते हैं।

उदाहरण के लिए, इस चल:

perl -MDBI -e 'print join "\n", map { $_ . " = " . $INC{$_} } keys %INC' 

मुझे देता है:

XSLoader.pm = /usr/lib/perl/5.10/XSLoader.pm 
warnings/register.pm = /usr/share/perl/5.10/warnings/register.pm 
Carp.pm = /usr/share/perl/5.10/Carp.pm 
Scalar/Util.pm = /usr/lib/perl/5.10/Scalar/Util.pm 
Exporter/Heavy.pm = /usr/share/perl/5.10/Exporter/Heavy.pm 
vars.pm = /usr/share/perl/5.10/vars.pm 
strict.pm = /usr/share/perl/5.10/strict.pm 
Exporter.pm = /usr/share/perl/5.10/Exporter.pm 
List/Util.pm = /usr/lib/perl/5.10/List/Util.pm 
warnings.pm = /usr/share/perl/5.10/warnings.pm 
DBI.pm = /usr/lib/perl5/DBI.pm 
AutoLoader.pm = /usr/share/perl/5.10/AutoLoader.pm 
Config.pm = /usr/lib/perl/5.10/Config.pm 
DynaLoader.pm = /usr/lib/perl/5.10/DynaLoader.pm 

यह आसान है, खासकर जब मॉड्यूल विभिन्न स्थानों में कई बार स्थापित किया गया है।

7

Debian's Perl Policy on paths देखें और उन सभी के पहले और आखिरी के लिए तर्क और उपयोग के लिए देखें। मुझे लगता है कि /etc/perl मॉड्यूल के लिए होगा जिसमें गैर कॉन्फ़िगरेशन-निर्भर, गैर-संस्करण-निर्भर मॉड्यूल को गैर-डेबियन-पैक किए गए पर्ल के साथ साझा करने के लिए केवल कॉन्फ़िगरेशन डेटा और /usr/local/lib/site_perl होगा?

3

आपको कुछ पृष्ठभूमि के लिए कोर/विक्रेता/साइट सहायक पर Schwern के हालिया Use.perl journal entry भी मिल सकते हैं।

4

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

/usr/local/perls/perl-5.10.0/lib/perl5/darwin-2level 
/usr/local/perls/perl-5.10.0/lib/perl5 
/usr/local/perls/perl-5.10.0/lib/5.10.0/darwin-2level 
/usr/local/perls/perl-5.10.0/lib/5.10.0 
/usr/local/perls/perl-5.10.0/lib/site_perl/5.10.0/darwin-2level 
/usr/local/perls/perl-5.10.0/lib/site_perl/5.10.0 
. 

पर्ल निर्माण सिस्टम को संभावित निर्देशिका जो आप ExtUtils::MakeMaker में के बारे में पढ़ सकते हैं स्थापित करने के तीन प्रकार के पहचान या Module::Build:

  • कोर - सामान स्थानीय उपयोगकर्ता को स्थापित करता है
  • विक्रेता - - सामान ओएस विक्रेता आप के लिए ओ स्थापित करता है सामान है कि पर्ल
  • साइट के साथ आया था के लिए उनके पैकेज सिस्टम के माध्यम से

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

डेबियन में own policy है जो मुझे लगता है कि यह थोड़ा जटिल है, लेकिन यह उनके लिए काम करता है।

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

मैं अपने खुद के सामान के लिए एप्पल के पर्ल का उपयोग नहीं करते, लेकिन वे एक नासमझ सेट अप भी है:

/System/Library/Perl/5.8.8/darwin-thread-multi-2level 
/System/Library/Perl/5.8.8 
/Library/Perl/5.8.8/darwin-thread-multi-2level 
/Library/Perl/5.8.8 
/Library/Perl 
/Network/Library/Perl/5.8.8/darwin-thread-multi-2level 
/Network/Library/Perl/5.8.8 
/Network/Library/Perl 
/System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level 
/System/Library/Perl/Extras/5.8.8 
/Library/Perl/5.8.6 
/Library/Perl/5.8.1 
संबंधित मुद्दे

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