• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

编译安装 ruby-2.0.0-p481 openssl 报错 SSLv3 undefined

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

背景

最近在 deepin/龙心平台上安装应用系统,需要用到 ruby-2.0.0-p481。

下载源码进行编译,报错如下:

即,由于:
ossl_ssl.c:132:27: error: ‘SSLv3_method’ undeclared here (not in a function)

因此:

/ext/openssl make failed

原因

搜索一番,在 stack overflow 发现类似问题。

https://stackoverflow.com/questions/37361891/undefined-symbol-sslv3-method-openssl-so-with-ruby-and-archlinux/37361892

The problem is caused by the ArchLinux OpenSSL package being built without SSLv3 support, as of this commit. I believe that a similar thing has been done in other distros such as Ubuntu.

也就是说 Ruby 自带的openssl 源码包,因为不支持 SSLv3 ,会在 ArchLinux 还有 Ubuntu 系统上产生此类问题。

解决方法

Ruby 官方已经出了该问题的补丁:

https://github.com/ruby/ruby/commit/801e1fe46d83c856844ba18ae4751478c59af0d1

根据补丁内容,主要涉及两个文件:

  1. ext/openssl/extconf.rb
  2. ext/openssl/ossl_ssl.c

就不需要使用补丁工具了,自己手动改,更方便快捷,不同版本的文件,行号可能有些差异:

extconf.rb

 have_func("SSLv2_method")
 have_func("SSLv2_server_method")
 have_func("SSLv2_client_method")
 # ---- add begin -------
 have_func("SSLv3_method")
 have_func("SSLv3_server_method")
 have_func("SSLv3_client_method")
 # ---- add end-------
 have_func("TLSv1_1_method")
 have_func("TLSv1_1_server_method")
 have_func("TLSv1_1_client_method")

ossl_ssl.c

    OSSL_SSL_METHOD_ENTRY(SSLv2_server),
     OSSL_SSL_METHOD_ENTRY(SSLv2_client),
 #endif
 #if defined(HAVE_SSLV3_METHOD) && defined(HAVE_SSLV3_SERVER_METHOD) && \
         defined(HAVE_SSLV3_CLIENT_METHOD) // new add
     OSSL_SSL_METHOD_ENTRY(SSLv3),
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
 #endif // new add
     OSSL_SSL_METHOD_ENTRY(SSLv23),
     OSSL_SSL_METHOD_ENTRY(SSLv23_server),
     OSSL_SSL_METHOD_ENTRY(SSLv23_client),

然后从新 make,可成功编译!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
构建基于Ruby的Lambda函数发布时间:2022-07-14
下一篇:
eclipse ruby插件安装发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap