M1 Mac で x86_64 の ruby をビルドして CocoaPods を使う
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'
Author And Source
この問題について(M1 Mac で x86_64 の ruby をビルドして CocoaPods を使う), 我々は、より多くの情報をここで見つけました https://qiita.com/hoshi-takanori/items/d6ce7f6d5977b52ec96c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .