[Madrid-pm] Dependencias "externas" de un m�dulo de Perl

Joaquin Ferrero explorer en joaquinferrero.com
Sab Dic 14 12:43:00 PST 2013


El 14/12/13 10:18, JJ Merelo escribió:
> Hola, para mi "novela-en-un-módulo-CPAN" necesito un diccionario de
> hunspell, y por mucho que he buscado, parece que no hay forma de
> expresar prerrequisitos no-perleros en ninguna de las formas estándar
> de distrbuir módulos CPAN. En alguna (Module::Install) le puedes
> decir qué prerrequisitos en forma de programas ejecutables necesitas,
> aunque no hay forma de decir qué hace falta para que se instale, pero
> en ninguna se puede decir, como en mi caso, que hace falta no sé qué
> diccionario que está contenido en no sé qué paquete.
>
> La verdad es que a estas alturas de la película debería ser más fácil
> hacer este tipo de cosas; en Travis-CI, por ejemplo, es muy fácil
> decirle qué paquetes hay que preinstalar a la hora de testear algo,
> aunque es específico de la máquina, pero lo suyo sería contar con
> órdenes tipo Vagrant o Puppet para decirle: necesito estos paquetes y
> tú ya te apañas para instalarlos antes de testear mi distro.
>
> Otra opción es, por supuesto, fallar en caso de que los paquetes no
> estén instalados con un mensaje que indique al usuario que lo instale
> a mano, pero es poco devops, esto.
>
> Un breve rant... mientras tanto, si queréis leer mi novela, la
> compráis en Amazon, la leéis en GitHub o cpan Text::Hoborg (en unos
> minutos, espero, sin cpan --force) y luego perldoc
> Text::Hoborg::Manuel
>
> Saludos
>
> -- JJ
>
>
> _______________________________________________ Madrid-pm mailing
> list Madrid-pm en pm.org http://mail.pm.org/mailman/listinfo/madrid-pm
>

Bueno, el Makefile.PL no deja de ser un ejecutable Perl, así que se puede hacer de -casi- todo dentro de él.

Como dices, con Module::Install::External se puede ver si el hunspell está instalado. Si no lo está, el Makefile.PL se muere.

En otras distribuciones que dependen de archivos/bibliotecas externas, hacen lo siguiente:

* incluir esos archivos en la propia distribución del módulo. Ejemplo: DBD::SQLite

* bajar los archivos extra en el momento de la instalación. Con Module::Install::Fetch, se puede hacer una conexión FTP o HTTP a un determinado servidor, y bajarlos

* poner en las instrucciones de instalación que es el usuario el responsable de hacerlo, y si falla uno de los test, recordar que tiene que hacerlo

JF


Más información sobre la lista de distribución Madrid-pm