perl makefile perl-module prerequisites

perl - ¿Debo colocar los módulos principales en la sección PREREQ_PM de un Makefile.PL?



perl-module prerequisites (2)

¿Debo incluir únicamente módulos no principales en la sección PREREQ_PM de un archivo Makefile.PL o debería incluir también los módulos principales?


Hubo una discusión interesante sobre esto en PerlMonks no hace mucho tiempo.

Mi política personal es no hacerlo.

Aunque los módulos se eliminan del núcleo ocasionalmente, hay un ciclo de desactivación largo (alrededor de 2 años), lo que le da mucho tiempo para volver a empaquetar su distribución con dependencias actualizadas.

Y si lo peor llega a ser lo peor, y no actualiza su distribución, cuando intenten instalarla, recibirá un mensaje de error sobre un módulo que falta, por lo que debería ser bastante obvio para ellos cómo proceder. (Es decir, deberían instalar ese módulo, luego intente instalar el suyo nuevamente).


Sí, debe especificar todas las dependencias: el núcleo de Perl no se repara en toda la eternidad. Los módulos principales se agregan o eliminan (después de un proceso de obsolescencia) todo el tiempo. Especificando todas sus dependencias ...

  • ... hará que su programa funcione en futuras perls que hayan eliminado el módulo de Core. Todavía estará disponible desde CPAN. Por ejemplo, Term::UI es un módulo Core desde v5.9.5 pero se eliminó en v5.19.0.

  • ... afirmará que está instalada una versión suficientemente alta del módulo central en cuestión. Algunos módulos han evolucionado significativamente a través del tiempo, y es fácil olvidar que no todo estaba disponible hace cinco años.

  • ... hará que su programa funcione en perls antiguos que no incluyeron el módulo en Core, pero de todos modos pueden usarlo.

Por otro lado, estas pueden ser ganancias muy pequeñas. Nada se romperá si olvida especificar un módulo central como Carp como una dependencia.

Recuerde: hay tres causas para que un módulo se incluya en Core:

  • cosas centrales para Perl como strict que no van a ser eliminadas.
  • cosas necesarias para descargar e instalar los módulos de CPAN. Esto incluye el manejo del sistema de archivos. Aquí los cambios ocurren ocasionalmente.
  • Cruft histórico. Pleeease tira CGI.pm ;-)

Consejo: utilice la herramienta de lista de corelist de Module::Corelist para ver qué versiones de módulos hay disponibles en Perl.