Hatena::ブログ(Diary)

”><xmp>TokuLog 改メ tokuhirom’s blog このページをアンテナに追加 RSSフィード

モダンPerl の開発環境の構築方法

一般的な OSX 環境および Linux 環境における、モダンPerl 開発環境の構築方法についてまとめてみたよ。

下準備

perlbrewインストール

perlbrew をつかうことにより、簡単に最新版の Perl5 を利用することができるようになる。

% curl -L http://xrl.us/perlbrew | perl - install
% ~/perl5/perlbrew/bin/perlbrew init
% 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管理debrpm を利用していると、バージョンアップ開発者がやりづらくなるし、依存管理等が面倒なのでオススメしません。

ithreads をつかいたい場合

perl5 はデフォルトオプションビルドすると、ithreads は無効となるので、ビルド時に

perlbrew install perl-5.12.1 -D=useithreads

のようにする必要がある。

使用する Perl5 バージョンの選定

メジャーバージョンアップ直後のバージョン、つまり 5.10.0 や 5.12.0 は、バグがとりきれていない場合があるのでさけた方が賢明である。

私の2010年7月時点でのオススメバージョンは 5.12.1 である。5.8.x は非常に安定しているが、// 演算子がつかえないのが難点。

laclefdorlaclefdor 2010/07/17 12:32 >cpan module の管理に deb や rpm を利用している
>と、バージョンアップを開発者がやりづらくなるし、
>依存の管理等が面倒なのでオススメしません。

おっしゃる通りですが、大企業だとrpm等のパッケージマネージャーでPerlモジュールを管理するのが常識です。もちろん構成管理システム絡みで。

そうしないと品質保証が出来ない。極論で言えば、「俺の環境でたまたま動いたコード」ということになってしまいます。

tokuhiromtokuhirom 2010/07/19 08:06 > おっしゃる通りですが、大企業だとrpm等のパッケージマネージャーでPerlモジュールを管理するのが常識です。もちろん構成管理システム絡みで。
大企業だと常識というのは、何社かのお話をきかれた感想でしょうか?実は御社だけのルールだったりしませんか?

バージョンをあわせること自体はあたりまえにやるのですが、そのあたりのノウハウについては、また後日まとめる予定です :)

mstshimomstshimo 2010/08/21 16:35 私の環境では、以下の部分がエラーになりました。
$curl -LO http://cpanmin.us/
curl: Remote file name has no length!
curl: try 'curl --help' for more information

次ですと、うまく出来ました。
$curl -LO http://xrl.us/cpanm

記事を参考に、perlbrewとcpanmをインストールすることが出来ました。ありがとうございました。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証