如何分辨其中的openssl lib中实际使用由RVM安装红宝石(How to tell which

2019-07-12 02:06发布

我发现,我能成功地与任何下面的命令安装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或红宝石构建过程不介意无效选项或值。 我不知道如果--with-openssl-dir选项正确的尊重,甚至当我键入它(显然)。

RVM是连接我与OpenSSL的LIB红宝石,我打算(在/ usr /本地的)? 我怎么知道它的OpenSSL库一个Ruby编译/带有链接?

我使用的是Linux Mint的13。

Answer 1:

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=...它不是完全由红宝石支持,它应该是--with-opt-dir=... + --with-openssl ,则可以选择DIR支持多路径分离有:从红宝石1.9.3-P327开始



Answer 2:

怎么样:

ruby -ropenssl -e "puts OpenSSL::VERSION"


文章来源: How to tell which openssl lib is actually being used by an RVM-installed ruby
标签: ruby openssl rvm