Perl モジュールを作成し配布パッケージ化する方法。
まず最初に モジュール名を決める。
シンプルなモジュールであれば、ExtUtils::MakeMaker ベースで作成するのが良い。
依存する CPAN モジュールが多い場合は Module::Install の利用も検討してみる。
方式 | 特徴 |
ExtUtils::MakeMaker 方式 | 標準 Perl ライブラリなので、いつでも利用できる。 |
Module::Build 方式 | ExtUtils::MakeMaker の代替。make ユーティリティが不要。ただし、Perl 5.8.8 時点で、CORE に含まれていない。 |
Module::Install 方式 | ExtUtils::MakeMaker あるいは Module::Build 上で動くモジュールインストーラ。簡便な記述や、インストール時の自動依存モジュールインストール機能などを提供する。必要なファイルは配布パッケージの inc ディレクトリにコピーされ同梱されるので、インストールする側はインストーラのために他のモジュールをインストールしておかなくてよい。 |
ディレクトリ構成を含めたスケルトンの作成は h2xs がメジャーどころ。 その他に
h2xs -AX --skip-exporter -n Foo::Bar
スケルトンに含まれる、Makefile.PL を必要に応じて編集する。 Module::Build ベースであれば、Build.PL を編集する。
Pure Perl なモジュールならば、最初はそれほどいじらなくても大丈夫なはず。
がんばる。
Perl モジュールファイルは基本的には 「パッケージ名.pm」というファイル名で。(パッケージ名のつけかた → Perl style guide)
テストファースト開発がお勧め (→ Perl テストスクリプトの書き方)。
perltidy を通す。
perl Makefile.PL make make manifest
Windows 環境であれば、事前に MANIFEST ファイルを削除しないと更新されないので注意。
作成された MANIFEST ファイルの中身を確認し、パッケージに含めたいファイルに過不足がないか確認する。
余分に入ってしまいがちなファイルには以下のようなものがある。
上記のファイルはビルドの過程で生成されるので、ソースパッケージには含めておく必要はない。
余分なファイルが含まれるようであれば、MANIFEST.SKIP に除外ルールを書く。
MANIFEST.SKIP ファイルには、パッケージに含めたくないファイル名にマッチする正規表現を1行に1つづつ記述する (perldoc ExtUtils::Manifest 参照)。
~$ ~blib/
Perl モジュールの中で依存している他の Perl モジュールがあれば、そのモジュールを Makefile.PL の PREREQ_PM 属性に追加する。
Module::Install を採用しているならば requires 等で指定する。
make distclean perl Makefile.PL make make disttest make dist
cvs update または svn update
perl Makefile.PL make distclean perl Makefile.PL make make test
Makefile.PL か $モジュール::VERSION で定義しているバージョン番号を更新。 README 等に書いてあればそれも更新。
Windows 上の場合は一旦 MANIFEST ファイルを削除する。UNIX 系ならそのなまの状態から。
make manifest
余分なファイルが MANIFEST に追加されていないか確認。 追加されていれば MANIFEST.SKIP を編集して make manifest しなおす。 OK ならば MANIFEST.SKIP をリポジトリへコミット。
Changes を更新してリポジトリへコミット。
あるいは ChangeLog、NEWS を更新してリポジトリへコミット。
cvs update または svn status
make distclean perl Makefile.PL make make disttest make dist
cp パッケジー名-x.yz.tar.gz /tmp cd /tmp tar zxvf パッケジー名-x.yz.tar.gz cd パッケジー名-x.yz perl Makefile.PL make make test
必要なら Windows など別のマシンでも。
それぞれのルールに従ってタグ打ち。 適切なログメッセージをつけるようにする。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。