Как программно узнать, какие модули CPAN связаны с упакованными модулями?

Я пытаюсь написать формулу Juju для App :: Alice , веб-клиента IRC.

В соответствии с инструкциями по установке я выполняю следующие команды, чтобы поймать Алису и все ее зависимости от 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 минут вычислительного времени каждый раз, когда я хочу запустить Алису! Поэтому я подумал, смогу ли я установить модули CPAN, которые уже существуют в виде пакетов, и добавить их в строку apt-get, чтобы сэкономить кучу времени.

Сразу же я получил ошибку при использовании Алисы, что ей нужен SSL, поэтому я добавил пакет libnet-ssleay-perl в правую строку.

Моя проблема в том, что я не хочу запускать установку и вручную определять, какие модули ей нужны, искать их в архиве, а затем добавлять.

Есть ли инструмент или метод, который позволит мне выяснить, какие модули Алисе нужны, которые упакованы, чтобы я мог установить их из архива или мне нужно искать каждый из них?

2
задан 8 March 2013 в 06:39

1 ответ

Я смотрел в Make-файле. МН и найденный этим:

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';

Это позволило мне искать каждый отдельный пакет. Я никогда не мог выяснять способ узнать deps программно, таким образом, я искал каждого вручную.

2
ответ дан 2 December 2019 в 04:28

Другие вопросы по тегам:

Похожие вопросы: