[perl] 続・初めてのPerl 第16章 「ディストリビューションの書き方」
練習問題の回答をメモ。
今回は、ディストリビューションの作成手順なので、順を追って書いていく。12章の AnimalクラスとHorseクラスのディストリビューションの作成方法はほぼ同じなので、以降は Animalクラスについてのみ手順を書くことにする。
まずは、h2xs で雛形を作る。
% h2xs -XAn Animal Defaulting to backwards compatibility with perl 5.8.8 If you intend this module to be compatible with earlier perl versions, please specify a minimum perl version with the -b option. Writing Animal/lib/Animal.pm Writing Animal/Makefile.PL Writing Animal/README Writing Animal/t/Animal.t Writing Animal/Changes Writing Animal/MANIFEST
次に、Animal.pm を12章の練習問題どおりに編集して、Makefile を作成する。インストール場所は、ホームディレクトリ以下の Testingディレクトリにすることに注意。
% perl Makefile.PL PREFIX=~/Testing Checking if your kit is complete... Looks good Writing Makefile for Animal
試しに、make test してから、インストールしてみる。
% sudo make test cp lib/Animal.pm blib/lib/Animal.pm Skip blib/lib/ex12-1.pl (unchanged) PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/Animal......ok All tests successful. Files=1, Tests=1, 0 wallclock secs ( 0.04 usr 0.02 sys + 0.11 cusr 0.07 csys = 0.24 CPU) Result: PASS % make install Manifying blib/man3/Animal.3pm Installing /home/sato/Testing/lib/perl5/site_perl/5.8.8/Animal.pm Installing /home/sato/Testing/share/man/man3/Animal.3pm Writing /home/sato/Testing/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Animal/.packlist Appending installation info to /home/sato/Testing/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
これで、PREFIX に指定したディレクトリにインストールできることが確認できたので、配布用のディストリビューション(.tar.gzファイル)を作る。
% make dist rm -rf Animal-0.01 /usr/bin/perl "-MExtUtils::Manifest=manicopy,maniread" \ -e "manicopy(maniread(),'Animal-0.01', 'best');" mkdir Animal-0.01 mkdir Animal-0.01/lib mkdir Animal-0.01/t Generating META.yml tar cvf Animal-0.01.tar Animal-0.01 Animal-0.01/ Animal-0.01/Makefile.PL Animal-0.01/t/ Animal-0.01/t/Animal.t Animal-0.01/MANIFEST Animal-0.01/README Animal-0.01/Changes Animal-0.01/lib/ Animal-0.01/lib/Animal.pm Animal-0.01/META.yml rm -rf Animal-0.01 gzip --best Animal-0.01.tar Warning: Makefile possibly out of date with lib/Animal.pm
なんか警告でてるけど、支障がなさそうなのでここでは気にしないことにする。後は、他の環境に移してインストールするだけ。Cygwin とかで試しても良さそうだけど、めんどくさいのでやめとく。
反省点
マニュアルは大事だよ。雛形ファイル(.pmファイル)の埋め込みドキュメントはしっかり書こう。