0
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?

Apple Silicon (M1) MacでRails環境を整える: Rosetta 2関連のエラーとその解決法

Posted at

はじめに

最近、AppleのM1チップを搭載したMacでRailsの環境構築を試みた際に、いくつかの一般的でないエラーに直面しました。これらの問題は、特に新しいARMアーキテクチャと従来のx86_64アーキテクチャの違いに起因しています。この記事では、私が遭遇した問題とその解決策を共有します。

1. Homebrewのインストールエラーとその解決

エラー内容:

Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!

このエラーは、ARMアーキテクチャのデフォルトプレフィックスである /opt/homebrew 下で、Rosetta 2を介してx86_64向けのソフトウェアをインストールしようとしたときに発生します。Apple Silicon Macでは、ネイティブARMアーキテクチャが優先されるため、この問題が発生します。

解決策:

ターミナル
arch -arm64 brew install node

arch -arm64 コマンドを使ってHomebrewを明示的にARMモードで実行し、Node.jsをインストールすることで解決しました。この方法で、ARMに最適化されたバイナリがインストールされ、パフォーマンスと互換性の問題が解消されます。

msgpack gemのLoadErrorとRubyの再インストール

Rubyの実行時にmsgpack gemから次のようなLoadErrorが発生しました:

dlopen(/Users/ichikawanijiwa/.rbenv/versions/3.0.7/lib/ruby/gems/3.0.0/gems/msgpack-1.7.3/lib/msgpack/msgpack.bundle, 0x0009): tried: '/Users/ichikawanijiwa/.rbenv/versions/3.0.7/lib/ruby/gems/3.0.0/gems/msgpack-1.7.3/lib/msgpack/msgpack.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))

解決策:

最初にmsgpack gemをアンインストールし、

ターミナル
gem uninstall msgpack

次に、以下のコマンドでARMアーキテクチャ専用に再インストールしました。

ターミナル
arch -arm64 gem install msgpack -- --with-cflags="-arch arm64"

この手順で、ARMアーキテクチャに適合するようにmsgpack gemが正しくインストールされ、エラーが解消されました。

date gemのLoadErrorとその解決

同様の問題がdate gemにも発生しましたが、同じ手順で解決できました:

ターミナル
gem uninstall date --all
arch -arm64 gem install date -- --with-cflags="-arch arm64"

まとめ

Apple Silicon Macでの開発環境構築は、従来のIntel Macとは異なるアプローチが必要ですが、正しい手順で適切なコマンドを実行することで、ほとんどの問題を克服できます。今回共有した経験が、同じ環境で作業を進める他の開発者の助けになれば幸いです。

0
0
0

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
0
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?