2013-03-21 7 views
7

Pracuję nad small open-source Perl project z Catalyst, Open Street Map i dziesiątkami modułów. Staram się używać tak wielu modułów, jak to tylko możliwe w CPAN, ponieważ moim celem nie jest ponowne wynalezienie koła.Jak zarządzać instalacją modułów wykorzystywanych w projekcie Perl open source?

Wszystkie te rzeczy zostały zainstalowane przez cpanm i local :: lib. Za każdym razem, gdy potrzebuję czegoś nowego, instaluję kilka modułów i zależności (jest to takie proste dzięki cpanm). Teraz zadaję sobie pytanie, jak ludzie, którzy sklonują mój projekt, mogli zainstalować tuziny modułów bez strasznego bólu głowy?

Jakie są najlepsze praktyki w tym zakresie? Mam wymieniać wszystkie wymagane moduły na Makefile.pl? Czuję teraz niepokój, ponieważ ciężko pracowałem nad tym projektem, starałem się postępować zgodnie z wieloma dobrymi praktykami, ale uważam, że popełniłem błąd w tym konkretnym momencie (aby o tym nie myśleć).

Potrzebuję porady na temat tego problemu, ponieważ wszystko wydaje się być tak magiczne, że nie uważam, że wystarczy wpisać nazwy modułów w pliku Makefile za pomocą słowa kluczowego "require". Mam również nadzieję, że nie będzie konieczne uwzględnianie wszystkich zależności w projekcie i zatwierdzanie całego tego ogromnego pakietu do późniejszych zastosowań.

Odpowiedz

1

Powinieneś tylko lista (w Makefile.PL) te moduły, które wymagają bezpośredniego (czyli te, które use lub require w modułach). Nie musisz się martwić modułami, które są wymagane pośrednio (tj. Przez moduły, których używasz); to jest zadanie instalatora.

Aby uzyskać listę modułów, których używasz, możesz oczywiście skompilować listę ręcznie. Ale jeśli masz Definitive Guide to Catalyst, jest przydatna funkcja Bash na stronie 129, której nie jestem pewien, czy mogę tu powielić. Istnieje również Perl::PrereqScanner::App, którego nie użyłem bezpośrednio, ale który jest używany przez Dist :: Zilla.

FWIW, jeśli używasz Dist::Zilla do zarządzania dystrybucją (co robię nawet dla prywatnych projektów, które nie przesyłam do CPAN), może (i domyślnie) śledzić zależności dla ciebie.

+0

Thanx @ edward-baudrez za odpowiedź. Szkoda, że ​​nie użyłem Perl :: PrereqScanner :: App, teraz czuję, że od nowa wymyśliłem koło z najgorszym. – smonff

4

Jeśli używasz Catalyst, możesz dodać potrzebne moduły jako zależności w Makefile.PL utworzonym dla aplikacji Catalyst.

+1

Mogę wskazać, że OP musi tylko wymienić moduły CPAN, które pojawiają się w instrukcjach 'use' w jego kodzie. –

+0

@ SinanÜnür to ​​ważny punkt podczas instalacji setek modułów, ale tylko "wykorzystaj" niektóre z nich! – smonff

1

Polecam, aby rzucić okiem na carton (od tego samego autora, co niesamowite cpanm).

Jestem wielkim fanem Ruby's bundler, a dokumentacja kartonu opisuje go jako "Bundler for Perl". Eksperymentowałem z nim jakiś czas temu i wyglądało to bardzo obiecująco.