anyenvを使って*env系をまとめて管理

2017.05.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも!西村祐二@大阪です。

プログラミング言語のバージョン管理にpyenvやrbenv、ndenvなどで管理している方は多いかと思います。
その際に今どのバージョンに設定しているのか、どのバージョンが入っているのか確認することがよくあります。
**env系をまとめて確認できる「anyenv」というものがなかなか便利だったのでご紹介したいと思います。

利点

個人的に思う「anyenv」の便利なところは次の3つかなと思います。

  • 現在のバージョンを何に設定しているか、どのバージョンを入ってるかまとめて確認できる
  • **env系を簡単にインストールできる
  • 新しいプログラミング言語を追加しても.bash_profileや.zprofileなど汚さなくてすむ

インストール

Githubのページに記載されている通りです。
.your_profileと記載されているところを bashを使っている人は .bash_profile、zshを使っている人は .zprofileなどへ
適時かえて実行すれば問題無いかと思います。
私はzshを使っているので下記は .zprofileで記載しております。

$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zprofile
$ echo 'eval "$(anyenv init -)"' >> ~/.zprofile
$ exec $SHELL -l

※もともと**envをインストールしていた人は、その箇所をコメントアウトするか削除しておいたほうが良いかもしれません。

anyenvの使い方

**env系インストール

コマンドから簡単にインストールできます。

$ anyenv install rbenv
$ anyenv install pyenv
$ anyenv install ndenv

**envから使いたいバージョンをインストール

いつものようにインストールできます。

$ ndenv install v7.10.0
$ pyenv install 3.6.0
$ rbenv install 2.4.1

現在(2017/05/09)インストールできる**env系

多くの**envに対応しています。

$ anyenv install -l
Available **envs:
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  luaenv
  ndenv
  nenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv

バージョン確認

$ anyenv versions
ndenv:
* v7.10.0 (set by /Users/yourname/.anyenv/envs/ndenv/version)
pyenv:
* system (set by /Users/yourname/.anyenv/envs/pyenv/version)
  3.6.0
rbenv:
* system (set by /Users/yourname/.anyenv/envs/rbenv/version)
  2.4.1

別の方法でいれたものや、デフォルトで入っているものが「system」として表示され現在のどれに設定されているか、どのバージョンが入っているかわかります。

env系の動作確認

anyenvでインストールした**env系も使い方は今までと同じです。

global指定でバージョンが切り替わるか確認(例:Node.js)

  • 現在のバージョン確認
$ node -v
v7.10.0
$ ndenv versions
* v7.10.0 (set by /Users/yourname/.anyenv/envs/ndenv/version)
  v7.9.0
  • v7.9.0へバージョン切り替え
$ ndenv global v7.9.0
$ ndenv versions
  v7.10.0
* v7.9.0 (set by /Users/yourname/.anyenv/envs/ndenv/version)
$ node -v
v7.9.0

問題なく切り替わりました。

local指定でバージョンが切り替わるか確認(例:Node.js)

  • 現在のバージョン確認
$ node -v
v7.9.0
  • あるディレクトリ内ではv7.10.0を利用するようにする
$ mkdir nodejs7.10
$ cd nodejs7.10
$ ndenv local v7.10.0
  • 確認
$ node -v
v7.10.0
$ ndenv versions
* v7.10.0 (set by /Users/yourname/work/chversion/nodejs7.10/.node-version)
  v7.9.0

問題なく、特定のディレクトリ内でバージョンが切り替わっています。

$ cd ..
$ node -v
v7.9.0
$ ndenv versions
ndenv:
  v7.10.0
* v7.9.0 (set by /Users/yourname/.anyenv/envs/ndenv/version)

ディレクトリから移動すると元のバージョンに戻っています。

まとめ

anyenvを使うことで**env系をまとめて管理できます。

おわりに

いろんな言語、いろんなバージョンを**envで管理している方には なかなか便利なツールではないかと思います。