最近團隊內升級cocoapods到1.9.0。原本我簡單的以爲執行sudo gem install cocoapods
來更新。萬萬沒想到。
執行多次都是:ERROR: Error installing cocoapods: ERROR: Error installing cocoapods:
Building native extensions. This could take a while...
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.
通過各方搜索得出以下結論
Ruby版本過低目前cocoapods依賴的ruby版本高於macOS自帶的Ruby版本,需要手動升級ruby。(我的電腦版本Mojava macOS 10.14.6)
安裝cocoapods的條件 Xcode -> Homebrew ->rvm -> ruby -> Cocoapods(rvm是管理Ruby版本的工具)
當我準備升級ruby時,終端執行rvm --version發現 命令找不到,猜想可能是ruby是系統自帶(提醒不要刪除系統自帶的ruby支持,否則你怎麼死的都不知道),沒有通過rvm安裝。接下來我準備安裝rvm時,發現Homebrew當前版本又不符合要求。所以就進行了整條線升級。
Homebrew升級失敗
- 通過brew update失敗, 我是通過brew upgrade 成功升級
- 如果brew upgrade也失敗,建議你卸載重裝
rvm不存在
通過終端命令rvm -v
準備查看rvm版本,發現命令找不到。那本地就沒有安裝咯。
那就安裝咯
curl -sSL https://get.rvm.io | bash -s stable
等待幾分鐘,完成後
載入rvm環境
source ~/.rvm/scripts/rvm
通過rvm -v查看是否安裝成功
rvm -v
rvm 1.29.9 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
安裝Ruby環境
查看一致ruby版本
rvm list known
安裝目標版本
rvm install ruby-版本號
安裝過程一般需要等比較久,如果此步驟失敗,請檢查homebrew是否可以升級,請升級最新的。
指定爲系統默認ruby版本
rvm use 2.6 --default
由於默認源不可用,所以需要切換爲國內的https://gems.ruby-china.com/
// 移除 rubygems.org
gem source -r https://rubygems.org/
//更新爲ruby china
gem sources -a https://gems.ruby-china.com/
升級Cocoapods
在確保ruby 爲2.6版本之後,可以通過rvm list查看
rvm list
* ruby-2.6.3 [ x86_64 ]
# => - current
# =* - current && default
# * - default
即可執行sudo gem install cocoapods
升級Cocoapods到1.9.0。當然你有可能只需要處理上面中任意一種情況就可以升級了。比如只需要升級ruby。
重啓終端pod --version變爲原來版本
在安裝完Ruby之後,我查看了升級pod成功爲1.9.1後,之後關閉終端,pod版本又變回1.8.4。怎麼回事了?
查看ruby 版本,發現使用的是1點幾,又回去啦?
後來發現重啓終端之後會使用系統自帶的Ruby環境,自然pod也是之前版本。
在參考了每次打開終端,當前使用的 ruby 版本會變回系統版本,設置了 default 好像也沒什麼作用,如何解決和mac 10.8 下默認 ruby 版本問題之後依然無效。
所以直接在用戶目錄下的.bash_profile添加rvm use 2.6 --default
來保證每次啓動的終端Ruby環境都是使用rvm的2.6,而不是系統自帶ruby.
參考
Cocoapods1.9.0 cannot install on Mojava 10.14.6–github-issues
Installing cocoapods on macOS Mojava --apple.stackexchange 提供解決方案
mac安裝Cocoapods遇到的問題和解決辦法 全套解決辦法
MAC_Ruby安裝 安裝rvm和ruby