modules metacpan mcpan library perl dependencies cpan

perl - mcpan - metacpan



¿Cómo le digo a CPAN que instale todas las dependencias? (10)

A continuación, se cambia el siguiente parámetro en la parte superior de prerequisites_policy.

cpan> o conf prerequisites_policy ''follow'' cpan> o conf build_requires_install_policy yes cpan> o conf commit

Esto lo cambiará de "preguntar / sí" a "sí" y dejará de pedírselo.

¿Cómo le digo a CPAN que instale todas las dependencias?

Intenté configurar estos en cpan :

cpan> o conf prerequisites_policy follow cpan> o conf commit

Todavía tuve que responder "y" un par de veces (pero se siente menos que antes).

¿Hay alguna manera de conseguir que siempre continúe e instale? Quiero que sea desatendida.

Parece que quiero que una bandera siempre confíe en que CPAN hará lo correcto, y si sugiere una respuesta, me gustaría seguirla (siempre presione Enter cuando le pregunte algo).


Aquí está el one-liner que hace que estos cambios sean permanentes, incluida la primera configuración automática de CPAN:

perl -MCPAN -e ''my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit''

O combínelo con local::lib módulo local::lib para usuarios no privilegiados:

perl -MCPAN -Mlocal::lib=~/perl5 -e ''my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit''

Ejecútelo antes de usar el shell CPAN o lo que sea.



Descubrí que esta es, con mucho, la forma más rápida y confiable de instalar módulos CPAN:

yes | perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"


Escribo esto para beneficio de las personas que pueden haber venido a esta página en busca de una forma de instalar todas las dependencias de módulos que necesita un script de Perl en particular. Escribí un guión para eso:

Se debe ejecutar como ./installdep.pl yourscript.pl

#!/usr/bin/perl `sudo apt install cpanminus`; while (<>) { if (/USE /i) { my $line=$_; $line=~ s//s//g; $line=~ /^(.*)/./; $line=~ s//;//; $line=~s/^USE//i; $line=~s/lib.*//i; $line=~s/feature.*//i; $line=~s/strict//i; $line=~s/warnings//i; $line =~ s/^(.*)/(.*/$1/; unless ($line eq '''') { my $cmd=''sudo cpanm ''.$line; print "Installing $line /n"; open my $cmd_fh, "$cmd |"; while (<$cmd_fh>) { print "$_"; } close $cmd_fh; print "/n"; } } }

Esto usará cpanminus para instalar todas las dependencias de módulo requeridas por su script. Si no se instala cpanm, lo instalará.


Esto es lo que estoy seguro de que estás buscando:

cpan> o conf prerequisites_policy follow cpan> o conf commit


Intenta configurar PERL_MM_USE_DEFAULT de la siguiente manera:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ''install My::Module''

Debería hacer que CPAN responda por defecto a todas las solicitudes.


La mejor y más reciente respuesta a esta pregunta es utilizar cpanm (también conocido como App :: cpanminus o cpanminus).

DESCRIPCIÓN

cpanminus es una secuencia de comandos para obtener, descomprimir, crear e instalar módulos de CPAN y no hace nada más.

Es libre de dependencia (puede arrancar él mismo), no requiere configuración y es independiente. Cuando se ejecuta, requiere solo 10MB de RAM.

Para iniciarlo, instálalo:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

o si está usando perlbrew simplemente

perlbrew install-cpanm

o desde el propio cpan:

cpan install App::cpanminus

A partir de ese momento, instale los módulos ejecutando (como root si es necesario)

cpanm Foo::Bar


Personalmente, solo he intentado un par de veces modificar la configuración de esa manera y he encontrado que es más fácil CPAN.pm shell cpan no dar argumentos a cpan , y luego configurar CPAN.pm desde el indicador interactivo:

$ cpan cpan> o conf init

Esto iniciará la utilidad de configuración de las interfaces CPAN.pm Simplemente ejecute y especifique "seguir" donde lo necesite (se me olvida la pregunta de improviso), y debería estar listo para comenzar.