CPAN

 

¡iNFORMACIÓN POSIBLEMENTE DESACTUALIZADA!

  • DreamHost directamente no soporta ninguna de las características descritas en esta página. ¡Usala bajo tu propio riesgo!
  • El soporte técnico para estas instrucciones no está disponible en el soporte técnico de DreamHost.
  • Los cambios del servidor realizados por DreamHost pueden romper tus modificaciones. Tu, como usuario, eres responsable de solucionar problemas y resolver problemas con tus personalizaciones.
  • Si necesitas acceso root/sudo para ejecutar un comando, debes actualizar a un Servidor Dedicado y agregar un usuario admin.

El Comprehensive Perl Archive Network (CPAN) te permite utilizar una extensa biblioteca de módulos prefabricados disponibles en metacpan.org/.

CPAN normalmente requiere acceso de root, pero este artículo te muestra cómo configurar CPAN como un usuario no root.

En los siguientes ejemplos, username sería tu usuario Shell y example.com tu sitio web.

Configurar CPAN

  1. Inicia sesión en tu servidor a través de SSH.
  2. Crea los siguientes directorios:
    [server] mkdir ~/perl5/man
    [server] mkdir ~/perl5/man/man1
    [server] mkdir ~/perl5/man/man3
  3. Configura CPAN para instalar los módulos. Si es la primera vez que lo corres, dirígete directamente al modo de configuración:
    [server]$ cpan
    

    Debes utilizar el comando cpan, en lugar de perl -MCPAN. El último comando no se reconoce como un instalador y está sujeto a límites de memoria más estrictos.

  4. Si la configuración de CPAN no aparece, ingresa o conf init en el indicador cpan>:
    CPAN.pm requires configuration, but most of it can be done automatically.
    If you answer 'no' below, then enter an interactive dialog for each
    configuration option instead.
    
    Would you like to configure as much as possible automatically? [yes] yes
    
  5. Escribe yes y presiona la tecla Enter:
    Warning: You do not have write permission for Perl library directories.
    
    To install modules, you need to configure a local Perl library directory or
    escalate your privileges.  CPAN can help you by bootstrapping the local::lib
    module or by configuring itself to use 'sudo' (if available).  You may also
    resolve this problem manually if you need to customize your setup.
    
    What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
     [local::lib]
  6. Presiona la tecla Enter para aceptar local::lib:
    Now you need to choose your CPAN mirror sites.  You can let me
    pick mirrors for you, you can select them from a list or you
    can enter them by hand.
    
    Would you like me to automatically choose some CPAN mirror
    sites for you? (This means connecting to the Internet) [yes] yes
  7. Escribe yes y luego presiona la tecla Enter. Deja que el script se ejecute hasta que veas lo siguiente:
    local::lib is installed. You must now add the following environment variables
    to your shell configuration files (or registry, if you are on Windows) and
    then restart your command line shell and CPAN before installing modules:
    
    PATH="/home/username/perl5/bin${PATH:+:${PATH}}"; export PATH;
    PERL5LIB="/home/username/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
    PERL_LOCAL_LIB_ROOT="/home/username/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
    PERL_MB_OPT="--install_base \"/home/username/perl5\""; export PERL_MB_OPT;
    PERL_MM_OPT="INSTALL_BASE=/home/username/perl5"; export PERL_MM_OPT;
    Would you like me to append that to /home/username/.bashrc now? [yes] yes
  8. Escribe yes y luego presiona la tecla Enter:
    commit: wrote '/home/username/.cpan/CPAN/MyConfig.pm'
    
    You can re-run configuration any time with 'o conf init' in the CPAN shell
    Tu resultado cambia a lo siguiente:
    cpan[1] 
  9. Corre lo siguiente. Asegúrate de cambiar el nombre de usuario a tu nombre de usuario real de Shell:
    cpan[1] o conf makepl_arg "install_base=/home/username/perl5 \
        LIB=/home/username/perl5/lib \
        INSTALLMAN1DIR=/home/username/perl5/man/man1 \
        INSTALLMAN3DIR=/home/username/perl5/man/man3"
  10. Confirma (commit) los cambios:
    cpan[1] o conf commit
  11. Escribe exit para salir de CPAN:
    cpan[1] exit
    Esto te pone de vuelta en tu shell normal.

Instalar los módulos

Ahora que todo está configurado, puedes instalar los módulos.

  1. Abre CPAN de nuevo:
    [server] cpan
  2. Escribe install Some::Module, donde Some::Module es el nombre del módulo que estás intentando instalar:
    [cpan[1] install XML:Simple
    

Ver los módulos

También puedes verificar si los módulos están instalados dentro de CPAN y dónde. Escribe la letra i seguida del nombre del módulo. Por ejemplo:

[cpan[1] i XML::Simple
Module id = XML::Simple
    CPAN_USERID  GRANTM (Grant McLean <grantm@cpan.org>)
    CPAN_VERSION 2.25
    CPAN_FILE    G/GR/GRANTM/XML-Simple-2.25.tar.gz
    UPLOAD_DATE  2024-04-08
    MANPAGE      XML::Simple - An API for simple XML files
 INST_FILE    /usr/share/perl5/XML/Simple.pm
    INST_VERSION 2.22

Hacer que tus scripts FastCGI/CGI funcionen

Cualquier script CGI o Fast CGI debe tener lo siguiente en la parte superior para poder utilizar los módulos instalados localmente:

use lib qw( /home/username/perlmods/lib/perl/5.x /home/username/perlmods/lib/perl/5.x.x 
            /home/username/perlmods/share/perl/5.x /home/username/perlmods/share/perl/5.x.x
            /home/username/perlmods/local/share/perl/5.x.x 
            /home/username/perlmods/local/lib/perl/5.x.x );

donde username es tu nombre de shell, perlmods es lo que elegiste arriba como el directorio de instalación local de CPAN, y 5.x y 5.x.x se refieren a la versión de Perl actualmente instalada determinada por perl -v.

¿Qué pasa si veo un error?

Si el comando anterior de cpan genera un error como el siguiente:

Your configuration suggests that CPAN.pm should use a working
directory of
    /root/.cpan
Unfortunately we could not create the lock file
    /root/.cpan/.lock
due to permission problems.

Please make sure that the configuration variable
    $CPAN::Config->{cpan_home}
points to a directory where you can write a .lock file. You can set
this variable in either
    /etc/perl/CPAN/Config.pm
or
    /home/username/.cpan/CPAN/MyConfig.pm

Could not open >/root/.cpan/.lock: Permission denied

Luego debes crear manualmente un archivo ~/.cpan/CPAN/MyConfig.pm antes de continuar con el siguiente paso (esto se debe a que root ya configuró cpan en tu host).

Puedes hacer esto ingresando lo siguiente:

mkdir -pv ${HOME}/.cpan/CPAN
cat > ${HOME}/.cpan/CPAN/MyConfig.pm <<eof

\$CPAN::Config = {
  'auto_commit' => q[0],
  'build_cache' => q[10],
  'build_dir' => q[\$ENV{HOME}/.cpan/build],
  'cache_metadata' => q[1],
  'commandnumber_in_prompt' => q[1],
  'cpan_home' => q[\$ENV{HOME}/.cpan],
  'dontload_hash' => {  },
  'ftp' => q[/usr/bin/ftp],
  'ftp_passive' => q[1],
  'ftp_proxy' => q[],
  'getcwd' => q[cwd],
  'gpg' => q[/usr/bin/gpg],
  'gzip' => q[/bin/gzip],
  'histfile' => q[\$ENV{HOME}/.cpan/histfile],
  'histsize' => q[100],
  'http_proxy' => q[],
  'inactivity_timeout' => q[0],
  'index_expire' => q[1],
  'inhibit_startup_message' => q[0],
  'keep_source_where' => q[\$ENV{HOME}/.cpan/sources],
  'lynx' => q[/usr/bin/lynx],
  'make' => q[/usr/bin/make],
  'make_arg' => q[],
  'make_install_arg' => q[],
  'make_install_make_command' => q[/usr/bin/make],
  'makepl_arg' => q[PREFIX=\$ENV{HOME}/perlmods],
  'mbuild_arg' => q[],
  'mbuild_install_arg' => q[],
  'mbuild_install_build_command' => q[./Build],
  'mbuildpl_arg' => q[],
  'ncftpget' => q[/usr/bin/ncftpget],
  'no_proxy' => q[],
  'pager' => q[less],
  'prerequisites_policy' => q[follow],
  'scan_cache' => q[atstart],
  'shell' => q[/bin/bash],
  'tar' => q[/bin/tar],
  'term_is_latin' => q[0],
  'term_ornaments' => q[1],
  'unzip' => q[/usr/bin/unzip],
  'urllist' => [q[ftp://cpan.cse.msu.edu/], q[ftp://cpan-du.viaverio.com/pub/CPAN/], q[ftp://cpan.mirrors.redwire.net/pub/CPAN/], q[ftp://cpan.hostrack.net/pub/CPAN]],
  'use_sqlite' => q[0],
  'wget' => q[/usr/bin/wget],
};
1;
__END__
eof

Instalar Module::Build y muchos otros módulos

Si estás instalando Module::Build u otros que usan Module::Build en tu instalación, podría ser útil agregar las líneas PERL5LIB anteriores a tu .bash_profile, de lo contrario, cualquier cosa que construyas no sabrá cómo leer el script Module::Build Build.

Otros módulos

Ten en cuenta que algunos módulos no se instalan correctamente desde CPAN como no root y en una ruta no estándar. Deben construirse e instalarse manualmente (es decir, utilizando los scripts de construcción proporcionados con los módulos). Dos específicamente son:

DateTime

DateTime (a partir de 0.68) requiere que el paso de instalación se corra así usando la opción --install_base:

[server]$ ./Build install --install_base ~/perlmods

IO:Compress

IO::Compress (a partir de 2.034) requiere ajustar el Makefile porque una de las rutas de destino ignora la variable de entorno PREFIX.

  1. Genera el Makefile usando:
    [server]$ perl Makefile.PL PREFIX=~/perlmods
    
  2. Abre Makefile y busca esta línea:
    INSTALLARCHLIB = /usr/lib/perl/5.10
  3. Cámbialo para que diga:
    INSTALLARCHLIB = $(SITEPREFIX)/lib/perl/5.10
  4. Corre los siguientes comandos uno a la vez: make, make test, y make install.

Configurar CPAN

Si necesitas configurar manualmente los ajustes, puedes acceder a tu configuración en el archivo:

~/.cpan/CPAN/MyConfig.pm

Si especificas PREFIX como arriba, utiliza la ruta completa a tu directorio perlmods:

PREFIX=/home/username/perlmods

Usa perldoc para obtener una lista de la configuración de CPAN que puedeseditar:

[server]$ perldoc CPAN

Usar CPAN Minus y local::lib

El CPAN Minus de Tatsuhiko Miyagawa (github cpan) hace que sea aún más fácil agregar soporte para tus propios módulos Perl. Usa

[server]$ cpanm -L ~/perlmod module ...

para instalar módulos en ~/perlmod. Ingresa lo siguiente en tu script:

use local::lib '~/perlmod';

para usar estos módulos.

Terminados

Hay un servicio de monitor en ejecución que puede acabar con las instalaciones de Perl. Visita el siguiente artículo para obtener más información.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?