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://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?)