【環境構築】anyenv + macOS + nodenvで環境構築する

技術ログ
目標:環境構築に必須なツールである「anyenv」を理解する

手元のマシンで複数のプロジェクトに触れる場合、それぞれのプログラム言語のバージョンが競合してしまったり、問題を引き起こす場合があります。

そこで、各言語を複数バージョン扱えるようにする、「○○env」系の便利なツールが、有志により開発されています。

動機例:Python2.xと、Python3.xを使い分けたい!→「pyenv」を使う

では、何が問題なのでしょうか。
各言語毎に「○○env」を利用する場合、インストールに手間取る、管理が難しいなどの問題があります。

問題点:各言語毎に**envを利用すると、管理が難しい。

ならば、一括で管理してしまおう!というツールが、「anyenv」です。

今回は私が、nodenvを利用したかったため、まとめました。

詳解:anyenv

anyenv – All in one for **env

anyenvのリポジトリは2013年頃から現在まで、活発に稼働しています。今後更新されなくなる可能性は当分は無いでしょう。コミッターの方々に感謝を込めて利用します。

利用可能な**envは以下の通りです。
どのツールも、その言語を利用する人にとっては無くてはならない存在です。
どんな些末なレベルでも良いので、貢献したいものですね。

  • Renv
  • crenv
  • denv
  • erlenv
  • exenv
  • goenv
  • hsenv
  • jenv
  • jlenv
  • luaenv
  • nodenv
  • phpenv
  • plenv
  • pyenv
  • rbenv
  • sbtenv
  • scalaenv
  • swiftenv
  • tfenv

anyenvのインストール

前提条件は、macOS、シェルはbashかzshを対象とします。
homebrewを利用する場合は、以下のコマンドが利用できます。

$ brew install anyenv
$ anyenv init

gitから落として使う場合は、以下のコマンドが利用できます。

# bashの場合
$ git clone https://github.com/anyenv/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile 
$ source ~/.bash_profile
# zshの場合
$ git clone https://github.com/anyenv/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc

最後に、ターミナルにanyenvと打ち込んで、利用できるか確認しましょう。
※余談ですが、brew経由でインストールした場合、anyenvへのパスが通っておらず、nodenvが利用できない自体に陥りました。この場合、$HOME/.anyenv/binへのパスを通しておく必要があります。

$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile 

anyenvを利用する

後は好きな**envを利用するだけです。

今回は私がnodenvを利用したいので、その備忘録も兼ねて。
インストールできるリストを確認して、最新版と12.18.4を入れてみます。

$ anyenv install nodenv
$ nodenv install -l # 確認
$ nodenv install 14.13.0 # install -l で確認したバージョンを入力
$ nodenv install 12.18.4 # 比較用に入れる

インストールしたバージョンを確認してみます。

$ nodenv versions
12.18.4
14.13.0

システム全体に、14.13.0を適用して、現在適用されているバージョンを確認します。

$ nodenv global 14.13.0
$ nodenv version
14.13.0 (set by /Users/***/.anyenv/envs/nodenv/version)

現在滞在するフォルダ以下を、特定のバージョンで管理したい場合は、以下を利用します。

$ mkdir tmp && cd tmp # 検証のためのtmpフォルダを作成、移動
$ nodenv local 12.18.4 # 現在のフォルダ以下をバージョン12.18.4で管理
$ nodenv version # 現在適用されているバージョンを確認
12.18.4 (set by /Users/***/tmp/.node-version)
$ cd ~ # ホームディレクトリへ移動
$ nodenv version
14.13.0 (set by /Users/***/.anyenv/envs/nodenv/version)

これでプロジェクト毎に、プログラムのバージョンを管理することが可能になります。
今後は、簡単なWebアプリを作成していこうかと思います。

まふとら
まふとら

年内には何か完成させたい!

コメント