未定义的符号:使用Ruby和ArchLinux的SSLv3_method – … / openssl.so

前端之家收集整理的这篇文章主要介绍了未定义的符号:使用Ruby和ArchLinux的SSLv3_method – … / openssl.so前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近在Arch Linux上进行的OpenSSL更新破坏了 Ruby,因为后者依赖于前者支持的SSLv3.使用OpenSSL的Ruby代码将在终止时出现问题,如下所示:
openssl.so: undefined symbol: SSLv3_method - .../openssl.so (LoadError)

我使用RVM的多个版本的Ruby,这个问题适用于所有版本.

我遇到问题的OpenSSL版本是1.0.2h,但我相信它是用1.0.2g引入的.版本1.0.2f工作正常.

如何克服兼容性问题(没有降级OpenSSL)?

解决方法

问题是由于在没有SSLv3支持的情况下构建的ArchLinux OpenSSL软件包,从 this commit开始.我相信在其他发行版(如Ubuntu)中也做了类似的事情.

RVM环境中的解决方案是重新安装将重建它们的Rubies(您可能还希望更新到最新的rvm):

$rvm get head        # optional,if you want to!
$rvm reinstall all   # or a specifc ruby version instead of 'all'

但是,旧的rubies仍会因为编译错误而失败:

Error running '__rvm_make -j1'
ossl_ssl.c:143:27: error: ‘SSLv3_client_method’ undeclared here (not in a function)

这已经是discussed与RVM团队一起建议安装this Ruby patch,允许更旧的ruby构建:

$curl https://github.com/ruby/ruby/commit/801e1fe46d83c856844ba18ae4751478c59af0d1.diff > openssl.patch
$rvm install --patch ./openssl.patch 1.9.3-p194

我用这个补丁成功构建了ruby-1.9.3-p194,ruby-2.0.0-p247和ruby-2.2.1.

猜你在找的Ruby相关文章