“cannot load such file -- openssl” while “gem install”

工作用的 iMac 上一直没有安装 CocoaPods,因为曾经安装时遇到了一个错误,然后比较忙就搁置了,以至于搁置到了现在,今天终于把这遗留问题解决了。

CocoaPods 是应用于 Xcode 工程的第三方库依赖管理工具,可以非常方便地管理工程所需要引用的第三方库。由于它是用 ruby 开发的,所以在 Mac 上安装它是一个非常简单的事情:

1
$ sudo gem install cocoapods

但是当我执行这个命令时,却得到了错误的反馈:

1
2
3
4
ERROR: Loading command: install (LoadError)
cannot load such file -- openssl
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass

其实此时不只是安装 CocoaPods,安装其他大部分的 gem 都会是这个结局,因为找不到 openssl,无法建立加密连接,也就无法开始下载。

系统中是有 openssl 的,而且 openssl 可以正常工作,只是 ruby 找不到它。至于为什么突然找不到了,那就不太清楚了,推测可能是更新 OS X 时引发的问题吧。试了很多方法,各种不奏效,最后通过以下的方法解决了。大体思路是用 rvm 重新安装 openssl,然后重新安装 ruby,并指定 openssl 的路径。

1
2
rvm pkg install openssl
rvm reinstall ruby-2.1 --with-openssl-dir=$rvm_path/usr

都安装完成之后,就可以正常 gem install 啦。