¿Cómo automatizo la configuración de CPAN?


La primera vez que ejecuta cpan desde la línea de comandos, se le solicitan respuestas a varias preguntas. ¿Cómo automatiza cpan e instala módulos de forma no interactiva desde el principio?

 37
Author: runrig, 2010-08-11

5 answers

Dado que aún no se ha mencionado, cpanminus es un instalador cpan de zero-conf. Y puede descargar un ejecutable autónomo si no está disponible para su control de versiones.

El ejecutable cpanm se instala fácilmente (como se documenta en el propio ejecutable) con:

curl -L http://cpanmin.us | perl - --self-upgrade
# or
wget -O - http://cpanmin.us | perl - --self-upgrade
 31
Author: phaylon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-12 18:15:19

También estaba buscando una solución fácil para esto y descubrí 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 venga.

 25
Author: Clayton Dukes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-26 16:00:03

Haga su propio CPAN.pm archivo de configuración. Las versiones recientes del comando cpan tienen un interruptor -J para volcar la configuración actual y un interruptor -j para cargar cualquier configuración que desee.

 6
Author: brian d foy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-11 21:10:33

Una forma es tomar 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 desea automatizar. Otra forma es ejecutar lo siguiente para crear el MyConfig.pm archivo para usted (una cosa que falta a continuación son los valores reales para el parámetro urllist que tendrá que rellenar con los valores apropiados para los espejos 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
Author: runrig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-11 19:39:21

Versiones Recientes de CPAN.pm preguntar como primera cuestión de si el resto de la configuración se debe ejecutar de forma automática, por lo que es recomendable actualizar CPAN.pm (manualmente) primero: tar, repo.

 5
Author: daxim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-11 21:50:40