rbenv:Ruby 多版本管理利器
在 Ruby 开发的世界中,经常需要面对不同项目使用不同 Ruby 版本的情况。这时,一个高效、灵活且易于使用的 Ruby 版本管理工具就显得尤为重要。
rbenv 正是这样一个工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。本文将详细介绍 rbenv 的安装、基本使用以及一些高级特性,帮助你更好地掌握这个强大的工具。
rbenv 简介
rbenv 是一个轻量级的 Ruby 版本管理工具,通过修改环境变量来控制当前使用的 Ruby 版本。它不会干扰系统自带的 Ruby 环境,而是为用户提供一个隔离的 Ruby 运行环境。这意味着你可以根据项目需求,轻松切换到所需的 Ruby 版本,确保项目的兼容性和运行稳定性。
安装 rbenv
Homebrew 安装
Homebrew 详细教程可查看:
在 shell 中加载 rbenv
运行下面命令,并按照打印的说明进行操作:
例如,下面这个示例,我们运行 rbenv init
后,提示将 eval "$(rbenv init - zsh)"
添加到 ~/.zshrc
文件中,才能自动加载 rbenv。
执行
source ~/.zshrc
或者关闭终端窗口并打开一个新窗口,让我们的更改生效。
克隆 Git 仓库安装
对于更自动化的安装,可以使用 rbenv-installer。如果更喜欢手动方法安装,请按照以下步骤操作。
将 rbenv 克隆到
~/.rbenv
:
配置 shell 来加载 rbenv: 详细教程
对于 bash:
在 macOS (或 Linux) 系统上,bash 通常通过以下方式配置
~/.bash_profile
:
对于 Zsh:
如果你好奇,请查看此处以了解 init 的作用。
执行
source ~/.zshrc
或者关闭终端窗口并打开一个新窗口,让我们的更改生效。
卸载 rbenv
rbenv 的简单性使得临时禁用或从系统中卸载它变得很容易。详细教程
要禁用 rbenv 管理你的 Ruby 版本,只需从 shell 启动配置中注释或删除
rbenv init
行即可。这将从 PATH 中删除rbenv shims
目录,并且将以后的使用(例如ruby
)将执行系统版本 Ruby,完全绕过 rbenv。
禁用后,rbenv
仍可在命令行上访问,但你的 Ruby 应用程序不会受到版本切换的影响。
要完全卸载 rbenv,请执行步骤(1),然后删除 rbenv 根目录。这将删除安装在
`rbenv root`/versions/
下的所有 Ruby 版本:
如果你已使用包管理器安装了 rbenv,则最后一步执行 rbenv 包删除:
Homebrew:
brew uninstall rbenv
Debian、Ubuntu 及其衍生版本:
sudo apt purge rbenv
Archlinux 及其衍生版本:
sudo pacman -R rbenv
rbenv 基本使用
安装 Ruby 版本
rbenv install
命令不随 rbenv 一起提供,而是由 ruby-build 插件提供。
在尝试安装 Ruby 之前,请检查你的构建环境是否具有必要的工具和库。然后:
要对 BUILD FAILED
场景进行故障排除,请查看 ruby-build 讨论部分。
如果
rbenv install
命令找不到,你可以将 ruby-build 作为插件安装:git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
设置 Ruby 版本
安装完后,需要设置 Ruby 版本以完成安装并开始使用 Ruby,你可以使用 rbenv versions
命令查看已安装的版本列表。要切换/设置到特定版本,请运行:
除了 rbenv install
命令之外,你还可以手动下载并编译 Ruby 作为 ~/.rbenv/versions
的子目录。该目录中的内容也可以是安装在文件系统其他位置的 Ruby 版本的符号链接。
安装 Ruby gem
例如,使用 rbenv local 3.3.0
为你的项目选择 Ruby 版本。然后,像平常一样继续安装 gems:
你不应该使用
sudo
来安装 gem。通常,Ruby 版本将安装在你的主目录下,因此你的用户可以写入。如果你在安装 gems 时收到“你没有写入权限”错误,则很可能你的“系统” Ruby 版本仍然是全局默认版本。使用rbenv global <version>
更改它,然后重试。
使用 gem env
检查 gem 的安装位置:
卸载 Ruby 版本
随着时间的推移,你安装的 Ruby 版本将累积在 ~/.rbenv/versions
目录中。
要删除旧的 Ruby 版本,只需 rm -rf
你要删除的版本的目录即可。你可以使用 rbenv prefix
命令查找特定 Ruby 版本的目录,例如 rbenv prefix 3.3.0
。
ruby-build 插件提供了 rbenv uninstall
命令来自动执行删除过程。
常用命令
你需要了解的主要 rbenv 命令是。详细教程
rbenv versions
列出 rbenv 已知的所有 Ruby 版本,并在当前活动版本旁边显示一个星号。
rbenv version
显示当前活动的 Ruby 版本,以及有关其设置方式的信息。
rbenv local
通过将版本名称写入当前目录中的 .ruby-version
文件来设置本地应用程序特定的 Ruby 版本。此版本覆盖全局版本,并且可以通过设置 RBENV_VERSION
环境变量或使用 rbenv shell
命令来覆盖自身。
当不带版本号运行时,rbenv local
会报告当前配置的本地版本。你还可以取消设置本地版本:
rbenv global
通过将版本名称写入 ~/.rbenv/version
文件来设置要在所有 shell 中使用的 Ruby 全局版本。此版本可以通过特定于应用程序的 .ruby-version
文件或通过设置 RBENV_VERSION
环境变量来覆盖。
特殊版本名称 system
告诉 rbenv 使用系统 Ruby(通过搜索 $PATH
来检测)。
当没有版本号运行时,rbenv global
报告当前配置的全局版本。
rbenv shell
通过在 shell 中设置 RBENV_VERSION
环境变量来设置特定于 shell 的 Ruby 版本。此版本覆盖特定于应用程序的版本和全局版本。
当没有版本号运行时,rbenv shell
会报告 RBENV_VERSION
的当前值。你还可以取消设置 shell 版本:
请注意,你需要启用 rbenv 的 shell 集成(安装说明的步骤 3)才能使用此命令。如果你不想使用 shell 集成,你可以简单地自己设置
RBENV_VERSION
变量:export RBENV_VERSION=jruby-9.4.6.0
rbenv rehash
为 rbenv 已知的所有 Ruby 可执行文件安装 shims
(~/.rbenv/versions/*/bin/*
)。通常你不需要运行此命令,因为它会在安装 gems 后自动运行。
rbenv which
显示给定可执行文件的,的完整路径。
rbenv whence
列出包含指定可执行文件名称的所有 Ruby 版本。
环境变量
![](https://static001.geekbang.org/infoq/fa/fad4ba8df2c8dec2e42048763d7503d0.png)
插件支持
rbenv 还支持通过插件来扩展功能。例如,ruby-build 和 rbenv-vars 插件可以让你更方便地安装和管理 Ruby 版本。你可以通过 Homebrew 或直接从 Git 仓库安装这些插件,并使用它们来简化 Ruby 版本的安装和管理过程。
ruby-build
安装 ruby-build
插件的命令如下。详细教程
安装完成后,你可以使用 ruby-build
命令来安装和管理 Ruby 版本,而无需手动下载和编译 Ruby 源代码。
ruby-vars
安装 rbenv-vars
插件的命令如下。详细教程
安装完成后,你可以使用 ruby-vars
命令让你在生成 Ruby 进程之前设置全局和特定于项目的环境变量。
结语
rbenv 是一个功能强大的 Ruby 版本管理工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。通过使用 rbenv,你可以确保你的项目在正确的 Ruby 环境中运行,从而提高开发效率和代码质量。
随着 Ruby 生态系统的不断发展,rbenv 将继续成为开发者不可或缺的工具之一。希望本文能帮助你更好地理解和使用 rbenv,为你的 Ruby 开发之旅提供便利!
文章转载自:liam-i
评论