本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Ruby在 AL2023
Rubyruby3.2或ruby3.4)。 Ruby3.4 还提供了 MRI(Matz's Inter Ruby preter)命名空间二进制文件ruby3.4-mri,它指的是基于 C 的标准参考实现。Ruby但是,一次只能有一个 Ruby 版本处于活动状态。此活动版本提供了默认目录和文件名,例如 ruby、gem 或 bundle,将它们指向当前活动的运行时。
这是利用 alternatives 工具的功能实现的。重要的是要记住,默认的可执行文件名是虚拟的,并且在指向不同安装的 Ruby 版本时可以随时更改。这种灵活性使在 shebang 中使用 ruby 的软件能够在调用时选择所需的版本。但是,当需要特定版本的Ruby时,可以通过调用命名空间可执行文件(例如ruby3.2或ruby3.4)来实现版本的持久性,该可执行文件将始终使用指定的运行时版本。此外,无论当前处于活动状态的运行时如何,gem 和捆绑器工具的命名空间可执行文件(例如ruby3.4-bundler、、或)始终与相应的Ruby版本相关联。ruby3.2-gem ruby3.4-gem ruby3.2-bundler
Ruby以几个以 “” ruby{MAJOR.MINOR} 开头的命名空间包的形式分发。这些软件包提供了 ruby、兼容版本的 gem 和捆绑器工具、文档、库等。例如,core Ruby 3.2 运行时由ruby3.2软件包提供,它作为依赖项引入ruby3.2-rubygems(提供 gem)和ruby3.2-rubygem-bundler(提供捆绑包和捆绑器)。
安装Ruby版本后,配套工具的条目可能会在备选配置中显示为空。这可以通过运行来验证alternatives --display ruby。如果条目显示为空,则必须使用手动注册alternatives --install。例如,要注册 Ruby 3.4 版的所有配套工具,请执行以下操作:
sudo alternatives --install /usr/bin/gem gem /usr/bin/ruby3.4-gem 34 sudo alternatives --install /usr/bin/bundle bundle /usr/bin/ruby3.4-bundle 34 sudo alternatives --install /usr/bin/bundler bundler /usr/bin/ruby3.4-bundler 34 sudo alternatives --install /usr/bin/erb erb /usr/bin/ruby3.4-erb 34 sudo alternatives --install /usr/bin/racc racc /usr/bin/ruby3.4-racc 34 sudo alternatives --install /usr/bin/rdoc rdoc /usr/bin/ruby3.4-rdoc 34 sudo alternatives --install /usr/bin/ri ri /usr/bin/ruby3.4-ri 34
优先级值(例如,3.4 为 34,Ruby3. Ruby 2 为 32)应与主红宝石替代条目中使用的优先级相匹配。注册后,配套工具将与 ruby 替代工具一起自动管理。
alternatives 工具提供了一个用于在 Ruby 版本之间切换的单一命令。默认情况下,alternatives 被配置为处于自动模式,该模式使用优先级来确定当前活动的 Ruby 版本。然而,您可以随时激活任何已安装的版本。目前,所有受支持的 Ruby 版本具有相等的优先级,这意味着第一个安装的版本将自动激活。
使用 alternatives 的一些有用示例
-
检查 alternatives 的配置内容
alternatives --list -
检查 ruby 的当前配置
alternatives --display ruby -
交互式更改 Ruby 版本
alternatives --config ruby -
切换到手动模式并选择特定版本
alternatives --set ruby /usr/bin/ruby{MAJOR.MINOR} -
切换回自动版本选择模式
alternatives --auto ruby