Mac OS 10.15.7下Ruby版本冲突引发CocoaPods缺失报错的问题求助
我太懂这种明明已经装了新Ruby,但工具偏要揪着旧版本不放的烦躁了!咱们一步步来排查解决:
问题根源分析
从报错信息能看到,/usr/local/bin/pod这个脚本正在调用系统自带的Ruby 2.6,而你安装的Ruby 3.0.2虽然在which ruby里显示优先级更高,但Pod的启动脚本本身硬编码了系统Ruby的路径,或者你的环境变量没有正确覆盖系统默认的Ruby调用链。
具体解决方案
检查并修改Pod脚本的Shebang行
先查看Pod执行脚本的第一行路径:cat /usr/local/bin/pod如果第一行是
#!/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby,那就是它在搞鬼!咱们把它改成你新Ruby的路径:sudo nano /usr/local/bin/pod把第一行替换成
#!/usr/local/opt/ruby/bin/ruby,保存退出(按Ctrl+O回车确认,再按Ctrl+X退出)。确保新Ruby在环境变量里的优先级最高
打开你的shell配置文件(Mac 10.15默认是zsh,对应文件是~/.zshrc;如果用bash就是~/.bash_profile):nano ~/.zshrc添加下面这行,让新Ruby的bin目录排在系统路径前面:
export PATH="/usr/local/opt/ruby/bin:$PATH"保存后让配置生效:
source ~/.zshrc验证一下:执行
echo $PATH,确保/usr/local/opt/ruby/bin在最前面或者比/usr/bin更早出现。用新Ruby重新安装CocoaPods
之前的CocoaPods可能装在了系统Ruby的gem库,现在咱们用新Ruby的gem重新安装:gem install cocoapods安装完成后再执行
pod setup,应该就会调用Ruby 3.0.2了。验证修复结果
执行下面的命令确认Pod关联的Ruby版本:pod env看输出里的
Ruby Version是不是ruby 3.0.2p107,如果是,就搞定了!XCode里的pod install也会跟着用新Ruby了。
补充说明
系统自带的Ruby是给macOS本身服务的,平时尽量别用它装第三方gem,避免权限问题和版本冲突。你通过Homebrew安装的Ruby是独立环境,把它设为默认后,后续的gem安装都会走这个环境,就不会再出现版本错位的问题了。
内容的提问来源于stack exchange,提问作者vikramvi

