どの CPAN モジュールがパッケージ化されたモジュールに関連しているかをプログラムで調べるにはどうすればよいでしょうか?

どの CPAN モジュールがパッケージ化されたモジュールに関連しているかをプログラムで調べるにはどうすればよいでしょうか?

私はジュジュ式を書こうとしているアプリ::アリス、Web ベースの IRC クライアント。

によると、インストール手順次のコマンドを実行して、CPAN から Alice とそのすべての依存関係を取得します。

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

問題は、CPAN からすべてを取得してビルドするのに m1.small で約 10 分かかったことです。特に Alice を実行するたびに 10 分の計算時間を支払うつもりなら、これは待ち時間が長すぎます。そこで、パッケージとして既に存在する CPAN モジュールをインストールして、apt-get 行に追加できれば、かなりの時間を節約できると考えました。

すぐに、Alice を使用する際に SSL が必要であるというエラーが表示されたので、libnet-ssleay-perl適切な行にパッケージを追加しました。

私の問題は、インストールを実行して、必要なモジュールを手動で決定し、アーカイブ内で検索して追加したくないことです。

Alice に必要なパッケージ化されたモジュールを特定してアーカイブからインストールできるツールや方法はありますか? それとも、モジュールを 1 つずつ検索する必要がありますか?

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

これにより、個々のパッケージを検索できるようになりました。依存関係をプログラムで見つける方法がわからなかったので、それぞれを手動で検索しました。

関連情報