anyenvでmacOS上にRubyとNode.jsの環境を構築
Contents
はじめに
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)