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命令查看。

最后

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

相关推荐
熊小猿12 小时前
RabbitMQ死信交换机与延迟队列:原理、实现与最佳实践
开发语言·后端·ruby
开开心心就好4 天前
电脑音质提升:杜比全景声安装详细教程
java·开发语言·前端·数据库·电脑·ruby·1024程序员节
zt1985q5 天前
本地部署消息代理软件 RabbitMQ 并实现外部访问( Windows 版本 )
运维·服务器·windows·rabbitmq·ruby
程序员卷卷狗8 天前
RabbitMQ 在拼团系统中的应用:延迟队列、订单超时与消息幂等
rabbitmq·ruby·java-rabbitmq
兜兜风d'8 天前
RabbitMQ消息分发详解:从默认轮询到智能负载均衡
spring boot·分布式·rabbitmq·负载均衡·ruby·java-rabbitmq
ttghgfhhjxkl9 天前
Windows 系统下 RabbitMQ 延迟插件的安装步骤与常见问题修复
windows·rabbitmq·ruby
或与且与或非10 天前
.net 8压榨rabbitMq性能
rabbitmq·.net·ruby
兜兜风d'10 天前
RabbitMQ事务机制详解
数据库·spring boot·分布式·rabbitmq·ruby·java-rabbitmq
小码过河.11 天前
Rabbitmq扇形队列取消绑定交换机之后任然接收消息问题
分布式·rabbitmq·ruby
asdfsdgss11 天前
多项目共享资源:Ruby 定时任务基于 Whenever 的动态扩缩容
java·网络·ruby