RVM - 安装最新Ruby版本

本文记录了在开发环境中升级RVM到最新版本并安装Ruby3.2.1的过程,包括遇到的错误及解决方法。在安装Ruby3.2.1时,需要特别处理编译时的依赖问题,如指定OpenSSL的路径。安装完成后,需要注意切换Ruby版本可能需要重新安装gem包,并可能影响已打开的项目,如CocoaPods。此外,为了兼容Ruby3.2,CocoaPods的版本应不低于1.12.0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

研究CocoaPods - 源码调试环境搭建时发现Ruby都已经到了3.2.1版本了,电脑上的RVM还是只能安装3.0.0版本。因为安装Ruby最新版本的过程中遇到了一些问题,所以这里记录一下安装过程。如果你连RVM都还未安装,可以参考这篇文章iOS问题记录 - CocoaPods is installed but broken(续)安装。

开发环境

  • RVM: 1.29.12

安装过程

  1. 切换RVM版本

当前默认安装的RVM版本最高只支持Ruby 3.0版本,如果想要支持更高的Ruby版本,需要执行命令切换分支版本:

rvm get master

切换成功后执行命令:

rvm list known

输出(省略部分):

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.10]
[ruby-]2.5[.9]
[ruby-]2.6[.10]
[ruby-]2.7[.7]
[ruby-]3.0[.5]
[ruby-]3.1[.3]
[ruby-]3[.2.1]
ruby-head

...

可以看到现在已经支持安装Ruby 3.1和3.2版本。rvm list known命令所输出的内容存放在~/.rvm/config/known文件,每当Ruby有新版本时,都会修改这个文件,可以参考RVM开源项目提交记录中的Add Ruby 3.2.1
注意:master分支版本不是稳定版,可能会有一些bug,如果想恢复到原来的稳定版,执行rvm get stable命令切换回稳定版即可。

  1. 安装Ruby 3.2.1版本

安装命令:

rvm install ruby-3.2.1

不出意外的话,执行后应该能安装成功,但是,出意外了,报错如下:

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 3.2.1 --with-openssl-dir=`brew --prefix openssl`

参考自这个issue

  1. 设置默认Ruby版本

安装成功后执行命令:

rvm list

输出:

 * ruby-3.0.0 [ arm64 ]
=> ruby-3.2.1 [ arm64 ]

# => - current
# =* - current && default
#  * - default

可以看到默认Ruby版本不是最新的,虽然当前Ruby版本是最新版本,但是随便新开一个命令行窗口后,当前和默认的Ruby版本都是3.0.0,这时需要设置一下默认Ruby版本。

设置默认Ruby版本命令:

rvm use 3.2.1 --default

到此,当前最新的Ruby版本就安装完成啦!

切换Ruby版本后,要注意:

  1. 原先Ruby版本安装的gem包需要重新安装,不然用到时会报错提示找不到
  2. 切换Ruby版本后可能会因为环境发生了变化导致出现一些报错

例如切换版本前已经用Android Studio打开了Flutter项目,切换完成重新安装CocoaPods后运行报错:

Warning: CocoaPods is installed but broken. Skipping pod install.
  You appear to have CocoaPods installed but it is not working.
  This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
  This can usually be fixed by re-installing CocoaPods.
To re-install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

CocoaPods not installed or not in valid state.

完全退出Android Studio后重新打开恢复正常。

注意事项

  1. CocoaPods

如果你同时有在使用CocoaPods,且版本低于1.12.0,那么可能会遇到这样的报错:

NoMethodError - undefined method `=~' for xxx

这是Ruby 3.2版本做了些改动导致的问题,如果你想要在Ruby 3.2或更高版本正常使用CocoaPods的话,CocoaPods必须升到1.12.0或更高版本。

参考:

  • CocoaPods修复这个问题的PR
  1. Jenkins

如果你有使用Jenkins,通过RVM安装的Ruby环境可能会出现没有生效的情况,进而导致使用该Ruby环境下安装的CocoaPods、Fastlane等工具时会报错。

可以在执行的shell前面加上以下内容确保环境正常:

# 加载RVM
if [ -s "$HOME/.rvm/scripts/rvm" ]; then
    source "$HOME/.rvm/scripts/rvm"
else
    echo "RVM未正确安装或路径有误"
    exit 1
fi

最后

如果这篇文章对你有所帮助,点赞👍收藏🌟支持一下吧,谢谢~


本篇文章由@crasowas发布于CSDN。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值