狮子(Lion): RVM安装Ruby出现问题 - 与openssl相关的问题

4

我很着急,已经折腾了两天仍然无法解决以下问题。

在 Lion 系统升级后,我想使用最新版本的 rvm 安装额外的 Ruby 版本。

当我调用 bundler 时发生了以下情况:

/Users/felix/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': dlopen(/Users/janroesner/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/x86_64-darwin11.1.0/digest/sha1.bundle, 9): Symbol not found: _SHA1_Init (LoadError)

好的,openssl问题。我检查了一下,在/usr中没有openssl,但是有库在/usr/lib中,头文件在/usr/include/openssl中。检查。

我决定用brew安装一个更新的版本。然后所有的ruby都无法编译,出现BN_rand_range和BN_peudo_rand_range已经定义的错误。

最近的gcc似乎更加严格,所以我取消了/usr/include/openssl/bn.h文件中的第411和412行注释,这引起了冲突,因为ruby自己也定义了这两个函数。现在ruby可以编译了,但是我收到了相同的错误:Symbol not found: _SHA1_Init。

于是我把之前放在那里的openssl头文件bn.h中的注释删除了,并尝试了相反的方法。我在~/.rvm/src/ruby-1.9.2-p290/ext/openssl/openssl_missing.h中注释掉了这些行。

结果还是一样。

之后,我完全删除了~/.rvm,重新安装它,但是...仍然遇到了同样的问题。

现在我尝试了:

rvm pkg install openssl
rvm remove 1.9.2-p290
rvm install 1.9.2-p290 -C --with-openssl-dir=$rvm_path/usr

同样的结果。

我很绝望。有人能帮忙吗? 谢谢 Felix

2个回答

14

对于任何在 Lion 上遇到此问题的人...这是由 openssl 产生的重复标头问题。你可以简单地在本地安装 openssl,并告诉 rvm 使用该本地版本的 openssl。

你可以手动编译 opnessl,使用前缀 /usr/local ,或者让 rvm 完成这项工作:

rvm pkg install openssl

然后告诉 rvm 在安装 Ruby 时链接到那个版本:

rvm install 1.9.2 --with-openssl-dir=/path/to/your/home/.rvm/usr

如果您已经安装了本地环境,则将其替换为:

rvm install 1.9.2 --with-openssl-dir=/usr/local

不要尝试经常读到的内容:

rvm install 1.9.2 -C --with-openssl-dir=/path/to/your/home/.rvm/usr

那行不通。


0

我已经安装了它,版本从1.8.6到1.8.7、1.9.1和1.9.2,可以在许多应用程序的gemsets上工作。但是在Lion上无法正常工作。 - GeorgieF
你是升级还是全新安装的?那个教程在我全新安装的Lion系统上效果很好。 - Zepplock
嘿,Zepplock,我已经从SnowLeopard升级了。不幸的是,这篇文章没有揭示任何指向我似乎存在的问题的线索。我不明白为什么首先标题定义会发生冲突,而在消除冲突后该功能本身却丢失了。希望能得到一些指引。无论如何,谢谢。 - GeorgieF
顺便说一下,我建议进行全新安装。再买一个固态硬盘也是个好主意,性能会有很大提升。重新安装所有应用程序只花了我半天时间。 - Zepplock
我相信OSX是一个操作系统,不像微软的衍生产品那样需要重新安装系统。 - GeorgieF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接