公司新到一台电脑需要配置开发环境,在用RVM安装Ruby时遇到了一个奇怪的问题。
执行命令安装Ruby 3.0版本:
rvm install ruby-3.0.0
在编译阶段出现报错:
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版本的时候遇到的:
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.
虽然报错内容不一样,但是也没找到什么好的解决办法。姑且一试这个问题的解决方法:
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl`
不出意外,还是报一样的错误。找来自己使用的电脑和新电脑进行开发环境对比,RVM版本是一致的,不过新电脑上的OpenSSL的版本竟然是当前最新的3.1.1
版本:
OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023)
OpenSSL不是我主动安装的,应该是用HomeBrew安装某个软件时因为依赖了OpenSSL而自动安装的。那么是因为OpenSSL的版本导致的报错吗?
先用HomeBrew安装一个1.1
版本的OpenSSL:
brew install openssl@1.1
安装成功后,指定OpenSSL的版本重新执行安装Ruby的命令:
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
版本的OpenSSLbrew install openssl@1.1
brew uninstall openssl
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl`
如果不想卸载最新版本,可以通过brew link
命令切换(链接)openssl
的版本完成安装:
1.1
版本的OpenSSLbrew install openssl@1.1
1.1
brew link --overwrite openssl@1.1
--overwrite
参数的作用是强制切换。如果不使用该参数,可以先执行brew unlink openssl
命令后再执行brew link openssl@1.1
命令完成切换。
rvm install ruby-3.0.0 --with-openssl-dir=`brew --prefix openssl@1.1`
实测这里需要指定OpenSSL的版本为1.1
,不然还是会报错。补充一点,如果想知道当前使用的OpenSSL是什么版本,可以通过openssl version
命令查看。
如果这篇文章对你有所帮助,请不要吝啬你的点赞加星,谢谢~