2012-03-05 14 views
12

Napisałem kilka bibliotek Perla (.pm) i Perlscripts (.pl) na Ubuntu i muszę je rozesłać do moich kolegów w moim biurze. Te skrypty i biblioteki wymagają bibliotek stron trzecich. Chcę, aby było to bardzo proste.Czy istnieje najprostszy sposób budowania pakietu perla?

Informacje o mnie.

  • Wiem, jak utworzyć skrypt Perla.
  • Wiem, jak utworzyć plik Bash.
  • mam żadnego doświadczenia w tworzeniu MAKE plików rpm, Deb itp
+0

Jeśli wszyscy twoi koledzy mają Ubuntu (najlepiej tę samą wersję) i jest ich wystarczająco dużo, warto się nauczyć budować pakiet '* .deb'. –

+0

@BasileStarynkevitch, Nie chcę, aby było to konkretne. Są to użytkownicy Linuksa lub Mac'a: –

+0

Czy czytasz [Module :: Build] (http://search.cpan.org/dist/Module-Build/lib/Module/Build.pm)? – Konerak

Odpowiedz

15

polecam korzystania Module::Starter skonfigurować szablon dla każdego modułu. Raz zainstalowany, można zadzwonić module-starter z linii poleceń, np:

module-starter --module=My::Module --author="Jessada Thutkawkorapin" [email protected] 

lub, jeśli chcesz dystrybucji z wielu modułów:

module-starter --distro=Foo --module=Foo,Foo::Bar,Foo::Baz --author="Jessada Thutkawkorapin" [email protected] 

Potem tylko nadpisać .pm plikami z modułów , dołącz wszystkie testy jednostkowe, które chcesz uruchomić (domyślne testy sprawdzają zasadniczo składnię modułu wraz ze składnią strąk). Podstawowa instalacja modułów jest następnie wykonywane poprzez

perl Makefile.PL 
make 
make test 
make install 

(technicznie, make test jest opcjonalne, ale jest wysoce zalecane).

Teraz, gdy moduły te opierają się na innych modułów CPAN, a następnie można użyć modułu CPAN je zainstalować, np:

use strict; 
use warnings; 
use CPAN; 

#populate however you'd like, either hard-coded, read from a file, etc. 
my @modules_to_install=(); 

foreach(@modules_to_install) 
{ 
    CPAN::Shell->install($_); 
} 

Tak, można rozpowszechniać pocztowy/archiwum/etc z folderów i pliki, które module-starter rozpoczęły (i zostały zmodyfikowane) wraz z powyższym skryptem, aby zainstalować wszelkie zależności CPAN i nazwać je, powiedzmy, cpan_install.pl. Jeśli chcesz, możesz zawinąć wszystko w ostateczny skrypt o nazwie, powiedzmy, install.pl, który wykonuje wszystkie te rzeczy.

+0

Moim głównym problemem tutaj jest to, w jaki sposób i gdzie mogę określić położenie mojego skryptu? Wszystkie moje skrypty są pod /bin i moje .pm są pod /bin/lib –

+2

Cóż, dla każdego modułu (i dla dystrybucji, jeśli używasz opcji '--distro'),' module-starter' zawiera ' katalogi lib' i 't' wraz z innymi standardami, które możesz ignorować. Po zainstalowaniu modułów (za pomocą 'perl Makefile.PL; make; make test; make install'), są one instalowane w podkatalogu' site_perl' dowolnej dystrybucji Perla, z której korzystasz. –

+8

Downvote za [wywołanie CPAN samemu w celu zainstalowania brakujących modułów] (http://stackoverflow.com/q/8183293). Zamiast tego deklaruj zależności za pomocą ['PREREQ_PM'] (https://metacpan.org/module/ExtUtils::MakeMaker#PREREQ_PM), aby znaleźć się w pliku meta distro, zobacz także przykłady na http://stackoverflow.com/ a/7664993 i http://stackoverflow.com/a/2606677. – daxim

2

Moja zwykła metoda polega obecnie na kopiowaniu pliku Build.PL z jednej z moich istniejących dystrybucji i kontynuowaniu. Oczywiście nie jest to przydatna strategia dla pierwszego, ale CPAN jest pełen tysięcy takich plików.

Dla prostej dystrybucji pojedynczego .pm pliku najprawdopodobniej najłatwiej jest zacząć od skopiowania cudzego pliku Build.PL i edytować odpowiednie pola dla swojej sprawy. Prawdopodobnie wszystko, co powinieneś zmienić, to pola module_name i requires.

Oto prosty jeden z kopalni można ukraść^W być inspirowane przez:

use strict; 
use warnings; 

use Module::Build; 

my $build = Module::Build->new(
    module_name => 'Your::Name::Here', 
    requires => { 
     'Your::Requirements::Here' => '1.23', 
    }, 
    build_requires => { 
     'Test::More' => 0, 
    }, 
    license => 'perl', 
    create_makefile_pl => 'traditional', 
    create_license => 1, 
    create_readme => 1, 
); 

$build->create_build_script; 

Te pola, w kolejności, myśli:

  • Nazwa głównego modułu w dystrybucji - stąd bierze się nazwę samego rozkładu, a także jego wersję i streszczenie podsumowania:
  • Inne moduły, których dystrybucja będzie zależała od zbudowania lub uruchomienia
  • Inne moduły że podział ten będzie uzależnione od budować, ale nie będą potrzebne po jej zainstalowaniu (zwykle będzie to Test:: moduły lub inne narzędzia kompilacji)
  • Warunki licencyjne stosowane do dystrybucji
  • Załóż dziedzictwo Makefile.PL dla starszych klientów CPAN że nie rozumie protokół Build.PL
  • utworzyć plik LICENSE automatycznie od deklarowanych warunków licencji powyżej
  • Utwórz plik README automatycznie obracając dokumentację pOD główny moduł jest w postaci zwykłego tekstu
Powiązane problemy