すぎゃーんメモ Twitter

2012-11-08

perlbrewを利用したプロジェクトごとのPerl環境管理

整理するためのメモ。

手順

既にperlbrew自体は標準の方法でインストールしておいていて使えてる、という前提で

$ cd <PROJECT_ROOT>
$ export PERLBREW_ROOT=${PWD}/perl5
$ perlbrew init
$ source ${PERLBREW_ROOT}/etc/bashrc
$ perlbrew install 5.16.2

みたいなかんじでプロジェクトディレクトリ内にPERLBREW_ROOT環境変数をセットした状態でインストール。するとそこ以下を作業ディレクトリとしてインストールしてくれる。

その後、実際に使うperlswitchしたいところだけど、普通にperlbrew switchをすると、$HOME/.perlbrew/initに諸々の環境変数情報が書き込まれることになり、下手すると普段使っているperlbrew用の環境を壊してしまう。PERLBREW_HOME環境変数をセットしておけばそこ以下にinitファイルを作って使うようにしてくれるので、セットしておく。

$ export PERLBREW_HOME=${PWD}/perl5
$ perlbrew switch 5.16.2

これで、あとは<PROJECT_ROOT>/bin/env.sh

#!/bin/sh

# require perlbrew
if ! which perlbrew; then
    source ${HOME}/perlbrew/etc/bashrc
fi

# set environment for PROJECT_ROOT
PROJECT_ROOT=$(dirname $(dirname $0))
PERLBREW_ROOT=${PROJECT_ROOT}/perl5
PERLBREW_HOME=${PROJECT_ROOT}/perl5

# use switched perl
source ${PERLBREW_ROOT}/etc/bashrc

exec "$@"

といったシェルスクリプトを用意しておいて、perl絡みのコマンドを常にこれを経由して使うようにすれば、プロジェクト内で完結する環境で動かすことができる。

$ perlbrew list
  perl-5.10.1
  perl-5.12.4
* perl-5.14.2
  perl-5.16.0
  perl-5.16.1
  perl-5.16.2
  perl-5.17.3
  perl-5.8.9
$ which perl
<HOME>/perl5/perlbrew/perls/perl-5.14.2/bin/perl

$ cd <PROJECT_ROOT>
$ ./bin/env.sh perlbrew list
* perl-5.16.2
$ ./bin/env.sh which perl
<PROJECT_ROOT>/perl5/perls/perl-5.16.2/bin/perl

$ curl -L cpanmin.us | ./bin/env.sh perl - App::cpanminus
$ ./bin/env.sh which cpanm
<PROJECT_ROOT>/perl5/perls/perl-5.16.2/bin/cpanm
$ ./bin/env.sh cpanm --installdeps .
$ ./bin/env.sh plackup

開発時にはProcfileに、デプロイ用にはdaemontoolsのrunスクリプトにenv.sh経由で立ち上げるように書いておいて、そこ経由でしか立ち上げないようにしておけばミスも少なくなる気がする。


参照

perlbrewを使うにあたっていろいろな小細工をした件 - (ひ)メモ

http://yappo.github.com/talks/20121019-yokohamapm9-amon2/index.html#/step-3

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


画像認証

トラックバック - http://d.hatena.ne.jp/sugyan/20121108/1352355155
リンク元