あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

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)」という項を参考にしてください。

App::cpanminus - search.cpan.org

使い方
$ 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楽しい。