2008-10-30 15 views
27

Aquí está 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 Perl Parallel::ForkManager de CPAN¿Cómo puedo usar un nuevo módulo Perl sin permisos de instalación?

¿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

+0

posible duplicado de [¿Cómo puedo instalar módulos de CPAN localmente sin acceso de root (DynaLoader.pm línea 229 error)?] (http://stackoverflow.com/questions/102850/how-can-i-install-cpan-modules-locally-without-root-access-dynaloader-pm-line-2) –

Respuesta

34

De perlfaq8: How do I keep my own module/library directory?:

Cuando se construye módulos, Perl decirle dónde instalar los módulos.

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

perl Makefile.PL INSTALL_BASE=/mydir/perl 

Puede configurar esto en su configuración de manera CPAN.pm módulos se instalan automáticamente en el directorio de biblioteca particular cuando se utiliza el shell CPAN.pm:

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

Para distribuciones basadas en C, utilice la opción --install_base:

perl Build.PL --install_base /mydir/perl 

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

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

INSTALL_BASE dice estas herramientas para poner sus módulos en F. L Ver para más detalles sobre cómo ejecutar sus recién moudles instalados.

Hay una advertencia con INSTALL_BASE, sin embargo, ya que actúa de manera diferente que el prefijo y ajustes LIB que las versiones anteriores de ExtUtils :: MakeMaker defendieron. INSTALL_BASE no admite instalando módulos para múltiples versiones de Perl o diferentes arquitecturas bajo el mismo directorio. Debería considerar si realmente lo desea, , y si lo hace, utilice las configuraciones anteriores PREFIX y LIB . Consulte la documentación de ExtUtils :: Makemaker para obtener más detalles.

6

Salida this post de Mark Dominus

Extracto:

  • Conjunto prefix = X al construir el Makefile
  • Conjunto INSTALLDIRS = vendedor y VENDORPREFIX = X al construir el Makefile
    • O tal vez en lugar de VENDORPREFIX debe configurar INSTALLVENDORLIB o algo
    • O tal vez de suponer mientras que la construcción del Makefile que tiene necesidad de hacerlo durante la ejecución de make install objetivo
  • set LIB = X/lib al construir el Makefile
  • Uso PAR
  • uso local: : lib

Mark también da otra solución en su blog que tiene un poco más de espacio para desribe pero se reduce a hacer correr y hacer la prueba, pero no hace para instalar y luego usar las cosas en blib /.

+0

Hay no hay razón para meterse con cosas de vendedores. Debe dejar INSTALLDIRS tal como está, "sitio" es correcto para los módulos instalados localmente. Y use INSTALL_BASE, no PREFIX/LIB. – Schwern

2

Puede usar el modificador 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.

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

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

Hay información en la pregunta 5 del manual CPAN (CPAN perldoc, o mira CPAN sí mismo).

+1

Gracias por eliminar mi guión bajo, Brian. –

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

Descargar forma de envase 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 que esto cree una carpeta en la casa para guardar sus locales módulos, 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 ubique la carpeta Paralelo y obtenga la ruta completa a esta.

Ahora en su archivo Perl poner estos en el beggining

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

--Que debe hacerlo.

2

use cpanm -l $DIR_NAME opción.

Cuestiones relacionadas