perlbrew+cpanmでPerl環境を丸ごとホームに置く
カジュアルPerl#2でmiyagawaさんが話してた
cpanm+perlbrewな環境をしばらく使ってみてめも
http://yusukebe.com/archives/10/04/21/075545.html
導入方法は色々なところに書かれてるので簡単に
cd ~#ホームじゃなくてもインストールしたいディレクトリで wget http://xrl.us/perlbrew chmod 744 perlbrew ./perlbrew install $HOME/perl5/perlbrew/bin/perlbrew init #指示に従って起動スクリプトにsourceを追加する.bashの場合は echo "source $HOME/perl5/perlbrew/etc/bashrc" >> ~/.bashrc . .bashrc #インストール終わったら落としたスクリプトはいらない rm perlbrew which perlbrew #=>$HOME/perl5perlbrew/bin/perlbrew perlbrew install perl-5.12.0 #かなり時間かかる perlbrew switch perl-5.12.0 perl -v perlbrew installed #入ってるperl一覧表示*が付いてるのが今使ってるperl
#!/usr/bin/env perl
次に今使ってるperlにcpanmをインストールする
これが結構すごくて、perlのバージョン毎に違うcpanmを持てる
#perl cpanm --self-upgradeと同じ意味(5/23追記: 下のようにするとperlと同じディレクトリにcpanmが入るっぽい) curl -L http://cpanmin.us | perl - --self-upgrade cpanm -v
色々な方法でインストール出来るけど↓みたいな感じでインストール
cpanm --interactive YAML::Tiny
オプションで--interactiveつけないと全部デフォルトでインストールされるみたいだけどなんか怖いので--interactive付けて対話的に設定する方が安心かな
こんな感じでとっても便利なperlbrewなんだけど使ってるとcronとcgiでちょっと詰まった.基本的にはログインしてない時にperlを実行する時にはどうするか?って問題
cronでperlを使う
この状態でcronでperlスクリプトを動かすと、perlbrewでswitchしたperlを使ってくれない。cronで実行する時は環境変数が違うから当たり前か.crontabに以下のようにPATHを追加して解決
PATH=/home/ユーザー名/perl5/perlbrew/bin:/usr/bin:/usr/sbin:/bin:sbin
crontabはなぜか変数展開をしてくれないので PATH=$HOME/perl5/perlbrew/bin:$PATHみたいなことは出来ないので注意