最近团队内升级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