2013-03-21 11 views
7

Io lavoro su un small open-source Perl project con Catalyst, Open Street Map e dozzine di moduli. Cerco di usare quanti più moduli si trovano sul CPAN come posso perché il mio obiettivo non è reinventare la ruota.Come gestire l'installazione dei moduli utilizzati da un progetto Perl open source?

Tutto questo materiale è stato installato tramite cpanm e local :: lib. Ogni volta che ho bisogno di qualcosa di nuovo, installo un paio di moduli e dipendenze (è così semplice con cpanm). Ora, mi sto chiedendo come le persone che cloneranno il mio progetto possano installare dozzine di moduli senza un orribile mal di testa della morte?

Quali sono le migliori pratiche per questo? Devo elencare tutti i moduli richiesti in Makefile.pl? Ora mi sento in ansia per questo perché ho lavorato duramente a questo progetto, ho cercato di seguire molte buone pratiche, ma sento di commettere un errore su questo particolare punto (per non pensare a questo).

Ho bisogno di qualche consiglio su questo problema perché tutto sembra così magico che non credo sia sufficiente elencare i nomi dei moduli nel Makefile con la parola chiave 'require'. Spero anche che non sia necessario includere tutte le dipendenze nel progetto e commettere tutto questo enorme pacchetto per usi futuri.

risposta

1

È necessario elencare solo (in Makefile.PL) quei moduli necessari direttamente (ad esempio, quelli che si use o require nei moduli). Non è necessario preoccuparsi dei moduli richiesti indirettamente (ad esempio, dai moduli che si utilizzano); questo è il lavoro dell'installatore.

Per ottenere un elenco dei moduli che si utilizzano, è possibile compilare l'elenco manualmente. Ma se ti capita di avere The Definitive Guide to Catalyst, c'è una pratica funzione di Bash a pagina 129, che non sono sicuro di poter riprodurre qui. C'è anche Perl::PrereqScanner::App, che non ho usato direttamente, ma che è usato da Dist :: Zilla.

FWIW, se si utilizza Dist::Zilla per gestire la distribuzione (cosa che faccio anche per i progetti privati ​​che non carico in CPAN), può (e per impostazione predefinita) tenere traccia delle dipendenze per l'utente.

+0

Grazie Than edward-baudrez per la tua risposta. Peccato non aver usato l'app Perl :: PrereqScanner :: ora mi sento come se avessi re-inventato la ruota con la peggiore. – smonff

4

Se si utilizza Catalyst, è possibile aggiungere i moduli necessari come dipendenze nel file Makefile.PL creato per l'applicazione Catalyst.

+1

Potrei essere utile sottolineare che l'OP deve solo elencare i moduli CPAN che compaiono nelle istruzioni 'use' nel suo codice. –

+0

@ SinanÜnür è un punto importante quando installi centinaia di moduli ma solo li "usi"! – smonff

1

Suggerirei di dare un'occhiata a carton (dallo stesso autore del fantastico Cpanm).

Sono un grande fan di Ruby bundler e la documentazione del cartone lo descrive come "Bundler per Perl". Ci ho provato un po 'e sembrava molto promettente.

Problemi correlati