我如何自动化CPANconfiguration?

第一次从命令行运行cpan时,会提示您提供各种问题的答案。 如何自动化cpan并从一开始就非交互式地安装模块?

由于还没有提到, cpanminus是一个零configuration安装程序。 如果您的版本控制不可用,则可以下载自包含的可执行文件。

cpanm可执行文件很容易安装(如可执行文件本身所logging):

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

我正在寻找一个简单的解决scheme,并发现这个工程:

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

只是以为我会张贴在这里,以防其他人出现。

制作你自己的CPAN.pmconfiguration文件。 最近版本的cpan命令有一个-J开关来转储当前的configuration,一个-j开关可以加载你喜欢的任何configuration。

一种方法是从一个系统运行一个运行后创build的CPAN / Config.pm(或〜/ .cpan / CPAN / MyConfig.pm),并将其安装为系统上的〜/ .cpan / CPAN / MyConfig.pm想自动化。 另一种方法是运行以下命令为您创buildMyConfig.pm文件(下面有一件事是urllist参数的实际值,您必须使用适当的CPAN镜像值填写):

 #!/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: $@"; } 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; 

CPAN.pm的最新版本问第一个问题是否应该自动运行其余的configuration,所以build议首先升级CPAN.pm(手动): tarballs , repo 。