🖥️
M1 (Apple Silicon) Mac の mise で Node.js v14 をインストールする方法
mise を使用して Node のバージョン管理をしている場合、Node.js v14 をインストールしようとすると以下のようなエラーが発生することがあります。
> mise install node@14
[ERROR] sh failed
Error:
0: sh exited with non-zero status: exit code 2
Location:
src/cmd.rs:394
Version:
2024.9.6 macos-arm64 (2024-09-18)
14系以下のarm64向けバイナリは公開されておらず、ビルドに失敗するのが原因のようです。
対策方法
x86_64 バージョンのmise を使う
mise の x86_64 バージョンを使用することでインストールできます。
A common reason for doing this is to support compiling node <=14.
mise-x64
のインストール
mkdir -p ~/.local/bin
curl https://mise.jdx.dev/mise-latest-macos-x64 > ~/.local/bin/mise-x64
chmod +x ~/.local/bin/mise-x64
~/.local/bin/mise-x64 --version # mise 2024.10.1 macos-x64 (7184e60 2024-10-07)
mise-x64
を使って 14系の Node をインストール
mise-x64 use node@14
node -v # v14.21.3
ソースコードからビルドする
v14.16.0 以降であればarm64対応がバックポートされており、ローカルでビルドすることも可能です。
ただし私の環境ではビルド時にコンパイルオプションを付ける必要がありました。
CPPFLAGS="-Wno-enum-constexpr-conversion" mise use node@14.16.0
node -v # v14.16.0
-Wno-enum-constexpr-conversion
は列挙型の変換に関する警告を抑制するオプションです。
そのためビルド自体は成功するのですが、動作に影響があるかもしれません。
また Clang 17以降で削除される可能性があるため、x86_64 バージョンで動かすほうが無難そうです。
Discussion