加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:23:52 所属栏目:百科 来源:网络整理
导读:最近在Arch Linux上进行的OpenSSL更新破坏了 Ruby,因为后者依赖于前者支持的SSLv3.使用OpenSSL的Ruby代码将在终止时出现问题,如下所示: openssl.so: undefined symbol: SSLv3_method - .../openssl.so (LoadError) 我使用RVM的多个版本的Ruby,这个问题适用
最近在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读