如何自动执行CPAN配置?

run*_*rig 40 perl cpan

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

pha*_*lon 34

由于尚未提及,cpanminus是一个零配置安装程序.如果版本控制不可用,您可以下载自包含的可执行文件.

可以轻松安装cpanm可执行文件(如可执行文件本身所述):

curl -L http://cpanmin.us | perl - --self-upgrade
# or
wget -O - http://cpanmin.us | perl - --self-upgrade
Run Code Online (Sandbox Code Playgroud)

  • 我想我在cpanminus上卖了:-) (4认同)

Cla*_*kes 28

我也在寻找一个简单的解决方案,并发现这有效:

(echo y;echo o conf prerequisites_policy follow;echo o conf commit)|cpan
Run Code Online (Sandbox Code Playgroud)

只是想我会发布它,以防其他人出现.

  • 我的只是`echo | cpan`,因为第一个问题是"尽可能自动化[是]?" (6认同)
  • 这很好地在Docker中配置了cpan. (4认同)

bri*_*foy 6

制作您自己的CPAN.pm配置文件.该cpan命令的最新版本有一个-J转换器来转储当前配置和一个-j开关来加载你喜欢的任何配置.


run*_*rig 5

一种方法是从一个系统运行一次后创建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;
Run Code Online (Sandbox Code Playgroud)


dax*_*xim 5

最新版本的CPAN.pm首先询问是否应该自动运行配置的其余部分,因此建议先升级CPAN.pm(手动):tarballs,repo.