音楽とお酒とものづくりと

営業マンが元webエンジニアの経験を生かしてあれやこれやするやつ

macにanyenvを導入してみた

anyenvとは?

perlrubypythonなどのバージョンを管理するplenvやrbenv、pyenvなどを一括で管理してくれます。これらを別々に管理していた場合、それぞれのパスの設定を行う必要があり.bash_profileが煩雑になります。それがanyenvで一元化して管理しているとanyenvへのパスだけ通してやればよいっぽいです。どうせ複数のenvで管理することになるなら、anyenvを使って一元化管理しようということで。情報の一元化はいろんな手間軽減につながりますからね。

既にインストールしていたenv系のアンインストール

すでにhomebrewを使ってインストールしているものがありました。これとanyenvでインストールしたものとが複数存在すると後々ややこしそう(実際この前ややこしかった)なので、アンインストールしておきます。なおbrewでインストールしたenvではほとんど管理しているものがなかったので、移植作業等は一切行わず、そのまま削除しました。既に結構システムのenvで色々管理している場合には注意が必要かも。

$ brew uninstall plenv
$ brew uninstall perl-build

同時に.plenvなどの設定ファイルも削除しておきました。

anyenvのインストール

いよいよanyenvの導入です。
githubからcloneしてきます。

$  git clone https://github.com/riywo/anyenv ~/.anyenv

.bash_profileに以下のパス設定を追加

$ echo ‘export PATH=“$HOME/.anyenv/bin:$PATH”’ >> ~/.bash_profile
$ echo ‘eval “$(anyenv init -)”’ >> .bash_profile

これでanyenvのインストールが完了しました。

各種インストール

plenvのインストール

$ anyenv install plenv

perlのインストール

plenv install 5.23.0

そもそもenvって何してくれんねん

システムにインストールされているperl等だと、アップデートした際に全てのプロダクトに影響が起こりえます(バージョンアップしたら動かんくなった!他のモジュールとの互換性がなくなった!など)。この時、プロダクトごとに使用するバージョンを固定し管理することで、こういった問題を防いでくれます。
研究で作っていたプロダクトは長期運用のつもりはなかった(こんなん言うたら教授に怒られそう)ので、特に気にせず使っていましたが、実際の開発現場では当たり前に使われています。調べれば似たような記事やもっと詳しい記事がたくさんありますが、備忘録のため、まとめておきます。

話を戻しましょう。
例えば、基本的にはこのバージョンを使いたい!というものは

$ plenv global 5.23.0

とするとOK。

逆にこのディレクトリ以下では5.21.0が使いたい!という時には、そのディレクトリで

$ plenv local 5.21.0

とすればOK。