1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M4 Macに移行後、pnpmやDockerで「Bad CPU type in executable」が出た話と解決法

Posted at

問題点

Intel MacからM4 Macに開発環境を移したところ、pnpm installdocker 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を挟まなくていいので、将来的な安定性を加味すると再度インストールする方が良さそうに思いました。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?