40
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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をインストール

#起きている問題

  • pod installlが動かない。
    →原因としてはこのissueで語られていること

  • 上記記事にある解決策を試しても解決しない
    記事の中では一旦ffiをアンインストールしてターミナルをrosettaを利用してintelに切り替えて、↓をしろと言っている
    sudo gem install ffi
    日本語の参考記事→[M1チップ(Apple Silicon)搭載のMacでCocoaPodsが動かない時の対応](M1チップ(Apple Silicon)搭載のMacで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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?