मुझे यह त्रुटि मिली:
Can't locate Foo.pm in @INC
क्या इसे डाउनलोड करने, अनटैरिंग करने, बनाने आदि की तुलना में इसे स्थापित करने का एक आसान तरीका है?
cpan
।
मुझे यह त्रुटि मिली:
Can't locate Foo.pm in @INC
क्या इसे डाउनलोड करने, अनटैरिंग करने, बनाने आदि की तुलना में इसे स्थापित करने का एक आसान तरीका है?
cpan
।
जवाबों:
यूनिक्स पर :
आमतौर पर आप अपने खोल में cpan शुरू करते हैं:
# cpan
और प्रकार
install Chocolate::Belgian
या संक्षिप्त रूप में:
cpan Chocolate::Belgian
विंडोज पर :
यदि आप Windows पर ActivePerl का उपयोग कर रहे हैं, तो PPM (पर्ल पैकेज मैनेजर) में CPAN.pm की समान कार्यक्षमता है।
उदाहरण:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
देखें कि मैं पर्ल मॉड्यूल कैसे स्थापित करूं? CPAN में अक्सर पूछे जाने वाले प्रश्न
कई वितरण पैकेज के रूप में बहुत सारे पर्ल मॉड्यूल को शिप करते हैं।
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
आप चाहिए हमेशा उन्हें पसंद करते हैं, जैसा कि आप स्वत: (सुरक्षा) से लाभ अद्यतन और में आसानी हटाने । यह स्वयं cpan उपकरण के साथ बहुत मुश्किल हो सकता है।
Gentoo के लिए वहाँ एक अच्छा उपकरण कहा जाता है जी cpan बनाता है जो / CPAN से मॉड्यूल स्थापित करता है और एक Gentoo पैकेज (बनाता ebuild आप के लिए)।
ppm
हाइफ़न का उपयोग करता है -
क्योंकि आप उस वितरण को निर्दिष्ट करते हैं जिसे आप इंस्टॉल करना चाहते हैं, जो कि बहुत अधिक ईमानदार है। उदाहरण के लिए, यदि आप cpan
स्थापित करने के लिए उपयोग करते हैं LWP
, LWP::Simple
या LWP::UserAgent
यह libwww-perl
आपके लिए वितरण स्थापित करेगा । वितरण के अधिकांश हिस्से में एक समतुल्य नाम के साथ एक एकल मॉड्यूल होता है, लेकिन इसके कई अपवाद भी हैं
प्रयास करें अनुप्रयोग :: cpanminus :
# cpanm Chocolate::Belgian
यह सिर्फ सामान स्थापित करने के लिए बहुत अच्छा है। यह CPAN या CPANPLUS की अधिक जटिल कार्यक्षमता प्रदान नहीं करता है, इसलिए इसका उपयोग करना आसान है, बशर्ते आपको पता हो कि आप कौन सा मॉड्यूल इंस्टॉल करना चाहते हैं। यदि आपको पहले से ही cpanminus नहीं मिला है, तो बस टाइप करें:
# cpan App::cpanminus
इसे स्थापित करने के लिए।
बिना cpan का उपयोग किए इसे स्थापित करना भी संभव है। मूल बूटस्ट्रैप प्रक्रिया है,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
अधिक जानकारी के लिए ऐप :: cpanminus पेज पर जाएं और इंस्टालेशन पर सेक्शन देखें।
cpan
स्थापित करने के लिए उपयोग करना App::cpanminus
थोड़ा अजीब है। सामान्य स्थापित निर्देशों में cpanmin.us से इसका एक हिस्सा डाउनलोड करने और शेष को स्थापित करने के लिए इसका उपयोग करने की बूटस्ट्रैपिंग प्रक्रिया शामिल है । यह cpan
(और उसके बाद) बेकार .cpan
निर्देशिका के निर्माण से बचा जाता है ।
cpanminus
टर्मिनल से इंस्टॉल कर सकते हैं । मुझे cpanm
बेहतर लगता है cpan
क्योंकि यह स्क्रीन पर त्रुटि लॉग नहीं डालता है बल्कि उन्हें अस्थायी लॉग फ़ाइलों में संग्रहीत करता है और त्रुटियों के मामले में रास्ता देता है।
मैं कुछ लोगों को सूडो के तहत एक रन सेप का सुझाव देने पर ध्यान देता हूं। सिस्टम निर्देशिका में स्थापित करने के लिए यह आवश्यक हुआ करता था, लेकिन CPAN शेल के आधुनिक संस्करण आपको इसे केवल इंस्टॉल करने के लिए sudo का उपयोग करने के लिए कॉन्फ़िगर करने की अनुमति देते हैं । यह बहुत सुरक्षित है, क्योंकि इसका मतलब है कि परीक्षण जड़ के रूप में नहीं चलते हैं।
यदि आपके पास पुराना CPAN शेल है, तो बस नया cpan ("CPAN इंस्टॉल करें") स्थापित करें और जब आप शेल को पुनः लोड करते हैं, तो यह आपको इन नए निर्देशों को कॉन्फ़िगर करने के लिए संकेत देना चाहिए।
आजकल, जब मैं एक पुराने सीपीएएन के साथ एक प्रणाली पर हूं, तो पहली चीज जो मैं करता हूं वह शेल को अपडेट करता है और इसे सेट करने के लिए ऐसा करता है ताकि मैं अपने अधिकांश cpan का काम एक सामान्य उपयोगकर्ता के रूप में कर सकूं।
इसके अलावा, मैं दृढ़ता से सुझाव दूंगा कि विंडोज उपयोगकर्ता स्ट्रॉबेरी पर्ल की जांच करते हैं । यह पर्ल का एक संस्करण है जो पहले से कॉन्फ़िगर किए गए सीपीएएन शेल के साथ-साथ एक संकलक के साथ आता है। इसमें उनके बाहरी सी लाइब्रेरी निर्भरता के साथ कुछ कठिन-संकलित पर्ल मॉड्यूल भी शामिल हैं, विशेष रूप से XML :: पार्सर। इसका मतलब है कि आप प्रत्येक अन्य पर्ल उपयोगकर्ता के समान काम कर सकते हैं जब यह मॉड्यूल स्थापित करने की बात आती है, और चीजें बहुत अधिक बार "बस काम" करती हैं।
install CPAN
कहाँ से? $sudo apt-get install cpan
?
App::cpanminus
, इसका उपयोग करने के लिए ऐसा आनंद है। फिलिप पॉटर ने यहां अपने जवाब में यह सुझाव दिया और आप इस चास को आजमा सकते हैं । ओवेन्स जवाब ।
यदि आप उबंटू में हैं और आप प्री-पैकेज्ड पर्ल मॉड्यूल को स्थापित करना चाहते हैं (उदाहरण के लिए, जियो :: आईपीफ्री) यह कोशिश करें:
$ apt-cache खोज perl geo :: ipfree libgeo-ipfree-perl - एक आईपी पता पर्ल मॉड्यूल का देश है $ sudo apt-get install libgeo-ipfree-perl
कुछ लोगों ने cpan उपयोगिता का उल्लेख किया है, लेकिन यह केवल एक शेल शुरू करने से अधिक है। बस इसे मॉड्यूल दें जिसे आप इंस्टॉल करना चाहते हैं और इसे काम करने दें।
$prompt> cpan Foo::Bar
यदि आप इसे कोई तर्क नहीं देते हैं तो यह CPAN.pm शेल शुरू करता है। यह यूनिक्स, मैक पर काम करता है, और विंडोज (विशेष रूप से स्ट्राबेरी पर्ल) पर बस ठीक होना चाहिए।
कई अन्य चीजें हैं जो आप cpan उपकरण के साथ भी कर सकते हैं। यहां वर्तमान विशेषताओं का सारांश है (जो CPAN.pm और पर्ल के साथ आने वाले की तुलना में नया हो सकता है):
-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.
-A module [ module ... ]
Shows the primary maintainers for the specified modules
-C module [ module ... ]
Show the Changes files for the specified modules
-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.
-L author [ author ... ]
List the modules by the specified authors.
-h
Prints a help message.
-O
Show the out-of-date modules.
-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
-v
Print the script version and CPAN.pm version.
हां भी देखें , यहां तक कि आप CPAN का भी उपयोग कर सकते हैं । यह दिखाता है कि आप रूट या सुडो एक्सेस के बिना CPAN का उपयोग कैसे कर सकते हैं।
ओटो ने एक अच्छा सुझाव दिया । यह डेबियन के लिए भी काम करता है, साथ ही किसी अन्य डेबियन व्युत्पन्न के लिए भी। लापता टुकड़ा क्या करना है जब उपयुक्त-कैश खोज में कुछ नहीं मिलता है।
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
फिर जब भी आपके पास एक यादृच्छिक मॉड्यूल हो जिसे आप इंस्टॉल करना चाहते हैं:
$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
यह आपको एक डिबेट पैकेज देगा जिसे आप कुछ :: रैंडम :: मॉड्यूल प्राप्त करने के लिए इंस्टॉल कर सकते हैं। बड़े लाभों में से एक यहाँ मैन पेज और नमूना स्क्रिप्ट हैं जो मॉड्यूल के अलावा आपके पसंद के स्थान में रखे जाएंगे। यदि डिस्ट्रो कभी-कभी कुछ :: रैंडम :: मॉड्यूल के नए संस्करण के लिए एक आधिकारिक पैकेज के साथ सामने आता है, तो यह स्वतः ही स्थापित हो जाएगा जब आप अपग्रेड प्राप्त करेंगे।
पहले से ही जवाब दिया और स्वीकार किए जाते हैं - लेकिन वैसे भी:
IMHO CPAN मॉड्यूल स्थापित करने का सबसे आसान तरीका है (सिस्टम की तरह यूनिक्स पर, और वंडो के बारे में कोई पता नहीं है) है:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
ऊपर "शून्य कॉन्फ़िगरेशन CPAN मॉड्यूल इंस्टॉलर" स्थापित किया गया है cpanm
। (स्थापित करने में कई मिनट लग सकते हैं - प्रक्रिया को न तोड़ें)
और बाद में - बस:
cpanm Foo
cpanm Module::One
cpanm Another::Module
के लिए सिफारिश के बहुत सारे CPAN.pm
, जो बहुत अच्छा है, लेकिन अगर आप उपयोग कर रहे हैं Perl 5.10
तो आप भी पहुंच गए हैं CPANPLUS.pm
जो कि पसंद है CPAN.pm
लेकिन बेहतर है।
और, निश्चित रूप से, यह CPAN
अभी भी पर्ल के पुराने संस्करणों का उपयोग करने वाले लोगों के लिए उपलब्ध है । क्यों नहीं कोशिश करो:
$ cpan CPANPLUS
कई बार ऐसा होता है कि cpan इनस्टॉल कमांड मेसेज के साथ फेल हो जाता है जैसे "मेक टेस्ट खराब स्टेटस लौटा था, बिना फोर्स के इंस्टॉल नहीं होगा"
उस मामले में निम्नलिखित मॉड्यूल को स्थापित करने का तरीका है:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
उबंटू पर अधिकांश पर्ल मॉड्यूल पहले से ही पैक किए गए हैं, इसलिए इंस्टॉल करना अधिकांश अन्य प्रणालियों की तुलना में बहुत तेज है, जिन्हें संकलित करना है।
Foo::Bar
उदाहरण के लिए आमतौर पर कम्मांड प्रॉम्प्ट पर स्थापित करने के लिए:
sudo apt-get install libfoo-bar-perl
अफसोस की बात है कि सभी मॉड्यूल उस नामकरण सम्मेलन का पालन नहीं करते हैं।
के रूप में cpan कमांड का उपयोग करें cpan Modulename
$ cpan HTML::Parser
निर्भरता स्थापित करने के लिए स्वचालित रूप से नीचे का पालन करें
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
मुझे ऐप :: cpanminus पसंद है , यह स्वचालित रूप से निर्भरता स्थापित करता है। बस करो
$ cpanm HTML::Parser
2 तरीके जो मुझे पता हैं:
पीपीएम का उपयोग:
साथ विंडोज (ActivePerl) मैं का उपयोग किया है पीपीएम
कमांड लाइन प्रकार से पीपीएम। पीपीएम प्रॉम्प्ट पर ...
ppm> install foo
या
ppm> search foo
उपलब्ध फू मॉड्यूल की एक सूची प्राप्त करने के लिए। सभी कमांड के लिए मदद टाइप करें
CPAN का उपयोग:
आप CPAN का इस तरह उपयोग कर सकते हैं ( * निक्स सिस्टम ):
perl -MCPAN -e 'shell'
आपको एक संकेत मिलता है
cpan>
प्रॉम्प्ट पर ...
cpan> install foo (again to install the foo module)
cpan के लिए कमांड की सूची प्राप्त करने के लिए h टाइप करें
फेडोरा पर आप उपयोग कर सकते हैं
# yum install foo
जब तक फेडोरा मॉड्यूल के लिए एक मौजूदा पैकेज है।
पर Fedora Linux
या Enterprise Linux
, yum
पर्ल लाइब्रेरी निर्भरता को भी ट्रैक करता है। इसलिए, यदि पर्ल मॉड्यूल उपलब्ध है, और कुछ rpm पैकेज उस निर्भरता को निर्यात करता है, तो यह आपके लिए सही पैकेज स्थापित करेगा।
yum install 'perl(Chocolate::Belgian)'
(सबसे अधिक संभावना पर्ल-चॉकलेट-बेल्जियम पैकेज, या यहां तक कि चॉकलेटफैक्टरी पैकेज)
मेरे लिए सबसे आसान तरीका यह है:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
a) स्वचालित पुनरावर्ती निर्भरता का पता लगाना / हल करना / स्थापित करना
b) यह एक शेल ऑनलाइनर है, जो सेटअप-स्क्रिप्ट के लिए अच्छा है
यदि आप नए मॉड्यूल को कस्टम स्थान पर रखना चाहते हैं जिसे आपके cpan शेल का उपयोग करने के लिए कॉन्फ़िगर नहीं किया गया है, तो शायद, निम्नलिखित काम हो जाएगा।
#wget <URL to the module.tgz>
##unpack
perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
कभी-कभी आप yum search foo
रिश्तेदार पर्ल मॉड्यूल को खोजने के लिए उपयोग कर सकते हैं , फिर yum install xxx
इंस्टॉल करने के लिए उपयोग कर सकते हैं।
सुरक्षित समाधान
कई जवाब सुरक्षा पर एक शब्द के बिना cpan
उपयोगिता (जो उपयोग करता है CPAN.pm
) के उपयोग का उल्लेख करते हैं । डिफ़ॉल्ट रूप से, CPAN
2.27 और पहले urllist
एक http URL (अर्थात् http://www.cpan.org/ ) का उपयोग करने के लिए कॉन्फ़िगर करता है , जो MITM हमलों की अनुमति देता है, इस प्रकार असुरक्षित है। यह वही है जो CHECKSUMS
फ़ाइलों को डाउनलोड करने के लिए उपयोग किया जाता है , ताकि इसे सुरक्षित URL में बदलना पड़े (जैसे https://www.cpan.org/ )।
इसलिए, cpan चलाने और डिफ़ॉल्ट कॉन्फ़िगरेशन को स्वीकार करने के बाद, आपको MyConfig.pm
निम्न तरीके से उत्पन्न फ़ाइल (पूर्ण पथ आउटपुट है) को संशोधित करने की आवश्यकता है । बदलने के
'urllist' => [q[http://www.cpan.org/]],
द्वारा
'urllist' => [q[https://www.cpan.org/]],
नोट: https पर्याप्त नहीं है; आपको एक वेब साइट की भी आवश्यकता है जिस पर आप भरोसा कर सकते हैं। इसलिए, यदि आप कुछ मनमाना दर्पण चुनना चाहते हैं तो सावधान रहें।
फिर आप cpan
सामान्य तरीके से उपयोग कर सकते हैं ।
असुरक्षित URL के बारे में rt.cpan.org पर मेरी बग रिपोर्ट ।
https://www.cpan.org/
)।
ऐसा लगता है कि आपको अपना जवाब मिल गया है, लेकिन मुझे लगा कि मैं इसमें झंकार करूंगा। यही मैं उबंटू (या डेबियन सर्वर) की कुछ स्क्रिप्ट्स में करता हूं।
#!/usr/bin/perl
use warnings;
use strict;
#I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
$ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';
#Fill this with the perl modules required for your project
my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);
chomp(my $curl = `which curl`);
if(!$curl){ system('apt-get install curl -y > /dev/null'); }
chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));
#installs cpanm if missing
if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }
#loops through required modules and installs them if missing
foreach my $x (@perl){
eval "use $x";
if($@){
system("cpanm $x");
eval "use $x";
}
}
यह मेरे लिए अच्छी तरह से काम करता है, शायद यहाँ कुछ है जो आप उपयोग कर सकते हैं।