読者です 読者をやめる 読者になる 読者になる

[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ファイル)の埋め込みドキュメントはしっかり書こう。