manager - perl modules
¿Cómo automatizo la configuración de CPAN? (5)
Como aún no se ha mencionado, cpanminus es un instalador de cpan zero-conf. Y puede descargar un ejecutable autónomo si no está disponible para su control de versión.
El ejecutable de cpanm se instala fácilmente (como se documenta en el ejecutable) con:
curl -L http://cpanmin.us | perl - --self-upgrade
# or
wget -O - http://cpanmin.us | perl - --self-upgrade
La primera vez que ejecute cpan desde la línea de comandos, se le solicitarán respuestas a varias preguntas. ¿Cómo se automatiza el cpan y se instalan los módulos de forma no interactiva desde el principio?
Cree su propio archivo de configuración CPAN.pm. Las versiones recientes del comando cpan
tienen un cpan
-J
para volcar la configuración actual y un -j
para cargar cualquier configuración que desee.
Estaba buscando una solución fácil para esto también y encontré que esto funciona:
(echo y;echo o conf prerequisites_policy follow;echo o conf commit)|cpan
Solo pensé que lo publicaría aquí en caso de que alguien más se presente.
Una forma es crear el CPAN / Config.pm (o ~ / .cpan / CPAN / MyConfig.pm) creado después de una ejecución desde un sistema, e instalarlo como ~ / .cpan / CPAN / MyConfig.pm en el sistema que quiero automatizar Otra forma es ejecutar lo siguiente para crear el archivo MyConfig.pm para usted (lo que falta a continuación son los valores reales para el parámetro urllist que deberá completar con los valores adecuados para los duplicados de 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;