
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-perl
paquete 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.