strawberry - ¿Puede un script de Perl instalar sus propias dependencias de CPAN?
perl strawberry install module (2)
Tengo un script Perl que tiene dos dependencias que existen en CPAN. Lo que me gustaría hacer es que el propio script solicite al usuario que instale las dependencias necesarias para que el script se ejecute correctamente. Si el usuario necesita ingresar algún tipo de autenticación para instalar las dependencias, está bien: lo que estoy tratando de evitar es el siguiente flujo de trabajo:
Ejecutar script -> Verlo fallar -> Recorrer CPAN sin rumbo fijo -> Lynch el escritor de scripts
En su lugar, estoy esperando algo como:
Ejecutar secuencia de comandos -> Descargar automáticamente las dependencias de secuencia de comandos (autenticarse según sea necesario) -> La secuencia de comandos tiene éxito -> Comprar al escritor de secuencias de comandos una cerveza
Se puede hacer esto?
Cada uno de los paradigmas de compilación estándar tiene su propia forma de especificar dependencias. En todos estos casos, el proceso de compilación intentará instalar sus dependencias, automáticamente en algunos contextos.
En ExtUtils::MakeMaker
, usted pasa una referencia de hash en el campo WriteMakefile
a WriteMakefile
:
# Makefile.PL for My::Module
use ExtUtils::MakeMaker;
WriteMakefile (
NAME => ''My::Module'',
AUTHOR => ...,
...,
PREREQ_PM => {
''Some::Dependency'' => 0, # any version
''Some::Other::Dependency'' => 0.42, # at least version 0.42
...
},
...
);
En Module::Build
, pasas un hashref al campo build_requires
:
# Build.PL
use Module::Build;
...
my $builderclass = Module::Build->subclass( ... customizations ... );
my $builder = $builderclass->new(
module_name => ''My::Module'',
...,
build_requires => {
''Some::Dependency'' => 0,
''Some::Other::Dependency'' => 0.42,
},
...
);
$builderclass->create_build_script();
En Module::Install
, ejecuta uno o más comandos de requires
antes de llamar al comando para escribir el Makefile:
# Makefile.PL
use inc::Module::Install;
...
requires ''Some::Dependency'' => 0;
requires ''Some::Other::Dependency'' => 0.42;
test_requires ''Test::More'' => 0.89;
...
WriteAll;
Probablemente puedes ejecutar esto desde tu script.
perl -MCPAN -e ''install MyModule::MyDepends''