Perlの環境構築
こなれてきたので、Perlの環境構築についてまとめる。出尽くされてる感は半端ないけど。
導入するツール
- perlbrew
- cpanm(App::cpanminus)
- Carton
perlbrew
perlbrewはユーザー領域に複数のPerlのバージョンをインストールして使えるツール。Rubyのrvm相当。
インストール
公式ドキュメントに書いてある手順で簡単に導入できる。
$ curl -kL http://install.perlbrew.pl | bash
これでインストール終わり。
設定
次はperlbrewの設定。でも最初から付いてくる。
$ echo source ~/perl5/perlbrew/etc/bashrc >> ~/.bash_profile
インストールした際のログに書いてあるが、perlbrew用のbashrcが添付されてるので、それを読み込む設定を.bash_profile
などに追記するようにするだけ。
$ which perlbrew /home/taiju/perl5/perlbrew/bin/perlbrew
which
コマンドで、ちゃんとパスなど通してくれてることが確認できる。
(ターミナルを一度も閉じていないと、.bash_profile
の設定が反映されていないので、source ~/.bash_profile
をあらかじめ実行しておくこと)
使い方
perldoc形式でヘルプが用意されている。
$ perlbrew -h
perlbrewでperlをインストールする
perlbrewでユーザー領域にperlをインストールする。
$ perlbrew install perl-5.14.2
しばらくすると、インストールが完了する。
perlbrewでインストールしたperlを利用するようにする
perlbrewでインストールしたperlを、そのユーザーで利用するようにする。
$ perlbrew switch perl-5.14.2
また、perlbrewでインストールしたperlはlistコマンドで確認できる。
$ perlbrew list
いつでも好きなタイミングで、好きなバージョンに切り替えできる。
cpanm(App::cpanminus)
より良いCPANシェル。CPANシェルはこれで完全に置き換えが可能。
インストール
次は、cpanmを導入する。perlbrewにインストールコマンドがある。
$ perlbrew install-cpanm
これでインストール終わり。
追記(2012/08/29)
Cartonとcpanmを組み合わせる際、この方法でcpanmをインストールするとあんまりよろしくないようです。
carton と古い cpanm をくみあわせたら悲しい話 - tokuhirom's blog.
cpanmはperlbrewに同梱されたインストーラを使うのではなく、通常通りインストールした方が良さそうです。以下のリンク先の「Installing to local perl (perlbrew)」という項を参考にしてください。
使い方
$ cpanm -h
Carton
CPANモジュールの依存関係管理ツール。RubyのBundler相当。今後もよく使いそうなコマンドがインストールされるCPANモジュールなどはcpanmを利用して、インストールして、それ以外は、プロジェクトごとにCartonでインストールするのが良さそう。
インストール
cpanmでインストールする。
$ cpanm Carton
これでインストール終わり。
cartonの使い方
プロジェクトのディレクトリを作ったら、まず、Makefile.PLにプロジェクトに必要なCPANモジュールを列挙する。cartonのhelpはModule::Installで書かれているし、最近はExtUtils::MakeMakerより採用例をよく見かけるので、Module::Installも導入しておいた方が良さそう。
$ cpanm Module::Install
では、本題に戻って、Makefile.PL。cartonのドキュメントの例を掲載する。
use inc::Module::Install; name 'MyAwesomeApp'; requires 'Plack', 0.9980; requires 'Starman', 0.2000; WriteAll;
そのプロジェクトのMakefile.PLを書いたら、依存モジュールをプロジェクトで使えるようにcartonでモジュールをインストールする。
$ carton install
プロジェクト内のフォルダに、localというディレクトリが作られ、cpanmでモジュールがインストールされている。
まとめ
一昔前は、自分にとっては環境構築が本当に難しかったんだけど、今はツールも揃っていて、導入も簡単だし、Perl楽しい。