anyenvでmacOS上にRubyとNode.jsの環境を構築

はじめに

macOSのローカル環境でRuby on Railsを開発するためにRubyとNode.jsの環境を構築する機会がありました。環境を構築するために、複数の言語環境バージョン管理ツールをまとめて管理できるanyenvを試してみました。

前提条件

検証を行った環境は以下の通りです。

  • macOS Monterey (12.6.2)
  • Homebrew 4.1.0
  • anyenv 1.1.5
  • rbenv 1.2.0-70-g4fec76f
  • nodenv 1.4.1+79.15375bb

anyenvのインストール

Homebrewを使用してanyenvをインストールします。インストール後バージョンが表示されれば完了です。

% brew install anyenv
% anyenv -v
anyenv 1.1.5

初期設定

anyenvの初期設定を行います。
初期設定コマンドを実行すると、~/.zshrcにanyenvを自動的にロードするコマンドを追加するように指示が表示されます。

% anyenv init
# Load anyenv automatically by adding
# the following to ~/.zshrc:

eval "$(anyenv init -)"

前述のコマンドを~/.zshrcに追加します。

% echo 'eval "$(anyenv init -)"' >> ~/.zshrc 
% cat ~/.zshrc                              
(略)
eval "$(anyenv init -)"

シェルを再起動します。
eval "$(anyenv init -)"が実行された際にanyenv install --initを実行するように指示が表示されます。

% exec $SHELL -l
ANYENV_DEFINITION_ROOT(/Users/hoshino/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init

anyenv install --initを実行するとマニフェストディレクトリをチェックアウトするか尋ねられるのでyを入力してエンターキーを押下します。

% anyenv install --init
Manifest directory doesn't exist: /Users/hoshino/.config/anyenv/anyenv-install
Do you want to checkout https://github.com/anyenv/anyenv-install.git? [y/N]: ←yを入力
(略)

Completed!

インストール可能な言語環境バージョン管理ツールの確認

anyenvでインストール可能な言語環境バージョン管理ツールの一覧を確認します。今回はrbenvとnodenvをインストールします。

% anyenv install -l      
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  jlenv
  kubectlenv
  luaenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv
  tfenv

Ruby環境構築

rbenvインストール

参考情報のrbenv installのエラーに記載の通り、libyamlをインストールしておかないとRubyをインストールする際にエラーが発生します。そのため、あらかじめlibyamlをインストールします。

% brew install libyaml

anyenvを使用してrbenvをインストールします。インストールが完了したらシェルを開き直します。

% anyenv install rbenv
(略)

Install rbenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
% exec $SHELL -l

rbenvのバージョンが表示されることを確認します。

% rbenv -v
rbenv 1.2.0-70-g4fec76f

バージョンを指定したRubyインストール

インストール可能なRubyのバージョン一覧を表示します。

% rbenv install -l
3.0.6
3.1.4
3.2.2
jruby-9.4.3.0
mruby-3.2.0
picoruby-3.0.0
truffleruby-23.0.0
truffleruby+graalvm-23.0.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

今回は3.2.2をインストールします。

% rbenv install 3.2.2
(略)
Installed ruby-3.2.2 to /Users/hoshino/.anyenv/envs/rbenv/versions/3.2.2


NOTE: to activate this Ruby version as the new default, run: rbenv global 3.2.2

Rubyバージョン変更(グローバル)

シェル上で共通して実行可能なRubyのグローバルバージョンを変更します。
まずは現在有効になっているRubyのバージョンを確認します。rbenvで管理しているバージョンではなくシステムデフォルトバージョンの2.6.10p210が有効になっています。
その他に、前述の作業でインストールした3.2.2も選択肢として表示されています。

% rbenv versions
* system
  3.2.2
% ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin21]

グローバルバージョンを3.2.2に変更します。

% rbenv global 3.2.2 
% rbenv versions     
  system
* 3.2.2 (set by /Users/hoshino/.anyenv/envs/rbenv/version)

Rubyのグローバルバージョンは/Users/<ホームディレクトリ>/.anyenv/envs/rbenv/versionで管理されています。ファイルの内容を確認すると3.2.2が書き込まれていることがわかります。

% cat /Users/hoshino/.anyenv/envs/rbenv/version
3.2.2

3.2.2のRubyが実行できることを確認します。

% ruby -v               
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin21]

Rubyバージョン変更(ローカル)

次に、特定のディレクトリの配下で実行可能なRubyのローカルバージョンを変更してみます。ディレクトリを作成し移動します。

% mkdir rbenv-test
% cd $_

ローカルバージョンを3.2.2に変更します。

% rbenv local 3.2.2 
% rbenv versions
  system
* 3.2.2 (set by /Users/hoshino/rbenv-test/.ruby-version)

Rubyのローカルバージョンは<カレントディレクトリ>/.ruby-versionで管理されています。ファイルの内容を確認すると3.2.2が書き込まれていることがわかります。

% cat ./.ruby-version 
3.2.2

3.2.2のRubyが実行できることを確認します。

% ruby -v               
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin21]

Node.js環境構築

nodenvインストール

anyenvを使用してnodenvをインストールします。インストールが完了したらシェルを開き直します。

% anyenv install nodenv
(略)

Install nodenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
% exec $SHELL -l

nodenvのバージョンが表示されることを確認します。

% nodenv -v
nodenv 1.4.1+79.15375bb

バージョンを指定したNode.jsインストール

インストール可能なNode.jsのバージョン一覧を表示します。

% nodenv install -l
(略)
20.0.0
20.1.0
20.2.0
20.3.0
20.3.1
20.4.0
20.5.0
(略)

今回は20.5.0をインストールします。

% nodenv install 20.5.0
(略)
Installed node-v20.5.0-darwin-x64 to /Users/hoshino/.anyenv/envs/nodenv/versions/20.5.0

Node.jsバージョン変更(グローバル)

シェル上で共通して実行可能なNode.jsのグローバルバージョンを変更します。
まずは現在有効になっているNode.jsのバージョンを確認します。nodenvで管理しているバージョンではなくシステムデフォルトバージョンの19.8.1が有効になっています。
その他に、前述の作業でインストールした20.5.0も選択肢として表示されています。

% nodenv versions
* system => v19.8.1
  20.5.0
% node -v
v19.8.1

グローバルバージョンを20.5.0に変更します。

% nodenv global 20.5.0 
% nodenv versions
  system
* 20.5.0 (set by /Users/hoshino/.anyenv/envs/nodenv/version)

Node.jsのグローバルバージョンは/Users/<ホームディレクトリ>/.anyenv/envs/nodenv/versionで管理されています。ファイルの内容を確認すると20.5.0が書き込まれていることがわかります。

% cat /Users/hoshino/.anyenv/envs/nodenv/version
20.5.0

20.5.0のNode.jsが実行できることを確認します。

% node -v  
v20.5.0

Node.jsバージョン変更(ローカル)

次に、特定のディレクトリの配下で実行可能なNode.jsのローカルバージョンを変更してみます。ディレクトリを作成し移動します。

% mkdir nodenv-test
% cd $_

ローカルバージョンを20.5.0に変更します。

% nodenv local 20.5.0
% nodenv versions
  system
* 20.5.0 (set by /Users/hoshino/nodenv-test/.node-version)

Node.jsのローカルバージョンは<カレントディレクトリ>/.node-versionで管理されています。ファイルの内容を確認すると20.5.0が書き込まれていることがわかります。

% cat ./.node-version
20.5.0

20.5.0のNode.jsが実行できることを確認します。

% node -v
v20.5.0

参考情報

rbenv installのエラー

検証時、rbenvでRubyをインストールしようとして以下のエラーが発生しました。
libyamlがインストールされていないことが原因のため、Homebrewでインストールしたところエラーが解消しました。

% rbenv install 3.2.2
(略)

BUILD FAILED (macOS 12.6.2 using ruby-build 20230717)

Inspect or clean up the working tree at /var/folders/c7/9v6hyrb913v8dylgpwr9kh600000gn/T/ruby-build.20230722115113.52154.tUQibf
Results logged to /var/folders/c7/9v6hyrb913v8dylgpwr9kh600000gn/T/ruby-build.20230722115113.52154.log

Last 10 log lines:
    Check ext/psych/mkmf.log for more details.
*** Fix the problems, then remove these directories and try again if you want.
Generating RDoc documentation
/private/var/folders/c7/9v6hyrb913v8dylgpwr9kh600000gn/T/ruby-build.20230722115113.52154.tUQibf/ruby-3.2.2/lib/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
uh-oh! RDoc had a problem:
cannot load such file -- psych

run with --debug for full backtrace
make: *** [rdoc] Error 1

参考文献

anyenv/anyenv
rbenv/rbenv
nodenv/nodenv
rbenvでのRubyインストール失敗対応(cannot load such file — psych)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です