RVM问题记录 - Error running ‘__rvm_make -j10‘

文章目录


前言

公司新到一台电脑需要配置开发环境,在用RVM安装Ruby时遇到了一个奇怪的问题。

开发环境

  • RVM: 1.29.12
  • OpenSSL: 3.1.1

问题描述

执行命令安装Ruby 3.0版本:

shell 复制代码
rvm install ruby-3.0.0

在编译阶段出现报错:

shell 复制代码
ruby-3.0.0 - #compiling - please wait
Error running '__rvm_make -j10',
please read /Users/xxx/.rvm/log/1688010549_ruby-3.0.0/make.log

There has been an error while running make. Halting the installation.

问题分析

这个问题看起来有点熟悉,有点像以前遇到过的问题,不过那是在安装最新Ruby版本的时候遇到的:

shell 复制代码
Error running ' CFLAGS=-O3 ...',
please read /Users/xxx/.rvm/log/1679388668_ruby-3.2.1/configure.log
There has been an error while running configure. Halting the installation.

虽然报错内容不一样,但是也没找到什么好的解决办法。姑且一试这个问题的解决方法:

shell 复制代码
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl`

不出意外,还是报一样的错误。找来自己使用的电脑和新电脑进行开发环境对比,RVM版本是一致的,不过新电脑上的OpenSSL的版本竟然是当前最新的3.1.1版本:

shell 复制代码
OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023)

OpenSSL不是我主动安装的,应该是用HomeBrew安装某个软件时因为依赖了OpenSSL而自动安装的。那么是因为OpenSSL的版本导致的报错吗?

先用HomeBrew安装一个1.1版本的OpenSSL:

shell 复制代码
brew install openssl@1.1

安装成功后,指定OpenSSL的版本重新执行安装Ruby的命令:

shell 复制代码
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl@1.1`

结果还是不行,我怀疑指定的OpenSSL版本可能没生效,于是干脆通过brew uninstall openssl命令把最新版本的OpenSSL卸载了,再次执行上面的命令一切正常🎉!

经测试,当安装有最新版的OpenSSL(brew list中显示openssl@3)时,Ruby 3.0怎么安装都不成功,但是Ruby 3.2.1版本可以安装成功。

解决方案

如果不局限于安装Ruby 3.0版本,那么可以通过安装更高的Ruby版本解决该问题,可以参考这篇文章RVM - 安装最新Ruby版本

如果一定要安装Ruby 3.0版本,请安装1.1版本的OpenSSL,并卸载最新版本,同时指定使用HomeBrew安装的OpenSSL完成安装:

  1. 安装1.1版本的OpenSSL
shell 复制代码
brew install openssl@1.1
  1. 卸载最新版本的OpenSSL
shell 复制代码
brew uninstall openssl
  1. 指定使用HomeBrew安装的OpenSSL完成安装
shell 复制代码
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl`

如果不想卸载最新版本,可以通过brew link命令切换(链接)openssl的版本完成安装:

  1. 安装1.1版本的OpenSSL
shell 复制代码
brew install openssl@1.1
  1. 切换OpenSSL的版本为1.1
shell 复制代码
brew link --overwrite openssl@1.1

--overwrite参数的作用是强制切换。如果不使用该参数,可以先执行brew unlink openssl命令后再执行brew link openssl@1.1命令完成切换。

  1. 指定使用HomeBrew安装的OpenSSL完成安装
shell 复制代码
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl@1.1`

实测这里需要指定OpenSSL的版本为1.1,不然还是会报错。补充一点,如果想知道当前使用的OpenSSL是什么版本,可以通过openssl version命令查看。

最后

如果这篇文章对你有所帮助,请不要吝啬你的点赞👍加星🌟,谢谢~

相关推荐
phltxy2 天前
RabbitMQ集群搭——多机多节点与单机多节点
分布式·rabbitmq·ruby
qiuyepiaoling4 天前
rabbitmq 基础
分布式·rabbitmq·ruby
phltxy5 天前
RabbitMQ TTL与死信队列详解
分布式·rabbitmq·ruby
phltxy6 天前
RabbitMQ 发送方确认与重试机制
分布式·rabbitmq·ruby
phltxy7 天前
RabbitMQ高级特性-消息确认与持久性博客
分布式·rabbitmq·ruby
HEADKON7 天前
匹妥布替尼捷帕力Pirtobrutinib对比伊布替尼治疗套细胞淋巴瘤的缓解率更优
ruby
过期动态8 天前
【RabbitMQ高级篇】生产者可靠性、MQ可靠性、消费者可靠性以及延迟队列的实现
java·数据结构·分布式·算法·rabbitmq·ruby
或与且与或非12 天前
rabbitmq选举集群搭建
分布式·rabbitmq·ruby
hhb_61815 天前
Ruby核心技术难点梳理与实战应用案例解析
服务器·前端·ruby
heimeiyingwang15 天前
【架构实战】RabbitMQ实战:企业级消息可靠传递
架构·rabbitmq·ruby