cpanmを使ってみる

cpanmがイイ!という話をいくつかの記事で目にしたので試してみたい。

cpanmをインストール

wget http://cpanmin.us/
chmod +x cpanm
perl cpanm -l ~/perl5 App::cpanminus

簡単すぎ!

設定

まずはCPANの設定が必要。これはcpanシェル起動して適当に答えておく。
次にcpanmで必要な環境変数の設定。とりあえず、以下を.bashrcに。

export PERL_CPANM_OPT="--local-lib=~/perl5"
export PERL5LIB="/home/kotaro/perl5/lib/perl5/i386-linux-thread-multi:/home/kotaro/perl5/lib/perl5"
export PATH="/home/kotaro/perl5/bin:$PATH"

.bashrcを反映する

source .bashrc

Let's Try

まずはself-upgrade、続いてDateTimeを。

cpanm --self-upgrade
cpanm DateTime

インストールパスを確認する

perl -MDateTime -le 'print $_ for values %INC'
(略)
/home/kotaro/perl5/lib/perl5/DateTime/TimeZone.pm
/home/kotaro/perl5/lib/perl5/i386-linux-thread-multi/Params/ValidateXS.pm
/home/kotaro/perl5/lib/perl5/i386-linux-thread-multi/DateTime.pm
(略)

ちゃんとローカルに入ってますねー

local::lib

直接cpanmと関係あるわけじゃないけど、localなlibを設定するのに使うと便利なモジュール。

こんな感じで設定すべき環境変数を教えてくれる。

perl -Mlocal::lib
export MODULEBUILDRC="/home/kotaro/perl5/.modulebuildrc"
export PERL_MM_OPT="INSTALL_BASE=/home/kotaro/perl5"
export PERL5LIB="/home/kotaro/perl5/lib/perl5/i386-linux-thread-multi:/home/kotaro/perl5/lib/perl5:$PERL5LIB"
export PATH="/home/kotaro/perl5/bin:$PATH"

@INCはどうなっているかというと...

perl -Mlocal::lib -le 'print join qq{\n}, @INC'
/home/kotaro/perl5/lib/perl5/i386-linux-thread-multi
/home/kotaro/perl5/lib/perl5
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8
.

モジュール探索パスの最初に/home/$USER/perl5が追加された。