Как я автоматизирую конфигурацию CPAN?

В первый раз, когда Вы выполняете cpan из командной строки, Вам предлагают ответы на различные вопросы. Как Вы автоматизируете cpan и устанавливаете модули нев интерактивном режиме с начала?

40
задан runrig 11 August 2010 в 19:27
поделиться

4 ответа

Поскольку это еще не упоминалось, cpanminus - это установщик cpan с нулевым конфигом. И вы можете загрузить самодостаточный исполняемый файл, если он недоступен для вашего контроля версий.

Исполняемый файл cpanm легко устанавливается (как описано в самом исполняемом файле) с помощью:

curl -L http://cpanmin.us | perl - --self-upgrade
# or
wget -O - http://cpanmin.us | perl - --self-upgrade
34
ответ дан 27 November 2019 в 01:33
поделиться

Последние версии CPAN.pm в первую очередь задают вопрос, должна ли остальная часть конфигурации запускаться автоматически, поэтому рекомендуется сначала обновить CPAN.pm (вручную): tarballs , репо .

5
ответ дан 27 November 2019 в 01:33
поделиться

Создайте свой собственный файл конфигурации CPAN.pm. В последних версиях команды cpan есть переключатель -J для сброса текущей конфигурации и переключатель -j для загрузки любой конфигурации, которая вам нравится.

6
ответ дан 27 November 2019 в 01:33
поделиться

Один из способов - взять 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
ответ дан 27 November 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: