第一次从命令行运行cpan时,系统会提示您回答各种问题。如何从一开始就自动运行cpan并以非交互方式安装模块?
nfg76nw01#
由于还没有提到,cpanminus是一个零配置的cpan安装程序,如果版本控制中没有它,你可以下载一个独立的可执行文件。cpanm可执行文件很容易安装(如可执行文件本身中所述):
curl -L http://cpanmin.us | perl - --self-upgrade # or wget -O - http://cpanmin.us | perl - --self-upgrade
nxowjjhe2#
我正在寻找一个简单的解决方案,以及发现这工程:
(echo y;echo o conf prerequisites_policy follow;echo o conf commit)|cpan
我只是想把它贴在这里以防有人沿着。
wd2eg0qa3#
创建您自己的CPAN.pm配置文件。最新版本的cpan命令有一个-J开关用于转储当前配置,还有一个-j开关用于加载您喜欢的任何配置。我添加这些开关是因为我们在CD上分发CPAN,回到MiniCPAN可以容纳700Mb以下的时代。您可以正常运行cpan,但添加了一个选项:
cpan
-J
-j
% cpan -j /CD/Volume/path/cpan_config.pm ....
在那个例子中,config会将URL列表设置为CD路径。我很久以前就丢失了源文件,但我记得有一种方法可以动态地找到它的位置,或者可能有一个程序可以这样做并将配置保存在某个地方。
fhity93d4#
最新版本的CPAN.pm会首先询问是否应自动运行其余配置,因此建议首先升级CPAN.pm(手动):一个一个的。
jk9hmnmh5#
一种方法是从一个系统运行一次后创建CPAN/Config.pm(或~/.cpan/CPAN/MyConfig.pm),并将其作为~/.cpan/CPAN/MyConfig.pm安装在要自动化的系统上。另一种方法是运行以下命令为您创建MyConfig.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;
5条答案
按热度按时间nfg76nw01#
由于还没有提到,cpanminus是一个零配置的cpan安装程序,如果版本控制中没有它,你可以下载一个独立的可执行文件。
cpanm可执行文件很容易安装(如可执行文件本身中所述):
nxowjjhe2#
我正在寻找一个简单的解决方案,以及发现这工程:
我只是想把它贴在这里以防有人沿着。
wd2eg0qa3#
创建您自己的CPAN.pm配置文件。最新版本的
cpan
命令有一个-J
开关用于转储当前配置,还有一个-j
开关用于加载您喜欢的任何配置。我添加这些开关是因为我们在CD上分发CPAN,回到MiniCPAN可以容纳700Mb以下的时代。您可以正常运行
cpan
,但添加了一个选项:在那个例子中,config会将URL列表设置为CD路径。我很久以前就丢失了源文件,但我记得有一种方法可以动态地找到它的位置,或者可能有一个程序可以这样做并将配置保存在某个地方。
fhity93d4#
最新版本的CPAN.pm会首先询问是否应自动运行其余配置,因此建议首先升级CPAN.pm(手动):一个一个的。
jk9hmnmh5#
一种方法是从一个系统运行一次后创建CPAN/Config.pm(或~/.cpan/CPAN/MyConfig.pm),并将其作为~/.cpan/CPAN/MyConfig.pm安装在要自动化的系统上。另一种方法是运行以下命令为您创建MyConfig.pm文件(下面缺少的一件事是urllist参数的实际值,您必须为CPAN镜像填充适当的值):