• Publicidad

Instalación de módulos y bibliotecas en Perl

Aprende Perl

Instalación de módulos y bibliotecas en Perl

Notapor explorer » 2013-01-30 19:02 @834

Instalación de módulos y bibliotecas en Perl

Impacientes:
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:
Sintáxis: [ Descargar ] [ Ocultar ]
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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. 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.


Preparativos
Hay 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 global
El 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 local
Siempre 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 Linux
Una 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

  1. 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:
    Sintáxis: [ Descargar ] [ Ocultar ]
    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:
    Sintáxis: [ Descargar ] [ Ocultar ]
    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:
    Sintáxis: [ Descargar ] [ Ocultar ]
    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.

  2. 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.

  3. 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í:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using bash Syntax Highlighting
    perl Makefile.PL
    make
    make test
    make install
    Coloreado en 0.004 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 Windows
En 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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Instalación de módulos y bibliotecas en Perl, cpanm

Notapor explorer » 2013-02-11 21:35 @941

CPAN minus (cpanm) es un comando que nos permite instalar módulos de una forma más simple, y sin tantas preguntas como lo hacen los comandos cpan y cpanp.

Este comando está dentro de la distribución App::cpanminus.

Podemos instalarlo de varias maneras:

Código: Seleccionar todo
# Estándar
$ cpan App::cpanminus
$ cpanp install App::cpanminus

# Descargar última versión, para todo el sistema (preguntará por la contraseña de root)
$ curl -L http://cpanmin.us | perl - --sudo App::cpanminus

# Descargar última versión, para un Perl local (~/perl5/perlbrew/bin/cpanm, generalmente)
* curl -L http://cpanmin.us | perl - App::cpanminus

# Última versión del comando cpanm, que descargamos a un archivo local
$ cd ~/bin
$ curl -LO http://xrl.us/cpanm
$ chmod +x cpanm
# editar el shebang (#!) si no tienes /usr/bin/env

Y ya podemos instalar módulos con el nuevo comando cpanm:

cpanm Módulo

No preguntará nada (por algo se llama 'minus') :)

En la página de manual de cpanm se explica las distintas formas de instalar módulos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Instalación de módulos y bibliotecas en Perl, local::lib

Notapor explorer » 2013-02-11 21:54 @954

local::lib es un módulo que permite mantener un directorio local de módulos, colgando, generalmente, de ~/perl5.

Lo que hace es crear un entorno para que el intérprete perl pueda localizar y trabajar con módulos que no están en los directorios principales del sistema, sino en otro sitio, generalmente, en el propio directorio del usuario.

Y no solo los módulos. Con la ayuda de la modificación de las variables de entorno, podemos ejecutar un binario perl que no sea el del sistema, si no otro que hayamos instalado en nuestro directorio perl local.

Primero debemos instalar local::lib en el sistema. Luego ejecutamos

$ echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc

que modificará el archivo .bashrc, añadiendo modificaciones a las variables de entorno PERL_MB_OPT, PERL_MM_OPT, PERL5LIB y PATH.

Ahora hay que leer esas modificaciones, volviendo a entrar en el sistema, o ejecutando el contenido de .bashrc:

$ . ~/.bashrc

Ahora ya podemos hacer instalaciones locales de módulos:

$ perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

En este ejemplo estamos instalando en ~/perl5 la distribución LWP y todas sus dependencias.

Podemos ver el entorno modificado:

$ perl -Mlocal::lib

Dentro de nuestro código, solo tenemos que poner

use local::lib;
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Instalación de módulos y bibliotecas en Perl

Notapor explorer » 2013-04-01 16:28 @727

Perl and Perl Module Administration in the Modern Era, por djerius.

«El Perl que te ofrece tu SO es antiguo (sí, lo es) y, probablemente, esté lleno de errores. Podemos arreglarlo.

La mayor parte de los problemas en programación se solucionan con un módulo Perl bajado desde CPAN, pero si no sabes qué es esto, o cómo instalar los módulos desde él, nunca lo usarás. También podemos arreglar esto.

Tu tienes código en producción que necesitas que siga corriendo, pero quieres meterte con herramientas y técnicas modernas. También podemos ayudar con eso.

Esta charla (en inglés) ofrece una rápida introducción a perlbrew, cpanminus y local::lib
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Cómo instalar diferentes versiones de Perl

Notapor explorer » 2015-05-05 09:35 @441

How to install different versions of Perl (en inglés).

Este artículo muestra un buen resumen de cómo usar perlbrew para instalar versiones de Perl diferentes de la del sistema, y cpanm para instalar módulos, también en nuestro directorio.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Formación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados