はじめに
最近、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とは異なるアプローチが必要ですが、正しい手順で適切なコマンドを実行することで、ほとんどの問題を克服できます。今回共有した経験が、同じ環境で作業を進める他の開発者の助けになれば幸いです。