¿Cómo puedo saber mediante programación qué módulos CPAN se relacionan con los módulos empaquetados?

¿Cómo puedo saber mediante programación qué módulos CPAN se relacionan con los módulos empaquetados?

Estoy intentando escribir una fórmula Juju paraAplicación::Alicia, un cliente IRC basado en web.

Según elInstrucciones de instalaciónEjecuto los siguientes comandos para capturar a Alice y todas sus dependencias de CPAN:

curl -L http://xrl.us/cpanm | perl - --sudo App::cpanminus
cpanm --sudo --installdeps App::Alice

escribíla formulaPara hacer esto de modo que cuando inicie una instancia EC2 lo instale todo, aquí está mi enlace de instalación:

#!/bin/bash
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install build-essential libnet-ssleay-perl
set -eux # -x for verbose logging to juj debug-log
curl -L http://xrl.us/cpanm | perl - --sudo App::cpanminus
cpanm --sudo --installdeps App::Alice

El problema es que tomó alrededor de 10 minutos en un m1.small enganchar y construir todo desde CPAN. ¡Es demasiado tiempo de espera, especialmente si voy a pagar 10 minutos de tiempo de computación cada vez que quiero ejecutar Alice! Entonces estaba pensando que si pudiera instalar los módulos CPAN que ya existen como paquetes y agregarlos a la línea apt-get, esto ahorraría mucho tiempo.

Inmediatamente recibí un error al usar Alice que necesitaba SSL, así que agregué el libnet-ssleay-perlpaquete a la línea correcta.

Mi problema es que no quiero ejecutar la instalación y determinar manualmente qué módulos necesita, buscarlos en el archivo y luego agregarlos.

¿Existe alguna herramienta o método que me permita determinar qué módulos necesita Alice y que están empaquetados para poder instalarlos desde el archivo o tengo que buscar cada uno?

Respuesta1

Busqué en Makefile.PL y encontré esto:

all_from 'lib/Alice.pm';
requires 'List::MoreUtils' => '0';
requires 'Any::Moose' => '0';
requires 'Try::Tiny' => '0';
requires 'EV' => '0';
requires 'AnyEvent' => '5.2';
requires 'AnyEvent::AIO' => '0';
requires 'AnyEvent::IRC' => '0.95';
requires 'AnyEvent::HTTP' => '0';
requires 'Twiggy' => '0';
requires 'Plack' => '0';
requires 'Plack::Session' => '0';
requires 'DBD::SQLite' => '0';
requires 'SQL::Abstract' => '0';
requires 'AnyEvent::DBI' => '0';
requires 'IRC::Formatting::HTML' => '0.28';
requires 'Text::MicroTemplate' => '0.09';
requires 'JSON' => '2.12';
requires 'File::ShareDir' => '0.01';
requires 'File::Copy' => '0';
requires 'Net::SSLeay' => '0';
test_requires 'Test::More' => '0.86';
test_requires 'Test::TCP' => '0';
install_share 'share';
install_script 'bin/alice';

Esto me permitió buscar cada paquete individual. Nunca pude encontrar una manera de encontrar los departamentos mediante programación, así que busqué cada uno a mano.

información relacionada