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

Ruby 2.7.4 & 3.0.0 fails on macOS Big Sur (11.2.3): undeclared identifier RSA_SSLV23_PADDING

尝试在 Intel Mac 11.2.3 上安装 Ruby 2.7.4 & Ruby 3,我在编译期间看到以下错误(使用 [=14= 安装] (https://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!

此外,仅供参考:

❯ openssl version
LibreSSL 2.8.3

ruby-install 负责为您安装 OpenSSL 依赖项,但是 ruby-install 中存在错误,它没有指定需要安装的确切 openssl 版本.值得庆幸的是,这已得到修复:

  1. ruby-install 升级到 >=0.8.3(例如,brew upgrade ruby-install),这会将 ruby 的 openssl 依赖项固定在 1.1
  2. 安装 ruby 3(例如,ruby-install ruby 3.0.2

详情:

这已在 ruby-install 中解决(首次报告为 https://github.com/postmodern/ruby-install/issues/409)。 Homebrew 默认 openssl 为 3.0(最新的主要版本),但 Ruby 尚未添加对 OpenSSL3.0 的支持。因此 openssl 依赖项 ruby-install 试图使用错误的版本(Ruby 仍在 1.1)。

仅供将来参考,如果有人遇到与 rvm 类似的问题,只需使用 brew 卸载 openssl@3 并安装 openssl@1.1