2010-08-11 14 views
36

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

उत्तर

30
: एक और तरीका है (एक बात याद आ रही नीचे urllist पैरामीटर जो आप CPAN दर्पण के लिए उचित मूल्यों के साथ में भरना होगा के लिए वास्तविक मान है) आप के लिए MyConfig.pm फ़ाइल बनाने के लिए निम्नलिखित को चलाने के लिए है

चूंकि इसका अभी तक उल्लेख नहीं किया गया है, cpanminus शून्य-conf cpan इंस्टॉलर है। और यदि आप अपने संस्करण नियंत्रण के लिए उपलब्ध नहीं हैं तो आप स्वयं निहित निष्पादन योग्य डाउनलोड कर सकते हैं।

cpanm निष्पादन आसानी से स्थापित किया गया है (के रूप में निष्पादन योग्य अपने आप में दस्तावेज) के साथ:

curl -L http://cpanmin.us | perl - --self-upgrade 
# or 
wget -O - http://cpanmin.us | perl - --self-upgrade 
+4

मुझे लगता है कि मुझे cpanminus पर बेचा गया है :-) – runrig

+0

cpanminimus ने मेरे डॉकरफ़ाइल – BitByteDog

5

एक तरीका है एक सीपीएएन/Config.pm (या ~/.cpan/CPAN/MyConfig.pm) को एक सिस्टम से चलाने के बाद बनाया गया है, और इसे ~/.cpan/CPAN/MyConfig.pm के रूप में स्थापित करना है। सिस्टम पर आप स्वचालित करना चाहते हैं।

#!/usr/bin/perl 

use strict; 
use Config; 

$ENV{PERL_MM_USE_DEFAULT}=1; 
$ENV{PERL_MM_NONINTERACTIVE}=1; 
$ENV{AUTOMATED_TESTING}=1; 

# get the path to the library 
my $libpath = $Config{privlib}; 

# force CPAN::FirstTime to not default to manual 
# setup, since initial CPAN setup needs to be automated 
{ 
    local @ARGV = "$libpath/CPAN/FirstTime.pm"; 
    my @source = <>; 
    $source[72] =~ s/\byes\b/no/ or die "Could not auto configure CPAN"; 
    eval join('', @source) or die "Error executing CPAN::FirstTime: [email protected]"; 
} 

CPAN::FirstTime::init("$libpath/CPAN/Config.pm"); 

delete $CPAN::Config->{links}; 
$CPAN::Config->{auto_commit} = '0'; 
$CPAN::Config->{check_sigs} = '0'; 
$CPAN::Config->{halt_on_failure} = '0'; 
$CPAN::Config->{make_install_make_command} = '/usr/bin/make'; 
$CPAN::Config->{mbuild_arg} = ''; 
$CPAN::Config->{mbuildpl_arg} = ''; 
$CPAN::Config->{mbuild_install_arg} = ''; 
$CPAN::Config->{show_upload_date} = ''; 
$CPAN::Config->{tar_verbosity} = '1'; 
$CPAN::Config->{trust_test_report_history} = '0'; 
$CPAN::Config->{use_sqlite} = '0'; 
$CPAN::Config->{yaml_load_code} = '0'; 
$CPAN::Config->{urllist} 
    = [qw(http://... ftp://... etc...)]; 
$CPAN::Config->{connect_to_internet_ok} = '1'; 
$CPAN::Config->{perl5lib_verbosity}  = 'v'; 
$CPAN::Config->{prefer_installer}  = 'MB'; 
$CPAN::Config->{build_requires_install_policy} = 'no'; 
$CPAN::Config->{term_ornaments}   = '1'; 
$CPAN::Config->{mbuild_install_build_command} = './Build'; 

mkdir ".cpan/CPAN" or die "Can't create .cpan/CPAN: $!"; 
CPAN::Config->commit(".cpan/CPAN/MyConfig.pm"); 

CPAN::install('Bundle::CPAN'); 
CPAN::install('JSON'); 
CPAN::install('JSON::XS'); 
# etc. 

exit 0; 
6

अपनी खुद की CPAN.pm कॉन्फ़िग फ़ाइल करें। cpan कमांड के हाल के संस्करणों में -J स्विच है जो वर्तमान कॉन्फ़िगरेशन को डंप करने के लिए स्विच करता है और -j स्विच जो भी आपको पसंद है उसे लोड करने के लिए स्विच करें।

+0

धन्यवाद के लिए दिन बचाया। मुझे -j और -J – runrig

5

CPAN.pm के हाल के संस्करण पहले प्रश्न के रूप में पूछते हैं कि शेष कॉन्फ़िगरेशन स्वचालित रूप से चलाया जाना चाहिए, इसलिए सीपीएएनपीएम (मैन्युअल रूप से) को पहले अपग्रेड करना उचित है: tarballs, repo

25

मैं इस के लिए एक आसान समाधान के साथ-साथ लिए देख रहा था और पाया कि यह काम करता है:

(echo y;echo o conf prerequisites_policy follow;echo o conf commit)|cpan 

बस मैं इसे यहाँ किसी और मामले किसी में पोस्ट होगा सोचा आता है के साथ।

+3

के बारे में पता नहीं था यह डॉकर में कॉन्फ़िगर सीपीए प्राप्त करने के लिए अच्छी तरह से काम किया। – Sobrique

+3

मेरा सिर्फ 'echo था सीपीएन', क्योंकि पहला सवाल था "जितना संभव हो उतना स्वचालित [हां]?" ' – activedecay

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