(-> % read write unlearn)

All opinions expressed are solely my own and do not express the views or opinions of my employer.

anyenvでrbenvとかjenv(java)とかpyenvとか管理すると便利

ローカル環境で言語のランタイムの切り替えを管理できるツールJavajenvRubyrbenvPythonpyenv ー などをまとめて管理/インストールできるanyenvがとても便利です。

# bash向けにアレンジしてます。

# インストール
git clone https://github.com/riywo/anyenv ~/.anyenv
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
exec $SHELL -l  # ~/.bash_profile の設定をリロード

# 確認
which anyenv
type anyenv
anyenv help
anyenv versions

以下、例としてpythonのランタイムについて

# pyenv(python)のインストール
anyenv versions
anyenv install pyenv
exec $SHELL -l
anyenv versions
pyenv --version

# pythonの2系と3系をインストール例
pybenv versions
pyenv install --list
pyenv install 2.7.10
pyenv install 3.4.3
pyenv rehash
pyenv versions

# デフォルトのpythonのバージョンの切り替え
python -V
pyenv global 2.7.10
python -V
pyenv versions

# 特定のディレクトリのpythonのバージョンの切り替え
mkdir ./pyenv_test
cd    ./pyenv_test
python -V
pyenv local 3.4.3
python -V
pyenv versions
cat ./.python-version # pyenv local コマンドは、このファイルを作って、このディレクトリで使用するpythonのバージョンを書き込んでるだけ。
  • 基本的にrbenv以外の*envrbenvをfolkするか参考にするかして各者が作ってるようです。なのでコマンドも似かよっています。

追記(2015年09月04日)

anyenvは、2015年09月04日時点でこれだけの*envに対応しているようです。

言語 Star *env
R 48 Renv
Crystal 41 crenv
D 20 denv
Erlang 29 erlenv
Elixir 101 exenv
Go 5 goenv
Haskell 2 hsenv
Java 754 jenv
Lua 7 luaenv
node.js/io.js 122 ndenv
node.js 21 nenv
node.js 78 nodenv
PHP 9 phpenv
Perl 266 plenv
Python 2999 pyenv
Ruby 6984 rbenv
SBT(Scala) 7 sbtenv
Scala 19 scalaenv
  • https://github.com/riywo/anyenv/tree/master/share/anyenv-install から調べました*1
  • jenverlenvexenvなどはランタイムのインストール機能がなくて、自分でインストール(やビルド)が必要だったりします。他にもそういう手動インストール系があるのかもしれません。 rbenvのノリで進むとちょっと面倒くさく感じますが、実際jenvをローカルで使っている感想は、かなり便利です。
  • node関連のが3種あります。自分は、Starの数とanyenvと作者が一緒という2つの理由で、なんとなくndenvを使ってみています。nodeのランタイム管理ならnodebrewという選択肢もあると思います。

*1:Starの数は2015年09月04日時点のものです。時間が立てば当然増減します。あくまで参考までに