はじめに
perl環境はperlbrewで作っていましたが、plenv良さそうってことでplenvってみるメモ。
このメモのゴールは特定のディレクトリに特定のperlバージョンを入れて
ついでにcpanモジュールも入れてみるまでです。
アジェンダ
1. homebrewインストール
当然ですがhomebrewでインストールするので、homebrewが入っている前提です。
homebrewについては別途単体で書いてますのでそちらを参考に、、、ということで割愛します。
→Mac OS XにHomebrewインストール。command line developer tools入れたり使い方メモったり(install、update、upgradeなど)
2. plenvとperl-buildのインストール
ここからが本題ですね。
plenvのインストール
※ お決まりのupdate $ brew update ※ インストール $ brew install plenv
補足
後述するperl-build
も合わせてインストールしないと動きません。
ためしにこの状態でplenv install -l
(利用可能なバージョンを表示)をやってみると
こんな感じになります。
$ plenv install -l plenv: Please install perl-build. See https://github.com/tokuhirom/plenv/blob/master/README.md#installation
perl-buildのインストール
$ brew install perl-build
補足)perl-buildとはなんぞや
Perlのインストールを実行するやつ。
こいつを入れることでplenvからperl-buildが使えるようになり
'plenv install'でPerlをインストールすることができるようになる。
参考:続・plenvを使ってみた
設定
シェルの起動時に'plenv init'コマンドを実行するように
~/.bash_profile
あたりに設定を追記します。
$ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(plenv init -)"' >> ~/.bash_profile
3. 使ってみる
perlインストール前に確認
※ plenvのバージョン確認 $ plenv --version plenv 2.1.0 ※ インストール済みのperlバージョン一覧確認 $ plenv versions * system (set by /Users/hoge/.plenv/version) ※ 現在使用しているperlバージョンを確認 $ plenv version system (set by /Users/hoge/.plenv/version) ※ ~/.plenvディレクトリ内を確認 $ tree ~/.plenv -d -L 2 /Users/hoge/.plenv └── shims ※ システムperlのバージョン確認 ※ システムパールのバージョンなのでインストール後にも変わらないはず $ perl -v This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail) ※ 利用可能なバージョンを表示 $ plenv install -l Available versions: 5.6.0 5.6.1-TRIAL1 5.6.1-TRIAL2 5.6.1-TRIAL3 ・・・省略・・・ 5.7.0 5.7.1 5.21.10 5.21.11
perlインストール
perlのインストールなので時間かかりますが3分ほどでした。
$ plenv install 5.21.1 ※ global設定(詳細は後述) $ plenv global 5.21.1
perlインストール後に確認
※ インストール済みのperlバージョン一覧確認 $ plenv versions system * 5.21.1 (set by /Users/hoge/.plenv/version) ※ 現在使用しているperlバージョンを確認 $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version) ※ ~/.plenvディレクトリ内を確認 $ tree ~/.plenv -d -L 2 /Users/hoge/.plenv ├── build │ └── perl-5.21.1 ├── cache ├── shims └── versions └── 5.21.1 ※ システムperlのバージョンは変化しない ※ → 実際はsource ~/.bash_profileすると変わります $ perl -v This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail)
4. plenvのバージョン切り替え挙動について
これは参考サイトのまんま引用させて頂きますが
plenvは以下の順番で使用するperlバージョンを決定するらしいです。
今の時点でplenv version
と打った際に5.21.1
と表示されているのは
3番目のグローバル設定によるものです。
plenv version
が5.21.1
となる挙動を確認
これを確認するために1〜4を順番に確認します。
version番号の後ろのset by〜
の記載でわかりますが目で確認したいので念のため。
※ plenv versionを確認 $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version) ※ 1. 環境変数'PLENV_VERSION'の確認 ※ → まだ設定してないのでカラ $ echo $PLENV_VERSION ※ 今のディレクトリか, 上位ディレクトリのローカル設定('.perl-version')の確認 ※ → これも設定してないので無い $ ls -l ~/.perl-ver* ls: /Users/hoge/.perl-ver*: No such file or directory $ ls -l ../.perl-ver* ls: ../.perl-ver*: No such file or directory ※ 3. グローバル設定('~/.plenv/version')の確認 $ cat ~/.plenv/version 5.21.1 ※ 4. システムのperlの確認 $ perl -v This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail)
PLENV_VERSIONの変更
環境変数PLENV_VERSIONを変更する方法は下記2つ。
- export PLENV_VERSION=[バージョン番号]
- plenv shell [バージョン番号]
PLENV_VERSIONを変更して確認してみる
と、その前に挙動の確認のために5.18.0
もインストールしておきます。
$ plenv install 5.18.0
んで、確認
※ インストール済みのperlバージョン一覧確認 $ plenv versions system 5.18.0 * 5.21.1 (set by /Users/hoge/.plenv/version) ※ 現在使用しているperlバージョンを確認 $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version) ※ PLENV_VERSIONの変更 $ plenv shell 5.18.0 ※ plenv versionを見ると変更されてる $ plenv version 5.18.0 (set by PLENV_VERSION environment variable) ※ 設定を無効にする $ plenv shell --unset ※ plenv versionを見るとglobal設定に戻っている $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version)
補足)plenv shell バージョン番号でplenv: no such command
と言われたら
plenv shell バージョン番号でplenv: no such command
と言われたら、
設定がまだ反映されてない可能性があります。
下記コマンドで設定を反映させてください。
※ ダメなとき $ plenv shell 5.18.0 plenv: no such command `shell' $ source ~/.bash_profile ※ OKなときは何も言われない $ plenv shell 5.18.0
ローカル設定の変更
これも参考サイトまんまですが、plenv local [バージョン番号]
で
ディレクトリごとに設定ができるので変更して確認してみます。
※ インストール済みのperlバージョン一覧確認 $ plenv versions system 5.18.0 * 5.21.1 (set by /Users/hoge/.plenv/version) ※ 現在使用しているperlバージョンを確認 $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version) ※ ローカル設定の変更 $ plenv local 5.18.0 ※ plenv versionを見ると変更されてる $ plenv version 5.18.0 (set by /Users/hoge/.perl-version) ※ 設定を無効にする $ plenv local --unset ※ plenv versionを見るとglobal設定に戻っている $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version)
5. cpanmインストールしてみる
これで最後ですがcpanmをいれてみます
※ インストール済みのperlバージョン一覧確認 $ plenv versions system 5.18.0 * 5.21.1 (set by /Users/hoge/.plenv/version) ※ ローカル設定を5.18.0に変えてからインストールしてみる $ plenv local 5.18.0 $ plenv version 5.18.0 (set by /Users/hoge/.perl-version) $ plenv install-cpanm ※ インストールしたのでcpanのバージョン確認 $ cpanm -v cpanm (App::cpanminus) 1.7033 on perl 5.018000 built for darwin-2level Work directory is /Users/hoge/.cpanm/work/1430846400.68261 ※ ローカル設定を消してからcpanm -vしてみる ※ 5.21.1では入れてないので怒られる $ plenv local --unset $ plenv version 5.21.1 (set by /Users/hoge/.plenv/version) $ cpanm -v plenv: cpanm: command not found The `cpanm' command exists in these Perl versions: 5.18.0
moduleを確認
補足的になっちゃいましたが、moduleの確認です。
$ plenv list-modules Acme::FizzBuzz App::cpanminus Perl
6. carton使ってみる
この6はあとから追加したものですが一連でやったほうが楽なので載せておきます。
と、いうもののcartonだけ別記事に出したのでその参照だけ。
→ 【perl】Perl module 依存マネージャーcartonをmac × plenv × cpanm環境で使うメモ
参考サイト
まとめ
plenvを使ってみました。
バージョンの切り替えも簡単だしディレクトリごとに設定できるのはすばらしい!