はじめに
週末プログラミングのために、自宅の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」のセットアップ
- 「anyenv」をGit クローンする。
- bash_profileに「anyenv」のパスを通す。
- bash_profileにanyenvの初期化コマンドを追記する。
- シェルの再読み込み。
$ 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」を使うことで、ローカル環境の言語バージョンを簡単に切り替えることができ、現在使用中のバージョンも一目で分かり、開発環境がすっきりすると思います。
複数の言語を使って開発している方には非常に便利なパッケージだと思いますので、良ければ使ってみてください。