I discovered that I can successfully install ruby with any of the following commands:
我发现我可以使用以下任何命令成功安装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
Regardless of which of the above commands I used, I can then type:
无论我使用哪种上述命令,我都可以输入:
$ 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
I appear to have ssl support regardless of what I do. I guess rvm or the ruby build process don't mind invalid options or values. I have no idea if the --with-openssl-dir
option was respected even when I type it (apparently) correctly.
无论我做什么,我似乎都有ssl支持。我猜rvm或者ruby构建过程并不介意无效的选项或值。我不知道--with-openssl-dir选项是否得到尊重,即使我正确地输入它(显然)。
Is rvm linking my ruby with the openssl lib that I intended (the one in /usr/local)? How do I tell which openssl lib a ruby was compiled/linked with?
rvm是否将我的ruby链接到我想要的openssl lib(/ usr / local中的那个)?如何判断哪个openssl lib编译/链接了ruby?
I'm using Linux Mint 13.
我正在使用Linux Mint 13。
2 个解决方案
#1
4
Ruby has quite complicated mechanisms for detecting libraries, every extension has it's own code for that. Fortunately most of the extensions support pkg-config
so it's possible to force location of *.pc
files:
Ruby有很复杂的检测库的机制,每个扩展都有它自己的代码。幸运的是,大多数扩展都支持pkg-config,因此可以强制* .pc文件的位置:
PKG_CONFIG_PATH=/path/to/openssl/lib/pkgconfig rvm reinstall 1.9.3
rvm use 1.9.3
then after compilation you can verify on OSX:
然后在编译后你可以在OSX上验证:
find $MY_RUBY_HOME -name openssl.bundle | xargs otool -L
or on linux:
或者在linux上:
find $MY_RUBY_HOME -name openssl.so | xargs ldd
as for the --with-openssl-dir=...
it is not fully supported by ruby, it should be --with-opt-dir=...
+ --with-openssl
, opt-dir supports multiple paths separated with :
starting from ruby 1.9.3-p327
至于--with-openssl-dir = ...它不是ruby完全支持的,它应该是--with-opt-dir = ... + --with-openssl,opt-dir支持多个路径分开用:从红宝石1.9.3-p327开始
#2
5
How about:
ruby -ropenssl -e "puts OpenSSL::VERSION"
#1
4
Ruby has quite complicated mechanisms for detecting libraries, every extension has it's own code for that. Fortunately most of the extensions support pkg-config
so it's possible to force location of *.pc
files:
Ruby有很复杂的检测库的机制,每个扩展都有它自己的代码。幸运的是,大多数扩展都支持pkg-config,因此可以强制* .pc文件的位置:
PKG_CONFIG_PATH=/path/to/openssl/lib/pkgconfig rvm reinstall 1.9.3
rvm use 1.9.3
then after compilation you can verify on OSX:
然后在编译后你可以在OSX上验证:
find $MY_RUBY_HOME -name openssl.bundle | xargs otool -L
or on linux:
或者在linux上:
find $MY_RUBY_HOME -name openssl.so | xargs ldd
as for the --with-openssl-dir=...
it is not fully supported by ruby, it should be --with-opt-dir=...
+ --with-openssl
, opt-dir supports multiple paths separated with :
starting from ruby 1.9.3-p327
至于--with-openssl-dir = ...它不是ruby完全支持的,它应该是--with-opt-dir = ... + --with-openssl,opt-dir支持多个路径分开用:从红宝石1.9.3-p327开始
#2
5
How about:
ruby -ropenssl -e "puts OpenSSL::VERSION"