M1 macの環境構築 anyenv, fish

M1 Macでanyenvを利用してnodenvを入れ、nodeの環境構築をした時のメモです
一癖ありましたので、誰かの参考になれば幸いです

私はfishシェルを利用しているので、パスの設定などはfishになっています。zshを利用している方は変更してください

anyenvをインストール

anyenvのインストールはhomebrewを利用しました。
brewのインストールは省きます。

homebrewはarmネイティブ版を入れました。3.0.0から正式サポートされています。
3.0.0 — Homebrew

brew install anyenv

パスを書き込みます

$ vim ~/.config/fish/config.fish

# anyenv
set -x PATH $HOME/.anyenv/bin $PATH
eval (anyenv init - | source)

パスを書いたらcofigを再読み込みして、念の為セッションも再読み込みします

$ source ~/.config/fish/config.fish
$ exec fish -l

anyenvが正常にインストールできたら、versionでも確認して動くか確認しましょう

$ anyenv --version

anyenv 1.1.2

続いて初期化処理します

$ anyenv install --init

nodenvインストール

とりあえず、どんなenv環境が使えるか確認します

$ anyenv install -list

nodenvをインストールします
インストール後はまた再読み込みします

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

$ exec fish -l

あれ、nodeがインストールできない

このままnodenvを利用してnodeをインストールしようと思ったのですが、Installing...のまま終わらない現象になってしまいました。
とりあえずターミナルをRosetta2を利用して開いて実行することにしました。
15系ならarmサポートがされていると聞いていたので、15系ならできるかと思ったのですが、15系もだめでした。

このようにRosettaを使用して開くにチェックを入れてターミナルを開きます。

ターミナルでuname -aと入力すると、armで動いているかRosetta越しに動いているかわかります。

実行結果の末尾がarm64ならarmで動いていて、x86_64ならRosetta越しです

Rosetta越しで開いたターミナルでnodeをインストールします。

$ node install 14.15.4 
$ nodenv global 14.15.4 
$ node --version
14.15.4

使えるようになりました!
このあとはarmのターミナル(iterm2)でもnodeを実行することができました。