モダンな Perl の開発環境の構築方法
一般的な OSX 環境および Linux 環境における、モダンな Perl 開発環境の構築方法についてまとめてみたよ。
下準備
- コンパイラなどをまずインストール。OSX なら Xcode、debian なら apt-get build-dep perl する。
perlbrew のインストール
perlbrew をつかうことにより、簡単に最新版の Perl5 を利用することができるようになる。
- perlbrew をいれる。
% curl -L http://xrl.us/perlbrew | perl - install % ~/perl5/perlbrew/bin/perlbrew init
- ~/.bashrc (または ~/.zshrc)に source ~/perl5/perlbrew/etc/bashrc を追記。
- あたらしいシェルをたちあげる。
- 最新版の perl をインストールする。
% perlbrew install perl-5.12.1 % perlbrew switch perl-5.12.1
ここまできたら、shell いったんぬけてはいりなおす。
以後、ライブラリなどは、~/perl5/perlbrew/perls/perl-X.XX/lib/ 以下にはいる。
cpanm をいれる
CPAN モジュールのインストールには cpanm コマンドがおすすめ。高速だしメモリ使用量がすくないので、初心者はだまって cpanm コマンドをつかうのがよい。
% curl -L http://cpanmin.us/ | perl - App::cpanminus
で、cpanm コマンドのインストールは完了する。
あとは適宜
% cpanm Mouse
などとして、必要なモジュールをインストール可能。この際、モジュールは ~/perl5/perlbrew/perls/perl-X.XX/ 以下にはいる。root 権限は必要ない。
cpanm --installdeps .
アプリケーションのディレクトリ(つまり、Makefile.PL があるディレクトリ)で、
% cpanm --installdeps .
とすると、そのモジュールの依存モジュール(つまり requires に指定しているもの)をすべてインストールしてくれる。
local::lib をインストールする
% cpanm local::lib
local::lib をあらかじめインストールしておくと、なにかと便利なので、インストールしておくとよい。
deploy の手法
とくに理由がなく、配布先と配布元のアーキテクチャが同じであれば、~/perl5/ 以下をそのまま rsync すればよい。
perlbrew のインストールパスの変更
~/perl5/ というパスがきもちわるいという場合には、最初の時点で
export PERLBREW_ROOT=/usr/local/perlbrew/
などとしておけば、perlbrew のインストール先ディレクトリをかえることができる。
複数アプリケーションを開発していて、それぞれの依存モジュールがそれぞれことなる場合の運用
perl interpreter 自体をわけるか、local::lib を利用する。
cpanm では、以下のようにすると、アプリケーションの依存モジュールをすべて ./extlib/ 以下にインストールしてくれる。あとはこのディレクトリを rsync すればいいというワケ。
% cpanm -l ./extlib/ --installdeps .
アプリケーションのスクリプト側では、以下のように記述すればよい。
use local::lib './extlib/';
ただし、local::lib は標準添付モジュールではないので、これだけはあらかじめ perl 本体のライブラリディレクトリにインストールしておくこと。
deb, rpm などじゃなくていいの?
cpan module の管理に deb や rpm を利用していると、バージョンアップを開発者がやりづらくなるし、依存の管理等が面倒なのでオススメしません。
ithreads をつかいたい場合
perl5 はデフォルトオプションでビルドすると、ithreads は無効となるので、ビルド時に
perlbrew install perl-5.12.1 -D=useithreads
のようにする必要がある。
- ithreads を有効にすると 10% 程度パフォーマンスが劣化するので必要なければオフのままがよい
- 一般的なOSディストリビューションでは、useithreads がオンになったものが提供されている
使用する Perl5 バージョンの選定
メジャーバージョンアップ直後のバージョン、つまり 5.10.0 や 5.12.0 は、バグがとりきれていない場合があるのでさけた方が賢明である。
私の2010年7月時点でのオススメバージョンは 5.12.1 である。5.8.x は非常に安定しているが、// 演算子がつかえないのが難点。