Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

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

Junpei_Takagi
京都の会社でAWS/SORACOM のテクノロジーをふんだんに使ったIoTをやっています。 AWSやSORACOMのカルチャーが好きです! AWS認定ソリューションアーキテクトアソシエイト AWS認定SysOpsアドミニストレーターアソシエイト Salesfoce認定アドミニストレータ/アプリケーションビルダー
https://iot.kyoto
kyoso
AWSとSORACOMを活用した最先端のIoTソリューションをご提案します。
https://iot.kyoto
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away