विकास के लिए, मैं अपना खुद का पर्ल स्थापित करता हूं और अकेले सिस्टम पर्ल छोड़ देता हूं। अगर मैं सिस्टम पर्ल को अपग्रेड करना चाहता हूं, तो मैं सिस्टम पैकेज मैनेजर का उपयोग करता हूं। मेरे विकास पर्ल के लिए, मैं सीपीएन उपकरण का उपयोग करता हूं।
जब से मैं उन अलग रखने के लिए, मैं चाहिए कभी नहीं गंदगी पर्ल कि प्रणाली उसके रखरखाव कार्यों के लिए की जरूरत है और इतने पर है, लेकिन मैं विकास के लिए प्रणाली के फैसले पर भरोसा करने की जरूरत नहीं है।
अलग-अलग पर्ल स्थापित करना बहुत आसान है। जब आप स्रोत वितरण से कॉन्फ़िगर करते हैं, तो यह आपको पूछेगा कि आप सब कुछ इंस्टॉल करना चाहते हैं। इसे पसंद करने वाला कोई भी रास्ता दें। उदाहरण के लिए, मेरे पास /usr/local/perls में कई पर्ल स्थापित हैं, और प्रत्येक इंस्टॉलेशन के लिए सबकुछ अलग-अलग रहता है। इसके बाद मैं उनके लिए /usr/local/bin में सिम्लिंक बना देता हूं (उदा। Perl5.8.9, perl.5.10.0, perl5.10.0-threaded)।
$ perl5.10.0 program.pl
विशेष द्विआधारी सुनिश्चित करता है कि कार्यक्रम सही मॉड्यूल खोज पथ को चुनता है और इतने पर (यह कॉन्फ़िग में एक ही सामान है: जब मैं एक विशेष संस्करण चाहते हैं, मैं सिर्फ एक मैं चाहता हूँ का उपयोग करें।उस बाइनरी के लिए pm मॉड्यूल)।
यहां एक स्क्रिप्ट है जिसका उपयोग मैं सिम्लिंक बनाने के लिए करता हूं। यह बिन निर्देशिका में दिखता है, पर्ल संस्करण का आंकड़ा करता है, और cpan5.10.1
जैसे लिंक बनाता है और इसी तरह। प्रत्येक कार्यक्रम पहले से कॉल करने के लिए सही perl जानता है:
#!perl
use 5.010;
use strict;
use warnings;
use File::Basename;
use File::Spec::Functions;
my $perls_directory = catfile(
$ARGV[0] // '/usr/local/perls',
'perl*'
);
die "$perls_directory does not exist!\n"
unless -d dirname $perls_directory;
my $links_directory = $ARGV[1] // catfile($ENV{HOME}, 'bin'); #/
die "$links_directory does not exist!\n" unless -d $links_directory;
foreach my $directory (glob($perls_directory))
{
say "Processing $directory...";
unless(-e catfile($directory, 'bin'))
{
say "\tNo bin/ directory. Skipping!";
next;
}
my @perls = glob(catfile($directory, qw(bin perl5*)));
my($perl_version) = $perls[0] =~ m/(5\.\d+\.\d+)\z/;
say "\tperl version is $perl_version";
foreach my $bin (glob(catfile($directory, 'bin', '*')))
{
say "\tFound $bin";
my $basename = basename($bin);
my $link_basename = do {
if($basename =~ m/5\.\d+\.\d+\z/) { $basename }
else { "$basename$perl_version" }
};
my $link = catfile($links_directory, $link_basename);
next if -e $link;
say "\t\tlinking $bin => $link";
symlink $bin => $link or
warn "\t\tCould not create symlink [$!]: $bin => $link!";
}
}
सब कुछ उस विशेष पर्ल के लिए सही जगह पर स्थापित हो जाता है।
मैं यह भी सोच रहा हूं कि मुझे उन पर्ल निर्देशिकाओं को किसी प्रकार के स्रोत नियंत्रण में रखना चाहिए। यदि मैं एक मॉड्यूल जोड़ता हूं जो मुझे पसंद नहीं है, तो मैं बस पहले के संशोधन में वापस आ गया हूं। मैं केवल ऐसा करना शुरू कर रहा हूं और इसके साथ बहुत कुछ नहीं खेला है।
मैं प्रभावी Perler ब्लॉग में बात की इस तरह के बारे में अधिक लिखा है:
मैंने शीर्षक को बदल दिया है "आप लिनक्स पर पर्ल मॉड्यूल कैसे प्रबंधित करते हैं?" "पैकेज प्रबंधक का उपयोग करते समय आप पर्ल मॉड्यूल का प्रबंधन कैसे करते हैं?", क्योंकि यह किसी भी सिस्टम पर प्रासंगिक है जहां पैकेज प्रबंधक को पर्ल स्थापित करने के लिए इस्तेमाल किया जा सकता है, कड़ाई से लिनक्स नहीं - उदाहरण के लिए ओएसएक्स के लिए मैकपोर्ट्स (http://macports.org) वितरण। – Ether