¿Cómo puedo usar un nuevo módulo Perl sin permisos de instalación?

Esta es mi situación: no sé casi nada sobre Perl, pero es el único idioma disponible en una máquina portadora. Solo tengo permisos para escribir en mi área de trabajo local y no en la ubicación de instalación de Perl. Necesito usar el módulo Parallel :: ForkManager Perl de CPAN

¿Cómo uso este Parallel :: ForkManager sin hacer una instalación central? ¿Existe una variable de entorno que pueda establecer para que esté ubicada?

Gracias

JD

Desde perlfaq8: ¿Cómo guardo mi propio directorio de módulo / biblioteca? :

Cuando construya módulos, dígale a Perl dónde instalar los módulos.

Para las distribuciones basadas en C, use la opción INSTALL_BASE al generar Makefiles:

perl Makefile.PL INSTALL_BASE=/mydir/perl 

Puede configurar esto en su configuración de CPAN.pm para que los módulos se instalen automáticamente en su directorio de biblioteca privada cuando use el shell CPAN.pm:

 % cpan cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl cpan> o conf commit 

Para las distribuciones basadas en C, use la opción –install_base:

 perl Build.PL --install_base /mydir/perl 

Puede configurar CPAN.pm para usar automáticamente esta opción también:

 % cpan cpan> o conf mbuild_arg --install_base /mydir/perl cpan> o conf commit 

INSTALL_BASE le dice a estas herramientas que coloquen sus módulos en F. Consulte L para obtener detalles sobre cómo ejecutar las moules recién instaladas.

Sin embargo, hay una advertencia con INSTALL_BASE, ya que actúa de forma diferente a las configuraciones PREFIX y LIB que defendían las versiones anteriores de ExtUtils :: MakeMaker. INSTALL_BASE no admite la instalación de módulos para múltiples versiones de Perl o architectures diferentes bajo el mismo directorio. Debería considerar si realmente quiere eso, y si lo hace, use las configuraciones anteriores de PREFIX y LIB. Consulte la documentación de ExtUtils :: Makemaker para obtener más detalles.

Mira esta publicación de Mark Dominus

Extracto:

  • Establezca PREFIX = X al comstackr el archivo Makefile
  • Establezca INSTALLDIRS = proveedor y VENDORPREFIX = X al comstackr el archivo Makefile
    • O tal vez, en lugar de VENDORPREFIX, debe configurar INSTALLVENDORLIB o algo
    • O tal vez, en lugar de configurarlos mientras construyes el Makefile, debes configurarlos mientras ejecutas el objective make install
  • Establezca LIB = X / lib cuando construya el archivo Makefile
  • Use PAR
  • Use local :: lib

Mark también ofrece otra solución en su blog que requiere un poco más de espacio para descargar, pero se reduce a ejecutar make y make test pero no hacer la instalación y luego usar el material en blib /.

Descargue el paquete de CPAN a una carpeta:

 wget http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz gunzip Parallel-ForkManager-1.06.tar.gz tar -xvf Parallel-ForkManager-1.06.tar 

antes de crear una carpeta en el hogar para almacenar sus módulos locales, ahora vaya a la carpeta descargada y ejecute los siguientes cmmands:

 perl Makefile.PL PREFIX=/home/username/myModules make make test make install 

obtenga la ruta a ForkManager desde la carpeta instalada, / home / username / myModules y busque la carpeta Parallel y obtenga la ruta completa a esto.

Ahora en tu archivo perl pon estos al principio

 use lib '/home/username/myModules/bin.../Parallel'; use parallel::ForkManager; 

–Deberias hacer eso.

Existe la variable de entorno PERL5LIB y -I en la línea de comandos cuando se trata de usar el módulo. Hay mecanismos para contar CPAN y CPANPLUS.

Hay información en la pregunta 5 del manual de CPAN (CPAN perldoc, o consulte el CPAN en sí).

 use lib 'directory'; use Parallel::ForkManager; 

Puede utilizar el -I de línea de comandos -I (mayúscula i) seguido del directorio donde colocará el módulo; o pruebe la directiva “use lib” seguida del directorio.

Sí, incluso usted puede usar CPAN

 perl Makefile.PL LIB=/my/perl_modules/lib/ make make install PERL5LIB=$PERL5LIB:/my/perl_modules/lib/ perl myperlcode.pl 

usa la cpanm -l $DIR_NAME .

Considere usar cpanminus, una sugerencia en este otro hilo