plenv に乗り換えてみた
これまで perlbrewを使っていましたが、plenvに乗り換えてみました。
perlbrew と違いプロダクト(アプリケーション)毎に perl のバージョンを指定できたり、バージョン間のモジュール移行ができたりと便利そうです。
以前は perl で実装されていたようですが、shell で再実装されたそうです。
インストール
GitHub からインストールします。*1
$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv $ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(plenv init -)"' >> ~/.bashrc $ exec $SHELL -l
plenv で perl をインストールするのに実行する perl-build もインストールします。
$ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/
plenv のバージョン確認
$ plenv --version plenv 2.0.1-7-ge389af0
perl のインストール
インストール可能な perl の確認
$ plenv install --list Available versions: 5.6.0 ..... 5.18.0 5.19.0 5.19.1
perl のインストール
$ plenv install 5.18.0
インストール済み perl の確認
$ plenv versions * system (set by /Users/username/.plenv/version) 5.16.3 5.18.0
使用する perl バージョンの設定
グローバル設定
デフォルトで使用する perl バージョンを設定します。
$ plenv global 5.16.3 $ plenv global 5.16.3 $ plenv versions system * 5.16.3 (set by /Users/username/.plenv/version) 5.18.0 $ perl -version This is perl 5, version 16, subversion 3 (v5.16.3) built for darwin-2level ....
ローカル設定
カレントディレクトリに .perl-version が作成され、カレントディレクトリ以下ではローカル設定で指定した perl バージョンが優先されます。
$ plenv local 5.18.0
ローカル設定の確認
作業用ディレクトリを作成し、そのディレクトリでローカル設定を行います。
上位ディレクトリに移動し、グローバル設定なバージョンが有効になることを確認します。
$ mkdir -p test/hogehoge $ cd test/hogehoge $ plenv version 5.16.3 (set by /Users/username/.plenv/version) $ plenv local 5.18.0 $ plenv version 5.18.0 (set by /Users/username/test/hogehoge/.perl-version) $ perl -version This is perl 5, version 18, subversion 0 (v5.18.0) built for darwin-2level ..... $ cd .. $ plenv version 5.16.3 (set by /Users/username/.plenv/version) $ perl -version This is perl 5, version 16, subversion 3 (v5.16.3) built for darwin-2level .....
ちゃんとバージョンが切り替わりました。
便利。
cpanm のインストール
有効になっているバージョンの perl に cpanm をインストールします。
$ plenv install-cpanm
which オプションでコマンドのフルパスが確認できます。
$ which cpanm /Users/username/.plenv/shims/cpanm $ plenv which cpanm /Users/username/.plenv/versions/5.16.3/bin/cpanm
しばらく plenv を使ってみようと思います!!
*1:Homebrew でのインストールも可能