全新安装 macOS Sonoma 后,为了安装 CocoaPods 折腾了老久,现在记录一下。
由于 SIP 机制,内置 ruby 环境是只读的,不能安装第三方组件,所以除非关闭 SIP 否则就彻底忽略系统自带 ruby 这个特性吧。
1、安装 Xcode
在 App Store 直接安装就可以。
2、安装 Command Line Developer Tools
可以在下载Xcode 的同时进行。
xcode-select --install
切换 Xcode 版本。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcode-select -p
3、安装 Homebrew
需要科学上网,或者配置 host 添加域名解析raw.githubusercontent.com
记录,具体的DNS你应该通过站长工具查询,可能会有变动。
## Add host for GitHub resources
185.199.109.133 raw.githubusercontent.com
下面这个命令来自Homebrew官网https://brew.sh/zh-cn/。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
也可以使用国内镜像,中文的引导,很友好。
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
4、安装 RVM
RVM 是 ruby 版本管理器,方便我们管理、切换 ruby 版本。在折腾的过程中,还发现有另一个 ruby 版本管理器,这让新手或不熟悉的人感觉很混乱,因为不知道该选哪个,这就是乱轮子的后果。另外,安装 RVM 需要科学上网。
# 安装
curl -L get.rvm.io | bash -s stable
# 下面两个命令可以让你不必重启终端,就可以使用新安装的 rvm
source ~/.bashrc
source ~/.bash_profile
# 查看版本
rvm -v
5、安装 ruby
原则上是尽量安装新版本,但是不能保证cocoapods
能兼容。然后切换到新安装的版本,总之不能使用系统的版本。
# 查找可用版本
rvm list known
# 安装 ruby 3.3.1 版本,支持 ARM 架构的 macOS
rvm install 3.3.1
# 切换至 3.3.1 并设置为默认版本
rvm use 3.3.1 --default
# 查看当前 ruby 环境版本
ruby -v
# 查看 ruby 安装的路径
which ruby
在安装 ruby 的过程中,可能会遇到错误,比如。
- 权限问题
permision denied
一般情况下,应该不会出现此错误,但是我还是遇到了。但是使用
sudo rvm install 3.3.1
也会失败后,不过再使用rvm install 3.2.2
却成功了,不知是什么玄学问题。如果你也安装不成功,或许也可以试试。
- 想尽各种方法都始终无法安装成功
在 macOS Monterey 12.7.1 上,安装 3.2.2 版本一直出错,尝试安装 2.7 安装成功。所以安装不成功时,可以考虑降一下版本。
- OpenSSL 3.0 的问题
使用 gem 安装工具,如果出现下面的提示,说明需要安装 OpenSSL 3.0。
OpenSSL is not available. Install OpenSSL and rebuild Ruby or use non-HTTPS
# 检查是否安装 OpenSSL,最好去目录里看看
brew --prefix openssl@3
# 检查是否为ruby的问题
ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
# 安装 OpenSSL
brew install openssl@3
# 重新安装 ruby
rvm reinstall 3.3.1 --with-openssl-dir=`brew --prefix openssl@3`
切换 ruby 的 Gem 源,操作上,将国内镜像放在第一位,把原始源放在第二位,我使用时没什么问题,不过原始源实际上也没什么用。
gem sources -l
gem sources --remove https://rubygems.org/
gem sources --add https://gems.ruby-china.com/
# gem sources --add https://rubygems.org/
gem sources -l
6、安装 CocoaPods
终于来到最后一步,就是我们熟悉的安装命令,带个--verbose
参数,不然没有输出,就不知道终端是不是在偷懒。
sudo gem install cocoapods --verbose
CocoaPods官网指导只有上面一句安装命令,个人感觉是非常不礼貌的,毕竟 iOS 开发只能用 macOS 系统,而目前在 macOS 系统上安装 CocoaPods 很明显仅靠这一个命令是远远不够的,而且你以为上面安装好了,就能使用了吗,那可就大错特错了。
pod --version
大部分情况下,CocoaPods
现在就可以正常使用了,但是如果你像我一样遇到了下面的错误提示,可以接着往下看。
undefined method deprecator for ActiveSupport:Module (NoMethodError)
这个错误原因不难排查,仅仅是因为 CocoaPods 不支持activesupport
这个库的新版本导致的,安装旧版本就能解决。
# 安装旧版本
sudo gem install activesupport -v 7.0.8 --verbose
# 删除新版本
sudo gem uninstall activesupport
Select gem to uninstall:
1. activesupport-7.0.8
2. activesupport-7.1.1
3. All versions
> 2
感谢您看到这里,祝所有人都可以顺利地用上 CocoaPods 进行开发。