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

最后

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

相关推荐
JouJz1 小时前
RabbitMQ深度解析:从核心概念到实战应用
分布式·rabbitmq·ruby
无问8172 天前
RabbitMQ概述和工作模式
分布式·rabbitmq·ruby
互联网搬砖老肖3 天前
运维打铁: Shell 脚本自动化任务编写与优化
运维·自动化·ruby
互联网搬砖老肖3 天前
运维打铁: Ruby 脚本在运维自动化中的应用探索
运维·自动化·ruby
西岭千秋雪_6 天前
RabbitMQ队列的选择
笔记·分布式·学习·rabbitmq·ruby
嘻嘻仙人10 天前
SHA-256算法详解——Github工程结合示例和动画演示
区块链·ruby·哈希算法·sha-256
kk_stoper10 天前
使用Ruby接入实时行情API教程
java·开发语言·javascript·数据结构·后端·python·ruby
Baklib梅梅12 天前
Ruby大会演讲实录:Baklib 如何用 AI 重构内容管理赛道
ruby on rails·前端框架·ruby
幼稚园的山代王14 天前
RabbitMQ 4.1.1初体验-队列和交换机
分布式·rabbitmq·ruby
幼稚园的山代王15 天前
RabbitMQ 4.1.1初体验
分布式·rabbitmq·ruby