search
LoginSignup
16

More than 1 year has passed since last update.

posted at

Apple Silicon (M1) の pod install エラーの直し方

概要

話題の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最高ですね!

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
What you can do with signing up
16