Как автоматизировать конфигурацию CPAN?
при первом запуске cpan из командной строки вам будет предложено ответить на различные вопросы. Как вы автоматизируете cpan и устанавливаете модули неинтерактивно с самого начала?
5 ответов
Так как это еще не было упомянуто,cpanminus является установщиком cpan нулевой конф. И вы можете загрузить автономный исполняемый файл, если он недоступен для управления версиями.
исполняемый файл cpanm легко устанавливается (как описано в самом исполняемом файле) с помощью:
curl -L http://cpanmin.us | perl - --self-upgrade
# or
wget -O - http://cpanmin.us | perl - --self-upgrade
Я искал простое решение для этого и обнаружил, что это работает:
(echo y;echo o conf prerequisites_policy follow;echo o conf commit)|cpan
просто подумал, что я опубликую его здесь, Если кто-нибудь еще придет.
сделайте свой собственный CPAN.конфигурационный файл pm. Последние версии У -J
переключитесь на сброс текущей конфигурации и -j
переключитесь на загрузку любой конфигурации, которая вам нравится.
один из способов-взять CPAN / Config.pm (or~/.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;