概要
話題のM1チップ搭載のMacを購入したので、早速Xcodeで開発をしようとしたところ Pods が動かない問題があり結構ハマったので記録として残します。将来的にはCocoapods 側で改善されることを願います。
環境
- 動作確認日は
2021/08/14
- M1チップのMacBook Air
- ターミナルは基本的にrosettaを利用しないiTerms2
- homebrewをインストールして、anyenv経由でrbenvをインストール
- rbenvで2.6.8をインストールしてglobalに設定
- rbenvで入れたrubyにcocoapodsをインストール
問題
Mac (M1) で pod install
がエラーで失敗する。
(下記はイメージ。ログ残してなかったので他所から拝借)
LoadError - dlsym(0x7f8926035eb0, Init_ffi_c): symbol not found - /Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi.rb:6:in `rescue in <top (required)>'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi.rb:3:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ethon-0.12.0/lib/ethon.rb:2:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:74:in `cdn_url?'
...省略
解決方法
色々な記事を調べて見たが、重要なポイントは下記
- rosettaは使用しなくてもいける
- MacにデフォルトでインストールされているRubyのバージョンを使う。rbenvでインストールしたものはarm64でも動かなかった
- コマンドは以下の順番で行うこと
- -x86_64 をつけることで Intelのモジュールとしてインストールできる
sudo arch -x86_64 gem install cocoapods
sudo arch -x86_64 gem install ffi
arch -x86_64 pod install
原因
Cocoapods内で使われているffi
というgemと、rbenvでインストールしたrubyの互換性に問題があるらしい。rbenvのrubyはarm64の記載があるのが問題?でもSystemのrubyにもarm64の記載があるので謎ですね。
2.6.8: ruby 2.6.8p205 (2021-07-07 revision 67951) [arm64-darwin20]
system: ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.arm64e-darwin20]
所感
M1チップ搭載Macが出て約一年たつけど、まだまだ対応できてないものがあるんなぁと感じましたが、ファンレスで熱くならないのにパワフルなMac最高ですね!