tokuhirom's Blog

モダンな 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 は非常に安定しているが、// 演算子がつかえないのが難点。