我发现可以使用以下命令成功安装 ruby:
$ rvm reinstall 1.9.3-p327
$ rvm reinstall 1.9.3-p327 --with-openssl-dir=/usr/local
$ rvm reinstall 1.9.3-p327 --with-openssl-dir=/afdlkjasd_not_a_dir
$ rvm reinstall 1.9.3-p327 --with-openssl-dirffadsf=/afdlkjasd_not_a_dir
无论我使用了上述哪个命令,我都可以键入:
$ rvm use 1.9.3-p327
Using /home/clay/rvm/gems/ruby-1.9.3-p327
$ which ruby
/home/clay/.rvm/rubies/ruby-1.9.3-p327/bin/ruby
$ ruby -e "puts require('openssl')"
true
无论我做什么,我似乎都有 ssl 支持。我想 rvm 或 ruby 构建过程不介意无效的选项或值。我不知道即使我(显然)正确输入--with-openssl-dir
选项,也不知道是否尊重它。
rvm 是否将我的 ruby 与我想要的 openssl 库(/usr/local 中的那个)链接起来?如何判断 ruby 是用哪个 openssl 库编译/链接的?
我正在使用Linux Mint 13。
怎么样:
ruby -ropenssl -e "puts OpenSSL::VERSION"
Ruby 有相当复杂的库检测机制,每个扩展都有自己的代码。幸运的是,大多数扩展都支持pkg-config
因此可以强制定位*.pc
文件:
PKG_CONFIG_PATH=/path/to/openssl/lib/pkgconfig rvm reinstall 1.9.3
rvm use 1.9.3
然后在编译后,您可以在 OSX 上验证:
find $MY_RUBY_HOME -name openssl.bundle | xargs otool -L
或在 Linux 上:
find $MY_RUBY_HOME -name openssl.so | xargs ldd
至于 Ruby 不完全支持的--with-openssl-dir=...
,它应该是 --with-opt-dir=...
+ --with-openssl
,opt-dir 支持从 Ruby 1.9.3-p327 开始与:
分开的多条路径