使用RVM安装Ruby 2.7.2时遭遇__rvm_make执行错误
解决RVM安装Ruby 2.7.2时的
ossl_pkey_rsa.c:942:5: error: use of undeclared identifier 'RSA_SSLV23_PADDING'错误 这个错误的核心原因是Ruby 2.7.2的OpenSSL扩展不兼容OpenSSL 3.x版本——OpenSSL 3.0移除了RSA_SSLV23_PADDING这个旧常量,导致编译时找不到标识符。下面提供两种可靠的解决办法:
方法一:指定兼容的OpenSSL 1.1版本编译
这是最稳妥的方案,Ruby 2.7.x系列原生支持OpenSSL 1.1:
- 先通过Homebrew安装OpenSSL 1.1(未安装的话执行):
brew install openssl@1.1
- 用RVM安装Ruby 2.7.2时,指定OpenSSL 1.1的路径:
rvm install 2.7.2 --with-openssl-dir=$(brew --prefix openssl@1.1)
如果你的环境没有Homebrew,也可以用RVM自带的包管理工具安装OpenSSL:
rvm pkg install openssl rvm install 2.7.2 --with-openssl-dir=$HOME/.rvm/usr
方法二:修改Ruby源码替换废弃常量
如果不想额外安装旧版OpenSSL,可以直接修改Ruby源码里的错误行,RSA_SSLV23_PADDING的功能在OpenSSL 3.x中已被RSA_PKCS1_PADDING替代:
- 先让RVM下载Ruby 2.7.2源码但跳过编译安装:
rvm install 2.7.2 --skip-install
- 找到并修改
ossl_pkey_rsa.c文件:
# 打开文件,定位到第942行 vim $HOME/.rvm/src/ruby-2.7.2/ext/openssl/ossl_pkey_rsa.c
将第942行的RSA_SSLV23_PADDING替换为RSA_PKCS1_PADDING
- 重新执行安装命令:
rvm install 2.7.2
内容的提问来源于stack exchange,提问作者R Rifa Fauzi Komara
相关产品推荐
相关产品推荐

