LoginSignup
2
2

More than 1 year has passed since last update.

M1 Mac で x86_64 の ruby をビルドして CocoaPods を使う

Last updated at Posted at 2021-03-11

M1 native な ruby ではまだ CocoaPods がうまく動かなかったので、x86_64 版 ruby をビルドして CocoaPods を動かすためのメモです。

追記: そういえば、いつの間にか brew で入れた cocoapods がちゃんと動くようになってますね。

目標

  • Rosetta 2 の利用は最小限にする。
    • 特に、ターミナルを Rosetta 2 で動かすなんてあり得ない。
    • Homebrew は arm64 版のみを利用。
  • x86_64 版 ruby は 2.7.2-x64 みたいな名前にして、arm64 版と共存させる。
  • ruby のバージョンは rbenv global ではなく、環境変数で切り替える。

ruby ビルド

1) Homebrew で rbenv をインストール
rbenv 自体はシェルスクリプトなので、CPU アーキテクチャ関係ないはず。

% brew install rbenv

2) x86_64 版 readline ライブラリをダウンロード
次のリンク先から、readline-8.1.big_sur.bottle.tar.gz をダウンロード。
x86_64 版が欲しいので、arm64 じゃないやつを選ぶこと。

3) ダウンロードした readline ライブラリを展開
展開先はとりあえず ~/.rbenv/lib-x64 あたりで。

% mkdir -p ~/.rbenv/lib-x64
% tar zxCf ~/.rbenv/lib-x64 ~/Downloads/readline-8.1.big_sur.bottle.tar.gz

4) ruby-build 定義ファイルを別名でコピー
この定義ファイルの名前が rbenv で指定する ruby のバージョン名になります。
ビルドに成功したらコピーした定義ファイルは消して構いません。

% cp $(brew --prefix ruby-build)/share/ruby-build/2.7.2 2.7.2-x64

5) ビルド
ちょっと長いけど、お間違えのないように。

% RUBY_CONFIGURE_OPTS=--with-readline-dir="$HOME/.rbenv/lib-x64/readline/8.1" arch -x86_64 rbenv install 2.7.2-x64

CocoaPods インストール

1) 環境変数 PATH に ~/.rbenv/shims を追加しておく

export PATH="$HOME/.rbenv/shims:$PATH"

2) ビルドされた ruby を確認

% rbenv versions
* system (set by /Users/hoshi/.rbenv/version)
  2.7.2-x64

3) 環境変数 RBENV_VERSION で 2.7.2-x64 を指定して ruby を実行

% RBENV_VERSION=2.7.2-x64 ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]

4) CocoaPods をインストール

% RBENV_VERSION=2.7.2-x64 gem install cocoapods

使い方

環境変数を毎回指定して pod コマンドを実行するのは面倒。

% RBENV_VERSION=2.7.2-x64 pod --version
% RBENV_VERSION=2.7.2-x64 pod init
% RBENV_VERSION=2.7.2-x64 pod install

とはいえ、rbenv global 2.7.2-x64 はしたくないので、.bashrc または .zshrc にエイリアスを登録。

alias pod='RBENV_VERSION=2.7.2-x64 pod'
2
2
0

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
2
2