2010-09-17 14 views
32

Estoy en una máquina Linux donde no tengo privilegios de administrador. Quiero instalar algunos paquetes a través de CPAN en mi directorio de inicio para que cuando ejecute Perl, pueda verlo.¿Cómo puedo instalar módulos Perl sin privilegios de administrador?

ejecuté cpan, que me pidió algunas opciones de configuración. Pidió algún directorio, que sugirió ~/perl "para usuarios no root". Aún así, cuando intento instalar un paquete, falla en el paso make install, porque no tengo acceso de escritura a /usr/lib/perl5/whatever.

¿Cómo puedo configurar CPAN para que pueda instalar paquetes en mi directorio personal?

+1

posible duplicado de [¿Cómo puedo usar CPAN como usuario no root?] (Http://stackoverflow.com/questions/2980297/how-can-i-use-cpan-as-a-non-root -user) – Ether

+0

@Ether. Estoy de acuerdo. También recomendaría Perlbrew, que se menciona en la pregunta "¿Cómo puedo instalar la versión Perl en mi casa con Perlbrew?" http://stackoverflow.com/questions/3733482/how-do-i-install-cpan-modules-while-using-perlbrew –

+0

Posible duplicado de [¿Cómo puedo usar un nuevo módulo Perl sin permisos de instalación?] (http: //stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module-without-install-permissions) –

Respuesta

24

Ver local::lib.

Una vez que haya instalado, puede hacerlo:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

+0

No funciona: 'mkdir /root/.cpan: Permiso denegado en/usr/lib/perl5/5.8.5/CPAN.pm línea 2342'. ¿Hay alguna manera de probar si local :: lib se ha instalado correctamente? –

+0

[Se ha agregado la compatibilidad con 'local :: lib' a' CPAN.pm' en 2011] (https://metacpan.org/changes/distribution/CPAN#L389). 'perl' 5.8.5 fue [lanzado en 2004] (https://perldoc.perl.org/perlhist.html). Ahí radica el problema. –

25

No es la forma documentada en perlfaq8, que es lo que está haciendo local::lib para usted.

Es también una cuestión StackOverflow las preguntas más frecuentes:

Curiosuly, ninguno de ellos se sugieren cuando se utiliza el título de la pregunta original (que es una de las razones de un buen título es muy importante en la búsqueda de su respuesta).


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

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

Si desea instalar módulos para su propio uso, la forma más fácil podría ser local :: lib, que puede descargar desde CPAN. Establece varias configuraciones de instalación para usted, y usa esas mismas configuraciones dentro de sus programas.

Si desea más flexibilidad, debe configurar su cliente CPAN para su situación particular.

Para distribuciones basadas en Makefile.PL, 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 la biblioteca privada cuando se utiliza el CPAN.pm shell:

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

Para distribuciones basadas en Build.PL, 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 le dice a estas herramientas que coloquen sus módulos en/mydir/perl/lib/perl5. Consulte ¿Cómo agrego un directorio a mi ruta de inclusión (@INC) en tiempo de ejecución? para detalles sobre cómo ejecutar sus módulos recién instalados.

Hay una advertencia con INSTALL_BASE, sin embargo, ya que actúa de manera diferente a las configuraciones PREFIX y LIB que defendían versiones anteriores de ExtUtils :: MakeMaker. INSTALL_BASE no admite la instalación de módulos para múltiples versiones de Perl o arquitecturas 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.

Cuestiones relacionadas