Ruby 2.7.4和3.0.0在macOS Big Sur(11.2.3)上失败:未声明标识符RSA_SSLV23_PADDING

zkure5ic  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(258)

尝试在Intel Mac 11.2.3上安装Ruby 2.7.4和Ruby 3,我在编译过程中看到以下错误(使用ruby-installhttps://github.com/postmodern/ruby-install)安装)。我看到以下错误:

^
ossl_pkey_rsa.c:942:5: error: use of undeclared identifier 'RSA_SSLV23_PADDING'
    DefRSAConst(SSLV23_PADDING);
    ^
ossl_pkey_rsa.c:877:58: note: expanded from macro 'DefRSAConst'
#define DefRSAConst(x) rb_define_const(cRSA, #x, INT2NUM(RSA_##x))
                                                         ^
<scratch space>:144:1: note: expanded from here
RSA_SSLV23_PADDING
^
107 warnings and 1 error generated.
make[2]: *** [ossl_pkey_rsa.o] Error 1
make[1]: *** [ext/openssl/all] Error 2
make: *** [build-ext] Error 2
!!! Compiling ruby 2.7.4 failed!

另外,FYI:

❯ openssl version
LibreSSL 2.8.3
vhmi4jdf

vhmi4jdf1#

仅供将来参考,如果有人遇到类似的rvm问题,只需使用brew卸载openssl@3,然后安装[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)

8cdiaqws

8cdiaqws2#

如果你已经在使用rvm来安装ruby版本,并且已经安装了openssl@3,你可以通过运行以下命令来修复它:

rvm install 3.2.2 --with-openssl-dir=$(brew --prefix openssl@3)

如果你还没有安装openssl@3,你可以使用以下命令安装:

$ brew install openssl@3

我在这个Github问题中找到了这个解决方案

rur96b6h

rur96b6h3#

ruby-install负责为您安装OpenSSL依赖项,但ruby-install中有一个错误,它没有指定需要安装的确切openssl版本。幸运的是,它已经被修复了:
1.将ruby-install升级到>=0.8.3(例如,brew upgrade ruby-install),它将ruby的openssl依赖固定在1.1
1.安装ruby 3(例如ruby-install ruby 3.0.2
详细信息:
这个问题在ruby-install中得到了解决(第一次报告是在https://github.com/postmodern/ruby-install/issues/409中)。Homebrew将openssl默认为3.0(最新的主要版本),但Ruby尚未添加对OpenSSL 3.0的支持。因此,ruby-install试图使用的openssl依赖项是错误的版本(Ruby仍然是1.1)。

相关问题