M1 MacのHomebrewでのインストール時に「Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!」エラーが出る場合の解決法
M1 MacのHomebrewでインストールしようとしたときに、下記のエラーが表示されました。
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
To rerun under ARM use:
arch -arm64 brew install …To install under x86_64, install Homebrew into /usr/local.
翻訳すると下記の通りです。
エラー:ARMデフォルトプレフィックスが「/opt/homebrew」のものはRosetta 2を使っている状態ではインストールできません
ARMで再実行する方法:
「arch -arm64 brew install …」x86_64でインストールしたいならHomebrewを「/usr/local」にインストールしてください。
Apple Silicon(ARM)に対応したARM版Homebrewと、Intel(x86_64)に対応したIntel版Homebrewがあり、Rosetta 2を使っている状態だとARM版Homebrewでエラーが出るようです。
Node.jsの古いバージョンをインストールするために、いろいろ試した過程でターミナルをRosetta 2で起動したことがあったのでそれが原因のようです。
下記手順で確認していきます。
1. Rosetta 2でターミナルを起動していないか確認
Finderで「ターミナル.app(自分の場合はiTerm2を使用しているのでiTerm2)」を選択して右クリックして「情報を見る(command + I)」で情報パネルを表示します。
情報パネルが表示されるので「Rosettaを使用して開く」にチェックが入っていないか確認します。
自分の場合はこれが原因だったので、ターミナルを再起動して改めてコマンドを実行するとインストールできるようになっていました。
2. arch -arm64をコマンドの先頭につける
「arch -arm64」を先頭につけてコマンドを実行しても、問題なくインストールできるようです。
arch -arm64 brew install ○○
3. x86_64でHomebrewをインストールし直す
エラーメッセージ最終行に書かれている通り、x86_64で使いたい場合はHomebrewを「/usr/local」にインストールする必要があります。
「arch -x86_64」を先頭につけた状態でHomebrew公式サイトのインストールコマンドを実行します。
念のためサンプルとして下記コマンドを載せておきますが、変わっている可能性もあるので公式サイトから確認して実行するようにしましょう。
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"