¿Cómo puedo usar un nuevo módulo de Perl sin permisos de instalación?
-
05-07-2019 - |
Pregunta
Aquí está mi situación: no sé casi nada acerca de 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 Parallel :: ForkManager módulo de Perl de CPAN
¿Cómo uso este Parallel :: ForkManager sin hacer una instalación central? ¿Hay alguna variable de entorno que pueda establecer para que esté ubicada?
Gracias
JD
Solución
De perlfaq8: ¿Cómo mantengo mi propio directorio de módulo / biblioteca? :
Cuando construyas módulos, dile a Perl dónde instalar los módulos.
Para 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 CPAN.pm para que los módulos se instalen automáticamente en su directorio de biblioteca privada cuando usa 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
También puede configurar CPAN.pm para usar esta opción automáticamente:
% cpan
cpan> o conf mbuild_arg --install_base /mydir/perl
cpan> o conf commit
INSTALL_BASE le dice a estas herramientas que pongan sus módulos en F. Consulte L para obtener detalles sobre cómo ejecutar su nuevo Moudles instalados.
Sin embargo, hay una advertencia con INSTALL_BASE, ya que actúa diferente a la configuración de PREFIX y LIB que las versiones anteriores de ExtUtils :: MakeMaker defendió. INSTALL_BASE no es compatible Instalación de módulos para múltiples versiones de Perl o diferentes. Arquitecturas bajo el mismo directorio. Deberías considerar si realmente quiere eso, y si lo hace, use PREFIX y LIB más antiguos ajustes Consulte la documentación de ExtUtils :: Makemaker para obtener más detalles.
Otros consejos
Consulte esta publicación de Mark Dominus
Extracto:
- Establezca PREFIX = X al compilar el Makefile
- Establezca INSTALLDIRS = vendor y VENDORPREFIX = X al compilar el Makefile
- O tal vez, en lugar de VENDORPREFIX, necesites configurar INSTALLVENDORLIB o algo así
- O tal vez, en lugar de configurarlos mientras construyes el Makefile, necesitas configurarlos mientras ejecutas el objetivo de instalación.
- Establezca LIB = X / lib al compilar el Makefile
- utilizar PAR
- Usa local :: lib
Mark también ofrece otra solución en su blog que requiere un poco más de espacio para describirse, pero se reduce a ejecutar make and make test, pero no make install y luego usa las cosas en blib /.
Descargar el formulario del paquete 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 esto, cree una carpeta en casa 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 localice la carpeta paralela y obtenga la ruta completa a esto.
Ahora, en tu archivo Perl, ponlos al principio
use lib '/home/username/myModules/bin.../Parallel';
use parallel::ForkManager;
- Eso debería hacerlo.
Hay una variable de entorno PERL5LIB y -I
en la línea de comandos cuando se trata de usar el módulo. Existen mecanismos para indicar CPAN y CPANPLUS.
Hay información en la pregunta 5 del manual de CPAN (perldoc CPAN, o consulte CPAN ) .
use lib 'directory';
use Parallel::ForkManager;
Puede usar el interruptor de línea de comando -I
(mayúscula) seguido por el directorio donde colocará el módulo; o pruebe el " use lib " Directiva seguida por el directorio.
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
use la opción cpanm -l $ DIR_NAME
.
Considere usar cpanminus, una sugerencia en este otro hilo