peru pagina oficial manager library perl cpan

perl - pagina - ¿Cómo puedo usar CPAN como usuario no root?



perl package manager (4)

Quiero instalar módulos perl en un servidor compartido en el que no tengo acceso de root. ¿Cómo puedo hacer esto? También parecen tener una versión anterior de CPAN (se queja de eso cuando se ejecuta el comando), ¿es posible actualizar el comando CPAN que se usa desde mi cuenta sin necesidad de acceso raíz?


El método más fácil que he encontrado hasta ahora es decir

wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` echo ''eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`'' >> ~/.profile echo ''export MANPATH=$HOME/perl5/man:$MANPATH'' >> ~/.profile

Esto supone que su perfil se llama .profile , puede necesitar cambiarlo para que sea .bash_profile , .bashrc , etc. Después de eso puede instalar los módulos diciendo

cpanm Module::Name

y simplemente utilícelos de la misma manera que lo haría si los instalaran en los directorios raíz.

Lo que sigue es una breve explicación de lo que hacen los comandos anteriores.

wget -O- http://cpanmin.us obtiene la última versión de cpanm y la imprime en STDOUT que luego se canaliza a perl - -l ~/perl5 App::cpanminus local::lib . El primero - le dice a perl que espera que el programa entre en STDIN , esto hace que perl ejecute la versión de cpanm que acabamos de descargar. perl pasa el resto de los argumentos a cpanm . El argumento -l ~/perl5 le dice a cpanm dónde instalar los módulos Perl, y los otros dos argumentos son dos módulos para instalar. [App::cpanmins ] 1 es el paquete que instala cpanm . local::lib es un módulo auxiliar que gestiona las variables de entorno necesarias para ejecutar módulos en el directorio local.

Después de que esos módulos estén instalados, corremos

eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`

para establecer las variables de entorno necesarias para usar los módulos locales y luego

echo ''eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`'' >> ~/.profile

para asegurar que podremos usarlos la próxima vez que inicie sesión.

echo ''export MANPATH=$HOME/perl5/man:$MANPATH'' >> ~/.profile

Con suerte, hará que el hombre encuentre las páginas man para sus módulos locales.


Para completar, este es el proceso de instalación de cpanm en OSX si desea mantener su perl5 en ~/Library .

curl -L http://cpanmin.us | perl - -l ~/Library/perl5 App::cpanminus local::lib eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5` echo ''eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`'' >> ~/.bash_profile


Si también desea poder leer páginas man para los módulos instalados en cpanminus, también debe asegurarse de que el subdirectorio correcto de la ruta de la biblioteca elegida esté en MANPATH. Entonces, la solución anterior que muestra el proceso de instalación de cpanm necesita el siguiente comando adicional:

export MANPATH=$HOME/Library/perl5/man:$MANPATH'' >> ~/.bash_profile


http://web.archive.org/web/20120427144232/http://perl.jonallen.info/writing/articles/install-perl-modules-without-root

http://novosial.org/perl/life-with-cpan/non-root/

El paso principal en ambos conjuntos de instrucciones implica el módulo local :: lib

AFAIK, la lógica CPAN está contenida en el módulo Perl (CPAN.pm) lo que significa que también puede instalar fácilmente la más nueva en su directorio local como lo haría con cualquier otro módulo Perl.

Además, una vez que instale sus módulos en una ubicación no estándar, consulte estas dos preguntas al cargar bibliotecas desde ubicaciones no estándar (parte de la información ya está disponible en el enlace anterior):

¿Cómo sabe un programa Perl dónde encontrar el archivo que contiene el módulo Perl que utiliza?

¿Cómo se construye el @INC de Perl? (aka, ¿cuáles son todas las formas de afectar dónde se buscan los módulos de Perl?)