問題点
Intel MacからM4 Macに開発環境を移したところ、pnpm install や docker compose 実行時に以下のようなエラーが出るようになりました。
env: node: Bad CPU type in executable
また、brew を実行しても、
/usr/local/.../ruby: Bad CPU type in executable
と同様のエラーが出て、まともに何も動かせない状態に。
原因
結論から言うと、Intel Macで使っていたツール類がAppleシリコン(ARM)に対応していないバイナリのまま残っていたのが原因です。M4 Mac上では当然これらの実行ファイルは動きません。
Rosetta2を入れてIntel向けバイナリを動かす選択肢もありましたが、開発環境の序盤ということもあり、完全にApple Siliconネイティブな環境に作り直すことにしました。
対応したこと
1. Homebrew を削除して再インストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
.zprofile に以下を追記してパスを通します:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
source ~/.zprofile
2. Node.jsの再インストール(Intel版の削除 → ARM版のインストール)
brew install node
3. pnpm の再インストール
npm install -g pnpm
4. Docker Desktopの再インストール(Apple Silicon向け)
Intel時代に使っていた /Applications/Docker.app を削除し、
以下の公式から「Apple Chip」版を再インストール:
※Docker Compose は Docker Desktop に同梱されているので、個別に入れる必要なし。
まとめ
Intel MacからAppleシリコンMacに移行する場合に
Bad CPU type in executable
のようなエラーが出ると検索した場合、Rosettaをインストールする記事が出てくるが、環境構築し直す方法もすぐに見つかって欲しかったので微力ながら記事を投稿します。
Homebrew・Node.js・Dockerなどのツール類を再度インストールすることになるため、開発規模が大きい場合はかなり手間かも。
ただ早めに対応しておくとRosettaを挟まなくていいので、将来的な安定性を加味すると再度インストールする方が良さそうに思いました。