解决 can't find gem cocoapods (>= 0.a) with executable pod

1,279 阅读2分钟

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 93 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly.

Cocoapods 无法正常使用 pod 命令,出现以下问题:

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'from /usr/local/bin/pod:23:in `<main>'from /usr/local/bin/ruby_executable_hooks:22:in `eval'from /usr/local/bin/ruby_executable_hooks:22:in `<main>'

目前机器上是通过 homebrew 安装的 cocoapods formula,于是尝试:

brew reinstall --form cocoapods

无效。

再次尝试:

brew uninstall --form cocoapods

然后执行 pod 命令,发现依旧报上错,而不是 commamd not found,很奇怪,遂根据关键词 'find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException) 搜索解决方案,基本是更新 gem 后重新安装 cocoapods,感觉不是我的问题,未采纳。

于是思考为什么我明明已经卸载 cocoapods,依旧能执行 pod 命令(虽然报错了)?看到报错后面有几个路径,应该是环境出现了问题,访问:

/usr/local/bin/

果然,该目录下存在 pod、sandbox_pod 二进制文件,想起最初是通过 gem 安装 pod,觉得不好管理,将包括 carthage 在内的工具包统一使用 hombrew 重新安装,过程中二进制文件遗留在了这里,导致虽然通过 brew 卸载 cocoapods,依然能执行 pod 命令。

于是,将该目录下的 pod、sandbox_pod 文件删除,重新执行:

brew install --form cocoapods

即可。

实际上最初直接删除该路径下的二进制文件应该就可以,无需再跟我似的折腾一通。

另外需要说明的一点是,通过 homebrew 安装 cocoapods,其真正的二进制文件在

/usr/local/Cellar/cocoapods/1.11.3_1/libexec/bin

除了 pod、sanbox_pod 外,还有另外三个:fuzzy_match、httpclient、xcodeproj,所以 /usr/local/bin 目录下这几个二进制文件可以一并删除。

但是有一点不明,对比了一下另一台设备(直接使用 homebrew 管理各种包,未使用其他的),在 /usr/local/bin 目录下有 pod 替身文件,但是现在这台设备上重新安装后并未生成替身文件,不清楚是哪里的问题(不影响使用),碰巧看到的同道中人可以指教一下🫡