Instalación de módulos y bibliotecas en PerlImpacientes:
saltar a la sección Instalación en Linux o Instalación en Windows.
Las distintas distribuciones de Perl suelen venir acompañadas de una gran cantidad de módulos y bibliotecas. Pero
muchas veces necesitaremos usar módulos y bibliotecas que no estarán instaladas en nuestros equipos.
Aquí viene una explicación de cómo hacer esa instalación.
Documentación oficial:
perldoc perlmodinstall
- Can't locate ...
- ¿Está realmente instalado?
- Preparativos
- Instalación global
- Instalación local
- Instalación en Linux
- Instalación en Windows
- ¿Qué módulos debo instalar?
Can't locate ...Así comienzan los mensajes de error que indican que Perl no ha sido capaz de localizar el módulo que le hemos pedido que use. Por ejemplo:
Using text Syntax Highlighting
Can't locate modulo.pm in @INC (@INC contains: /home/explorer/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/x86_64-linux /home/explorer/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1 /home/explorer/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/x86_64-linux /home/explorer/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1 .).
BEGIN failed--compilation aborted.
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Perl nos dice que no ha podido localizar modulo.pm en ninguno de los directorios indicados por la variable especial
@INC. Esta variable funciona como la $PATH o %PATH% del sistema operativo, indicando dónde se pueden encontrar los ejecutables o, como en este caso, las bibliotecas que el usuario puede utilizar en sus programas.
Si nosotros sabemos que nuestra biblioteca o módulo está instalada en un directorio distinto de estos, por ejemplo, '/home/yomismo/libs' entonces podemos ayudar a Perl a encontrarla diciéndoselo al principio del programa:
Using perl Syntax Highlighting
#!/usr/bin/perl
#
use lib '/home/yomismo/libs'; # se añade esta ruta a @INC
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
En caso contrario, es posible que no sepamos si el módulo está o no instalado en el sistema. Podríamos intentar localizarle con alguna herramienta de búsqueda propia del sistema operativo (locate en Linux/UNIX, o Find/Buscar en Windows). Si lo localizamos, pues ya sabemos cómo indicarle la ruta a Perl.
¿Está realmente instalado?Para asegurarnos de que un módulo está bien instalado, ejecutaremos
perl -Mmódulo -e -1(reemplace 'módulo' por el nombre del módulo que quiere comprobar)Si no sale ningún mensaje de error, eso significa que Perl sí es capaz de localizar el módulo.
Si sale un error parecido al de antes, entonces hay que empezar los preparativos para la instalación.
PreparativosHay que responder estas cuestiones...
- ¿En qué sistema operativo? en que estamos trabajando, ya que los métodos de instalación suelen ser distintos
. - ¿Instalación como usuario normal o como administrador? Según cómo y dónde lo hagamos, el módulo será visible solo por nuestros programas, o por los programas de todos los usuarios del sistema
. - ¿Instalación independiente del Perl del sistema? Puede que queramos experimentar con una versión de Perl distinta de la que está instalada en el sistema, así que quizás nos interesa instalar el módulo específico para esa versión, en un directorio local, sin ninguna intervención por parte del perl del sistema operativo
.
En la mayor parte de los casos, nos servirá instalar el módulo de forma global, para el perl instalado en el sistema operativo, así que solo tendremos que ocuparnos en convertirnos en administradores (
root) del sistema y proceder a la instalación (siguientes pasos).
En otras situaciones...
Instalación globalEl caso más normal es que podemos administrar nuestra máquina y que podemos instalar el módulo a nivel global. Saltar a las secciones siguientes (Linux o Windows) para ver cómo.
Instalación localSiempre podemos instalar un módulo de forma local, en caso de que no podamos ser administradores del sistema o no tengamos permisos para escribir en los directorios del sistema.
Como se indica en perlmodinstall, basta con darle un valor a la variable de entorno
PREFIX a la hora de hacer el
perl Makefile.PL para que el módulo quede instalado en el directorio que indiquemos. Ya solo queda poner un 'use lib' a nuestros programas para que puedan usarlo.
Hay otras opciones más cómodas, como usar
local::lib y/o
perlbrew, que se explican más adelante.
Instalación en LinuxUna vez que seamos administradores (root) de la máquina, solo hay que hacer una de las siguientes opciones. La primera que funcione conseguirá que tengamos instalado el módulo
- Intentar encontrar e instalar el módulo Perl desde la lista de paquetes de software de tu distribución
Por ejemplo, si estamos en Debian Linux, con apt, aptitude o cualquier otro se puede buscar por el nombre del paquete. Si estás en SUSE y OpenSUSE, se puede usar zypper y yast2. En Red Hat y Fedora, con yum. Y así para el resto de distribuciones Linux.
Ejemplo: Vamos a buscar qué paquete software contiene el módulo autobox
Con aptitude o synaptic podemos realizar la búsqueda a través de los textos, tanto del nombre como de las descripciones de los paquetes, pero en este caso, es muy posible que en el nombre del paquete esté incluido el nombre 'autobox', así que haremos la búsqueda desde la línea de comandos.
Desde Debian:
Using text Syntax Highlighting
root@hs-1590:/root# apt-cache search autobox
libautobox-core-perl - Module providing automatic methods for core functions
libautobox-dump-perl - Human/perl readable strings from the results of an EXPR
libautobox-list-util-perl - Perl module providing List::Util functions as methods on arrays
libautobox-perl - Perl pragma for method calls on native types
libmoose-autobox-perl - Perl autobox wrapper that understands Moose roles
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Y vemos todos los posibles. El que nos interesa, seguro que es libautobox-perl, pues su descripción coincide con la página de manual de autobox en CPAN. Así que lo instalamos directamente:
apt-get install libautobox-perl
Y ya está. En SUSE:
Using text Syntax Highlighting
joaquinferrero:~ # zypper search autobox
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
--+--------------------+----------------------------------------------+-----------
| perl-Moose-Autobox | Autoboxed wrappers for Native Perl datatypes | package
| perl-Moose-Autobox | Autoboxed wrappers for Native Perl datatypes | srcpackage
| perl-autobox | call methods on native types | srcpackage
| perl-autobox | call methods on native types | package
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Y sí que está, así que lo instalamos:
Using text Syntax Highlighting
joaquinferrero:~ # zypper install perl-autobox
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW packages are going to be installed:
perl-Scope-Guard perl-autobox
2 new packages to install.
Overall download size: 40.4 KiB. After the operation, additional 72.8 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package perl-Scope-Guard-0.20-23.1.x86_64 (1/2), 9.5 KiB ( 8.3 KiB unpacked)
Retrieving: perl-Scope-Guard-0.20-23.1.x86_64.rpm ..........................................[done]
Retrieving package perl-autobox-2.75-13.4.x86_64 (2/2), 30.9 KiB ( 64.5 KiB unpacked)
Retrieving: perl-autobox-2.75-13.4.x86_64.rpm .................................[done (17.2 KiB/s)]
Installing: perl-Scope-Guard-0.20-23.1 .....................................................[done]
Installing: perl-autobox-2.75-13.4 .........................................................[done]
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Vemos que, además, ha instalado de forma automática los módulos de los que depende autobox. No hay que hacer nada más.
Una advertencia sobre SUSE, que puede ser aplicada a otras distribuciones (Red Hat, Fedora, CentOS): aunque SUSE trae muchos módulos precompilados para Perl, es aconsejable añadir el repositorio
openSUSE BuildService - devel:languages:perl a la lista de repositorios software, para que la lista aumente en varios miles más
En
http://download.opensuse.org/repositories/devel:/languages:/perl/ hay enlaces a repositorios de paquetes rpm Perl precompilados para distintas distribuciones Linux. Por ejemplo, para agregar ese repositorio a la lista de repositorios de SUSE de nuestra máquina, podemos usar el gestor de repositorios, o desde la línea de comandos ejecutar:
zypper addrepo http://download.opensuse.org/repositori ... SUSE_12.2/ 'openSUSE BuildService - devel:languages:perl'(en caso de estar usando una OpenSUSE v12.2, claro)
La idea es que SIEMPRE, antes de intentar instalar un paquete, distribución o módulo de Perl, de forma manual, veamos si lo tenemos ya en forma de paquete software instalable para nuestro sistema operativo. Una excepción a esta regla es si necesitamos una determinada versión del módulo y esa versión no está aún en la lista de paquetes disponibles, por lo que no nos queda más remedio que usar otra forma de instalación, como se indica a continuación.
Los módulos instalados de esta manera quedarán guardados, generalmente, en un subdirectorio llamado vendor_perl/ dentro del árbol de la distribución perl del sistema.
- Usar el comando cpan o cpanp desde la línea de comandos: cpan Módulo o, mejor: cpanp -i Módulo o, incluso mucho mejor, instalar primero cpanm (cpan 'minus'). Estos comandos deberán ejecutarlos el root del sistema, para que puedan ser visibles para todos los usuarios del sistema.
Si se usa cpan o cpanp, la primera vez que los ejecute le preguntará una serie de configuraciones relativas a dónde tiene que conectarse para bajar los módulos (averiguar cuál es el espejo -mirror- de CPAN más cercano). Luego procederá a bajarlo, desempaquetarlo, compilarlo e instalarlo. Si el módulo necesita de más dependencias, preguntará que hacer con ellas, si bajarlas todas o de una en una.
La instalación es así:
cpan HTML::TagParser
o así:
cpanp -i HTML::TagParser
o así:
cpanm HTML::TagParser
para el caso de la instalación del módulo HTML::TagParser, claro
Los módulos instalados de esta manera quedarán guardados, generalmente, en un subdirectorio llamado site_perl/ o en el subdirectorio con el mismo número de versión de la distribución, dentro del árbol de la distribución perl del sistema.
- Usar el método clásico: descargar, compilar, comprobar, instalar. Primero debemos localizarlo en CPAN o en MetaCPAN. Por ejemplo, para autobox, en la página de su distribución hay un enlace llamado Download donde podremos bajarnos el paquete. Lo descomprimiremos, leemos por encima el documento README por si es necesario algún paso adicional, y procederemos a realizar la instalación, que en la mayor parte de los casos será así:
Using bash Syntax Highlighting
perl Makefile.PL
make
make test
make installColoreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Para estos dos últimas opciones es necesario que en el sistema esté instalada la herramienta make, y en algunos casos, algún compilador de C. Hay más detalles y explicaciones en perlmodinstall.
Instalación en WindowsEn Windows existen varias distribuciones que, además de traer una distribución completa de Perl, facilitan, de alguna manera, la instalación de más módulos.
Para la gente que comienza se recomienda usar la distribución gratuita de la empresa ActiveState.
Hay un hilo dedicado a cómo instalarlo y cómo configurar el gestor de paquetes y cómo instalar módulos con él.
Otra distribución conocida es la
Strawberry Perl que, además de la distribución de Perl, trae un compilador (gcc), herramientas asociadas, bibliotecas externas (criptografía, gráficos, XML, ...), controladores para distintas bases de datos, etc. Para instalar módulos en esta distribución también se puede usar el comando
cpanm comentado antes.
Otra posibilidad:
instalar Strawberry y Padre (un IDE específico para Perl) en un solo paquete Windows.
Más detalles (en inglés), junto con un vídeo.
También está la
Citrus Perl, que tiene como característica especial el que incluye todas las bibliotecas necesarias para hacer aplicaciones gráficas.
¿Qué módulos debo instalar?Siempre se recomienda hacer uso primero de los módulos que acompañan a la propia distribución de Perl, los llamados módulos CORE (listados en
perldoc perlmodlib). Si con estos no son suficientes, entonces sí que hay que pensar en buscarlo. Pero, ¿cuál?
Esta es una pregunta difícil o fácil de responder, según la tarea que necesitemos realizar. En algunos casos, la elección de un determinado módulo será sencilla e inmediata, como puede ser el caso de autobox o
List::AllUtils, pero en otros no, como es el caso de querer resolver
un problema con un XML.
En el momento de escribir estas líneas, hay disponibles más de 26 000 distribuciones que contienen más de 117 000 módulos. Buscar lo que necesitamos puede ser muy complicado
Se recomienda el contactar con la comunidad (foros, listas de correo,
chats) para solicitar ayuda.
Se dice que en CPAN hay... de todo... Bueno, pues
también hay una distribución que nos puede ayudar a elegir el módulo que estamos buscando. Se trata de
Task::Kensho, que contiene la lista de los 100 módulos mejor valorados por los programadores que ya los han usado.
Otra lista es la de Awesome-perl, los
mejores entornos de trabajo, bibliotecas y software en Perl 5.