¡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
- Inicia sesión en tu servidor a través de SSH.
- Crea los siguientes directorios:
[server] mkdir ~/perl5/man [server] mkdir ~/perl5/man/man1 [server] mkdir ~/perl5/man/man3
- 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.
- 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
- 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]
- 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
- 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 - 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
cpan[1]
- 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"
- Confirma (commit) los cambios:
cpan[1] o conf commit
- Escribe exit para salir de CPAN:
cpan[1] exit
Instalar los módulos
Ahora que todo está configurado, puedes instalar los módulos.
- Abre CPAN de nuevo:
[server] cpan
- 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.
- Genera el Makefile usando:
[server]$ perl Makefile.PL PREFIX=~/perlmods
- Abre Makefile y busca esta línea:
INSTALLARCHLIB = /usr/lib/perl/5.10
- Cámbialo para que diga:
INSTALLARCHLIB = $(SITEPREFIX)/lib/perl/5.10
- 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.