Gentoo安装Ruby

Gentoo中安装Ruby可以使用发行版内置的ebuild完成,也可以采用 RVM 完成:

  • 对于 Docker 镜像 容器化运行环境(生产),采用直接安装ruby,通过容器来隔离和提供不同ruby版本的运行环境

  • 对于开发测试环境,如果没有 Docker 镜像 容器化运行或者就是想快速切换,则采用 RVM

USE flags

安装

  • 执行 emerge 安装ruby,默认安装稳定版本:

emerge 安装ruby
emerge --ask dev-lang/ruby

当前(2023年12月)默认安装 ruby 3.1.4 稳定版本

此时执行 eselect 检查列表:

检查系统中安装ruby列表
# 查看安装好的ruby版本
eselect ruby list

# 选择ruby33 作为默认版本
eselect ruby set ruby33

显示是 ruby31 :

检查系统中安装ruby列表可以看到是 ruby31
Available Ruby profiles:
  [1]   ruby31 (with Rubygems) *
  • 如果要实现ruby版本更新, 例如需要从 Ruby 3.1.4 升级到 Ruby 3.3.0 (2023年12月的最新release版本) ,那么需要在 /etc/protage/make.conf 中添加 RUBY_TARGETS 变量:

/etc/protage/make.conf 配置Ruby目标版本
# RUBY_TARGETS="ruby25"
RUBY_TARGETS="ruby31 ruby33"
  • 执行 Ruby base 包升级:

使用 emerge 升级ruby base包
emerge --ask --oneshot --update dev-lang/ruby

警告

目前我实践发现,上述 Ruby base 包升级只限于稳定版本,也就是当前稳定版本是 ruby31 ,而 ruby33 尚未进入稳定版本,则 emerge --ask --oneshot --update dev-lang/ruby 实际没有效果。

以后再验证

  • (尚未实践)选择新安装的版本:

通过 eselect 选择安装版本
# 查看安装好的ruby版本
eselect ruby list

# 选择ruby33 作为默认版本
eselect ruby set ruby33
  • 最后执行一次完整系统升级,遮掩够可以避免一些bug,并且会emerge ruby实现,强制所有依赖包重建并使用新安装的ruby进行重构:

最后重建world
emerge --ask --update --deep --newuse @world

参考