Macの言語バージョンマネージャをbrew installからanyenv installに変更した

More than 1 year has passed since last update.


はじめに

週末プログラミングのために、自宅のMacの開発環境を整備しました。

今までhomebrewで「nodenv」「pyenv」「rbenv」「phpenv」をインストールして各言語のバージョンを変更して使用していましたが、「anyenv」で一元管理するように変更しました。

今後の自環境再セットアップの際に参考となるように、手順をメモとして残します。


「anyenv」とは?

Githubリポジトリ を見ると

anyenv - all in one for *env」と記載されており、説明は以下のようになっています。


【Google翻訳】

これは、rbenvスタイルの環境マネージャ用の単純なラッパーです。 anyenvをインストールした場合は、クローンをgitしたり、** envごとにシェルプロファイルを変更したりする必要はありません。

homebrewを使って「rbenv」をインストールする場合、まずgit cloneでリポジトリをコピーし、bash_profileにrbenvの処理を追記する必要があります。

1種類のみの「*env」をインストールするだけの場合はこれでも問題ないのですが、他の言語の「pyenv」や「nodenv」など複数のものをインストールする場合は手順が面倒ですし、bash_profileも汚れます。。。


  • anyenvを使って「rbenv」をインストールする場合は「anyenv install rbenv」の1行で終わりです。

    もちろん、bash_profileの変更は必要ありません。


  • もう一つ便利なのが、「anyenv version」コマンドで各言語のバージョンに何が使われているかを、以下のように一覧で確認することが可能な点です。


$ anyenv version

nodenv: 8.11.2 (set by /Users/XXXXX/.anyenv/envs/nodenv/version)
pyenv: 3.6.5 (set by /Users/XXXXX/.anyenv/envs/pyenv/version)
rbenv: 2.5.1 (set by /Users/XXXXX/.anyenv/envs/rbenv/version)


  • 現時点でanyenvで管理可能な「env」の種類

anyenv install —list」コマンドで確認可能です。

R、Crystal、D、Erlang、Elixir、Golang、Haskell、Java、Lua、Node.js、PHP、Perl、Python、Ruby、SBT(Scala用ビルドツール)、Scala、Swift が対象です。

$ anyenv install --list

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


homebrewでインストールした「*env」などの削除

「anyenv」をインストールする前に、homebrewでインストールした「rbenv」「pyenv」「nodenv」などがあれば、アンインストールしましょう。

$ brew list

[現在brew経由でインストールされているパッケージの一覧を確認する]

$ brew uninstall rbenv
$ brew uninstall pyenv
$ brew uninstall nodenv
$ brew uninstall phpenv

bash_profileに記載している各envの設定の削除も忘れないようにしてください。

bash_profileに記載が残っていると「anyenv」を動かした際にエラーが発生し、ハマります。


「anyenv」のセットアップ


  1. 「anyenv」をGit クローンする。

  2. bash_profileに「anyenv」のパスを通す。

  3. bash_profileにanyenvの初期化コマンドを追記する。

  4. シェルの再読み込み。

$ 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

※ 以降の「**env」をインストールする際に、bash_profileを変更する必要はありません。


「pyenv」のインストール


  • pythonのvirtualenvプラグインは以下の手順でインストール可能です。

git clone https://github.com/yyuu/pyenv-virtualenv ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv

1. anyenv経由で「pyenv」をインストールする。

$ anyenv install peen

2. pythonの公式サイトを確認し、安定版のバージョンを確認する。


  • 2018/05/26時点で、version2系が「2.7.15」version3系が「3.6.5」でした。

3. pyenvでインストール可能なバージョンを確認する。

$ pyenv install --list

4. pyenvで対象バージョンのpythonをインストールする。

$ pyenv install 2.7.15

$ pyenv install 3.6.5

5. 使用するバージョンを指定する。(下記は3系を使う場合)

$ pyenv global 3.6.5

6. 適用されているバージョンを確認する。

$ python --version

Python 3.6.5

7. 使用するバージョンを2系に変更する。

$ pyenv global 2.7.15

8. 適用されているバージョンを確認する。

$ python --version

python 2.7.15

※ 「pyenv local 2.7.15」でカレントディレクトリのバージョンを設定することも可能です。


「nodenv」のインストール

anyenvではNode.jsのバージョン管理として「nodenv」「ndenv」「nenv」の3種類のバージョンマネージャが存在しています。

anyenvのissueを確認すると、「ndenv」「nenv」については現時点でアップデートされておらず「nodeenv」の使用を推奨しているようです。

将来的に「ndenv」「nenv」は対象外となる可能性がありますので「nodenv」の使用をオススメします。

1. anyenv経由で「nodenv」をインストールする。

$ anyenv install nodenv

2. Node.jsの公式サイトを確認し、安定版のバージョンを確認する。


  • 2018/05/26時点で、TLSが「8.11.2」Latestが「10.2.1」でした。

3. nodenvでインストール可能なバージョンを確認する。

$ nodenv install --list

4. nodenvで対象バージョンのNode.jsをインストールする。

$ nodenv install 8.11.2

5. 使用するバージョンを指定する。(下記は3系を使う場合)

$ nodenv global 8.11.2

6. 適用されているバージョンを確認する。

$ node -v

v8.11.2


他の言語バージョンマネージャの場合

「pyenv」「nodenv」と同じですので手順は省略させていただきます。


最後に

「anyenv」を使うことで、ローカル環境の言語バージョンを簡単に切り替えることができ、現在使用中のバージョンも一目で分かり、開発環境がすっきりすると思います。

複数の言語を使って開発している方には非常に便利なパッケージだと思いますので、良ければ使ってみてください。