Ago 262013
 
Artículo Perl

Para instalar un módulo de CPAN en su ubicación por defecto es necesario tener privilegios de administrador. Pero si no somos administradores del sistema, también es posible instalar los módulos en otra ubicación, por ejemplo en un directorio creado bajo el directorio de login.

En este artículo se explica la manera de hacerlo.

1. Configuración de CPAN

En primer lugar, creamos el directorio en donde queremos que se instalen los módulos. En nuestro ejemplo, creamos un directorio “perl5” bajo el directorio de login:

$ mkdir ~/perl5

A continuación, creamos un fichero de configuración de CPAN vacío, específico para el usuario que estamos utilizando:

$ touch ~/.cpan/CPAN/MyConfig.pm

El comando ‘cpan’ utiliza este fichero de configuración si existe. en caso contrario, utiliza el fichero genérico del sistema (normalmente en ‘/root/.cpan/CPAN/Config.pm’).

A continuación, ejecutamos cpan, y cuando aparece el prompt introducimos el comando de inicialización de la configuración “o conf init”:

$ cpan
cpan> o conf init
...

Durante el proceso de inicialización, cpan solicita una serie de valores que quedan grabados en el fichero de configuración. Entre estos valores hay algunos que especifican una serie de directorios utilizados durante la compilación de los módulos.

Tras finalizar la configuración, podemos revisar el fichero MyConfig.pm para comprobar que estos valores quedan configurados de la siguiente forma (sustituyendo ‘/home/username’ por el directorio de login del usuario):

  'build_dir' => q[/home/username/.cpan/build],
  'cpan_home' => q[/home/username/.cpan],
  'histfile' => q[/home/username/.cpan/histfile],
  'keep_source_where' => q[/home/username/.cpan/sources],
  'prefs_dir' => q[/home/username/.cpan/prefs],

2. Especificar el directorio de instalación de los módulos: INSTALL_BASE

Para indicar a cpan que un módulo debe ser instalado bajo el directorio ‘~/perl5’ que hemos creado anteriormente, hay dos posibilidades:

Por una parte, podemos definir una variable de entorno de la forma:

PERL_MM_OPT="INSTALL_BASE=/home/username/perl5"

En el fichero de configuración de CPAN, existen también dos parámetros para especificar el directorio de instalación: ‘makepl_arg’ y ‘mbuildpl_arg’, dependiendo de que el módulo utilice ‘Makefile.PL’ o ‘Build.PL’:

$ cpan
cpan> o conf makepl_arg INSTALL_BASE=/home/username/perl5
cpan> o conf mbuildpl_arg '--install_base /home/username/perl5'
cpan> o conf commit

Alternativamente, se puede definir en la configuración de CPAN un parámetro “PREFIX”, aunque la recomendación oficial es utilizar INSTALL_BASE. Con esto, los módulos quedarán instalados en un subdirectorio ‘~/perl5/lib/perl5’. Las páginas de manual se instalarán en ‘~/perl5/man’, y los binarios en ‘~/perl5/bin’.

3. Usar en scripts de línea de comandos los módulos instalados

Para que los scripts perl puedan localizar y utilizar los módulos instalados en el directorio de login, debemos definir la variable de entorno PERL5LIB de la siguiente forma:

$ export PERL5LIB=~/perl5/lib

Para ejecutar cpan, utilizaremos el comando:

$ PERL5LIB=~/perl/lib perl -MCPAN -e shell

4. Usar en scripts CGI los módulos instalados

Si hemos escrito en perl scripts CGI para ser ejecutados en un servidor web, puede ocurrir que no tengamos permisos para definir en el entorno de ejecución del servidor web la variable de entorno PERL5LIB (por ejemplo, en un hosting compartido).

En este caso podemos editar los scripts para indicar explícitamente la ubicación en donde debe buscar los módulos, añadiendo al comienzo del script la sentencia:

use lib "/home/username/perl5/lib/perl5";

Referencias:

ExtUtils::MakeMaker::FAQ – perldoc.perl.org

Indice de artículos sobre programación en lenguaje Perl

 Publicado por en 6:32 pm

 Deja un comentario

(requerido)

(requerido)