7

我发现我可以使用以下任何命令成功安装 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 lib 链接(/usr/local 中的那个)?如何判断 ruby​​ 是与哪个 openssl lib 编译/链接的?

我正在使用 Linux Mint 13。

4

2 回答 2

7

怎么样:

ruby -ropenssl -e "puts OpenSSL::VERSION"
于 2012-12-19T17:15:44.020 回答
4

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

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

于 2012-12-19T18:40:57.380 回答