
Я пытаюсь написать формулу Джуджу дляПриложение::Алиса, веб-клиент IRC.
СогласноИнструкция по установкеЯ выполняю следующие команды, чтобы извлечь Alice и все ее зависимости из CPAN:
curl -L http://xrl.us/cpanm | perl - --sudo App::cpanminus
cpanm --sudo --installdeps App::Alice
Я написалформулачтобы при запуске экземпляра EC2 он устанавливал все целиком, вот мой хук установки:
#!/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
Проблема в том, что на m1.small потребовалось около 10 минут, чтобы захватить и собрать все из CPAN. Это слишком долго, особенно если я собираюсь платить за 10 минут вычислительного времени каждый раз, когда я хочу запустить Alice! Поэтому я подумал, что если я могу установить модули CPAN, которые уже существуют как пакеты, и добавить их в строку apt-get, это сэкономит кучу времени.
При использовании Alice я сразу же получил сообщение об ошибке, что необходим SSL, поэтому я добавил пакет libnet-ssleay-perl
в нужную строку.
Моя проблема в том, что я не хочу запускать установку и вручную определять, какие модули ей нужны, искать их в архиве, а затем добавлять.
Есть ли инструмент или метод, который позволит мне просто выяснить, какие модули нужны Алисе и упакованы, чтобы я мог установить их из архива, или мне нужно искать каждый из них?
решение1
Я заглянул в Makefile.PL и нашел это:
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';
Это позволило мне искать каждый отдельный пакет. Я так и не смог найти способ узнать зависимости программным путем, поэтому я искал каждый из них вручную.