如何判断RVM安装的ruby实际上正在使用哪个openssl lib

ant*_*ome 7 ruby openssl rvm

我发现我可以使用以下任何命令成功安装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
Run Code Online (Sandbox Code Playgroud)

无论我使用哪种上述命令,我都可以输入:

$ 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
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我似乎都有ssl支持.我猜rvm或者ruby构建过程并不介意无效的选项或值.--with-openssl-dir即使我正确地输入(明显地)它,我也不知道该选项是否得到尊重.

rvm是否将我的ruby与我想要的openssl lib(/ usr/local中的那个)链接起来?如何判断哪个openssl lib编译/链接了ruby?

我正在使用Linux Mint 13.

hdg*_*ood 7

怎么样:

ruby -ropenssl -e "puts OpenSSL::VERSION"
Run Code Online (Sandbox Code Playgroud)


mpa*_*pis 5

Ruby 有相当复杂的检测库的机制,每个扩展都有自己的代码。幸运的是,大多数扩展都支持pkg-config,因此可以强制定位*.pc文件:

PKG_CONFIG_PATH=/path/to/openssl/lib/pkgconfig rvm reinstall 1.9.3
rvm use 1.9.3
Run Code Online (Sandbox Code Playgroud)

编译完成后可以在 OSX 上验证:

find $MY_RUBY_HOME -name openssl.bundle | xargs otool -L
Run Code Online (Sandbox Code Playgroud)

或者在 Linux 上:

find $MY_RUBY_HOME -name openssl.so | xargs ldd
Run Code Online (Sandbox Code Playgroud)

至于--with-openssl-dir=...ruby不完全支持,应该是--with-opt-dir=...+ --with-openssl, opt-dir 支持:从 ruby​​ 1.9.3-p327 开始分隔的多个路径