
Ich versuche eine Juju-Formel zu schreiben fürApp::Alice, ein webbasierter IRC-Client.
Nach Angaben derInstallationsanleitungIch führe die folgenden Befehle aus, um Alice und alle ihre Abhängigkeiten von CPAN zu schnappen:
curl -L http://xrl.us/cpanm | perl - --sudo App::cpanminus
cpanm --sudo --installdeps App::Alice
Ich hab geschriebendie FormelUm dies zu tun, sodass beim Starten einer EC2-Instanz das gesamte Ding installiert wird, hier ist mein Installations-Hook:
#!/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
Das Problem ist, dass es auf einem m1.small etwa 10 Minuten gedauert hat, alles von CPAN zu holen und zu erstellen. Das ist zu lange, vor allem, wenn ich jedes Mal, wenn ich Alice ausführen möchte, für 10 Minuten Rechenzeit bezahlen muss! Ich dachte mir also, wenn ich die CPAN-Module, die bereits als Pakete vorhanden sind, installieren und zur apt-get-Zeile hinzufügen könnte, würde das eine Menge Zeit sparen.
Bei der Verwendung von Alice erhielt ich sofort die Fehlermeldung, dass SSL erforderlich sei, daher fügte ich das libnet-ssleay-perl
Paket in die richtige Zeile ein.
Mein Problem besteht darin, dass ich die Installation nicht ausführen und manuell ermitteln möchte, welche Module benötigt werden, im Archiv danach suchen und sie dann hinzufügen möchte.
Gibt es ein Tool oder eine Methode, mit der ich herausfinden kann, welche gepackten Module Alice benötigt, sodass ich diese aus dem Archiv installieren kann, oder muss ich nach jedem einzelnen suchen?
Antwort1
Ich habe in Makefile.PL nachgesehen und Folgendes gefunden:
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';
Dadurch konnte ich nach jedem einzelnen Paket suchen. Ich konnte nie einen Weg finden, die Abhängigkeiten programmgesteuert herauszufinden, also habe ich jedes Paket manuell gesucht.