RVM报错Error running '__rvm_make -j2' 安装Ruby中断如何解决
故障现象:使用RVM安装Ruby 2.5.5时流程中断,终端抛出两类通用提示:
Error running '__rvm_make -j2', please read /usr/share/rvm/log/1657548775_ruby-2.5.5/make.log:表示__rvm_make -j2编译步骤执行失败,需查看对应路径下的日志文件获取根因There has been an error while running make. Halting the installation.:表示编译流程异常,安装已自动终止
第一步:定位具体错误根因
终端输出的只是通用报错提示,没有实际参考价值,直接执行以下命令拉取日志末尾的核心错误段,匹配对应场景修复即可:
tail -50 /usr/share/rvm/log/1657548775_ruby-2.5.5/make.log
高频报错场景与对应修复方法
场景1:日志出现
openssl/ssl.h: No such file or directory等OpenSSL相关报错
根因是Ruby 2.5.5仅兼容OpenSSL 1.1版本,当前多数新发行版系统默认预装OpenSSL 3.x,版本不兼容导致编译失败。
先安装对应版本的OpenSSL依赖:- Debian/Ubuntu系执行:
sudo apt update && sudo apt install libssl1.1 libssl-dev - CentOS/RHEL系执行:
sudo dnf install openssl1.1 openssl1.1-devel
依赖安装完成后,指定OpenSSL路径重新执行安装:
rvm reinstall 2.5.5 --with-openssl-dir=/usr/include/openssl-1.1- Debian/Ubuntu系执行:
场景2:日志出现
g++: command not found、gcc: No such file or directory等编译工具缺失报错
根因是系统未装齐Ruby编译所需的基础依赖包,补全依赖后重试即可:- Debian/Ubuntu系执行:
sudo apt install build-essential autoconf bison libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev - CentOS/RHEL系执行:
sudo dnf groupinstall "Development Tools" && sudo dnf install libyaml-devel readline-devel zlib-devel ncurses-devel libffi-devel gdbm-devel
- Debian/Ubuntu系执行:
场景3:日志出现
Killed signal terminated program cc1、内存不足相关报错
根因是默认开启的-j2并行编译占用内存超过系统可用上限,触发OOM杀进程。先临时设置单线程编译再重装:export rvm_make_flags="-j1" rvm reinstall 2.5.5场景4:日志出现
__builtin_ctz is not defined、内置函数未定义类报错
根因是Ruby 2.5.5发布时间较早,和GCC 12及以上新版本编译器的编译规则不兼容,指定旧版兼容编译器安装即可:
Debian/Ubuntu系先安装gcc-10工具链:sudo apt install gcc-10 g++-10,再执行重装命令:CC=gcc-10 CXX=g++-10 rvm reinstall 2.5.5
安装验证
修复完成后执行ruby -v,终端返回ruby 2.5.5pXXX (2021-04-05 revision 67949) [x86_64-linux]类版本信息即表示安装成功。
内容的提问来源于stack exchange,提问作者Jose Algusto

