brew与gem install的差异解析及CocoaPods版本更新疑问解答
CocoaPods:brew与gem安装方式的区别及版本冲突问题
执行pod repo update时收到提示:
CocoaPods 1.15.0 is available.
To update use:gem install cocoapods
执行sudo gem install cocoapods后输出:
Successfully installed cocoapods-1.15.2 Parsing documentation for cocoapods-1.15.2 Done installing documentation for cocoapods after 1 seconds 1 gem installed
但执行pod --version仍显示1.12.1,直到执行brew upgrade cocoapods才更新到新版本。针对该场景,解答如下:
一、何时该使用brew而非gem install?
- 如果你最初是通过Homebrew安装的CocoaPods,后续更新必须用
brew upgrade cocoapods——brew会独立管理自身安装软件的生命周期,与gem体系互不干涉。 - 若初始安装用的是gem,就对应使用
gem install cocoapods更新;建议全程统一一种安装方式,避免版本冲突。 - 日常开发中更推荐brew:它能同步管理CocoaPods依赖的Ruby环境、Xcode相关组件等,减少单独配置Ruby环境的麻烦。
二、二者的存储位置是否不同?
是的,存储路径完全独立:
- gem安装的CocoaPods:默认存放在Ruby的gem目录,可通过命令
gem which cocoapods查看具体路径(示例:/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.15.2)。 - brew安装的CocoaPods:存放在Homebrew专属目录,可通过
brew --prefix cocoapods查看路径(示例:/usr/local/Cellar/cocoapods/1.12.1)。
三、是否同时存在两个CocoaPods版本?
是的,你的系统中目前同时存在两个版本:
- gem安装的1.15.2版本
- brew安装的1.12.1版本
终端执行pod --version显示旧版本,是因为系统环境变量PATH中,brew的命令路径优先级高于gem,终端会优先调用brew安装的旧版本。
四、二者的差异是什么?
- 管理范围:gem是Ruby专属包管理器,仅处理Ruby gem包;brew是跨平台软件包管理器,可管理所有Mac端软件及底层依赖组件。
- 依赖处理:brew安装CocoaPods时会自动配套安装兼容的Ruby版本及其他依赖,无需手动配置Ruby环境;gem安装依赖系统自带或手动部署的Ruby环境,版本不兼容时容易安装失败。
- 权限要求:gem安装通常需要
sudo权限(写入系统Ruby目录时),brew安装无需sudo,安全性更高。 - 版本切换:brew可通过
brew switch cocoapods <版本号>快速切换已安装的版本;gem则需要先卸载旧版本(gem uninstall cocoapods),或借助rbenv、rvm等Ruby版本管理器实现版本隔离。
内容的提问来源于stack exchange,提问作者Elye
相关产品推荐
相关产品推荐

