
나는 다음에 대한 Juju 공식을 작성하려고 합니다.앱::앨리스, 웹 기반 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에서 CPAN의 모든 것을 걸고 구축하는 데 약 10분이 걸렸다는 것입니다. 특히 Alice를 실행할 때마다 10분의 컴퓨팅 시간에 대해 비용을 지불하려는 경우에는 기다리기에는 너무 깁니다! 그래서 이미 패키지로 존재하는 CPAN 모듈을 설치하고 이를 apt-get 라인에 추가하면 많은 시간을 절약할 수 있지 않을까 생각했습니다.
즉시 Alice를 사용할 때 SSL이 필요하다는 오류가 발생하여 libnet-ssleay-perl
패키지를 올바른 줄에 추가했습니다.
내 문제는 설치를 실행하고 필요한 모듈을 수동으로 결정하고 아카이브에서 검색한 다음 추가하고 싶지 않다는 것입니다.
Alice에게 패키징된 모듈 중 어떤 모듈이 필요한지 파악하여 아카이브에서 해당 모듈을 설치할 수 있게 해주는 도구나 방법이 있습니까? 아니면 각 모듈을 검색해야 합니까?
답변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';
이를 통해 각 개별 패키지를 검색할 수 있었습니다. 프로그래밍 방식으로 deps를 알아내는 방법을 찾을 수 없어서 일일이 일일이 검색했습니다.