LoginSignup
40
25

More than 1 year has passed since last update.

M1 macでpod installができない。sudo gem install ffiをしても治らない(rbenvが原因)

Last updated at Posted at 2021-01-26

環境

  • 2021/01/26時点
  • M1チップのMacBook airを使用
  • ターミナルは基本的にrosettaを利用しないでarm64を利用
  • この記事に乗っ取ってhomebrewをarmとintelを使い分けられるようにして、homebrewを利用してrbenvをインストール
  • rbenvで2.7.2をインストールしてglobalに設定
  • rbenvで入れたrubyにcocoapodsをインストール

起きている問題

原因

  • cocoapodsのインストール先をrbenvでインストールしたrubyにしていたことが原因。issueの中でも以下のようにコメントがある

For anyone using a non-system ruby with rbenv and facing issues with ffi - switching to the system ruby (atleast locally in the project directory) and following the above steps helped me

解決策

  • xcodeを利用するディレクトリだけsystemのrubyを使用するように設定
  • ターミナルはrosettaを利用してintelにする
  • systemのrubyに対してcocoapodsをインストール
    • arch -x86_64 sudo gem install cocoapods
  • 同様にffiをインストール
    • arch -x86_64 sudo gem install ffi
  • あとは普通にpod installすれば動くはず。ちなみに一度intelで上の工程を行えばpod installするときはarmでも動く
    • ※追記(2021/02/05):やはりarmでは動かなかった。pod installするときには、この記事と同様に設定している場合はswitch-archでintelに切り替えてから行う必要がある。
    • ちなみに、今のterminalがarmかintelかを判断をするにはuname -mと実行するとわかる

感想

  • なぜrbenvで入れたcocoapodsが動かないのか?

→ffiというライブラリがarmに対応していないのが原因らしい。rbenvはarmに対応しているため、arm版のrbenvでいれたrubyはopt/homebrew/配下にインストールされる。そのため、そこにcocoapodsを入れると動かないのか? よくわからない
- systemのrubyにcocoapods入れるのがちょっと気持ち悪い。環境汚したくないとか考えると、できれば全部rbenvの中だけ完結するようにしたい。

→ほとんどの記事でpodの操作の時にはsudoをつけているから、そもそもcocoapodsはsysytemのrubyに入れるのが常識だったりする?? (rbenvで入れたrubyにインストールするときはsudoが必要ない) 

  • iOS開発する時にrubyをsysytemの切り替えるの忘れそう

Twitterもやってるので、よければフォローお願いします。
https://twitter.com/ObataGenta

40
25
2

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
40
25