rbenv:Ruby 多版本管理利器

打印 上一主题 下一主题

主题 847|帖子 847|积分 2541


在 Ruby 开发的世界中,经常须要面临差别项目使用差别 Ruby 版本的环境。这时,一个高效、灵活且易于使用的 Ruby 版本管理工具就显得尤为紧张。
rbenv 正是如许一个工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。本文将详细介绍 rbenv 的安装、基本使用以及一些高级特性,帮助你更好地掌握这个强大的工具。
rbenv 简介

rbenv 是一个轻量级的 Ruby 版本管理工具,通过修改环境变量来控制当前使用的 Ruby 版本。它不会干扰体系自带的 Ruby 环境,而是为用户提供一个隔离的 Ruby 运行环境。这意味着你可以根据项目需求,轻松切换到所需的 Ruby 版本,确保项目标兼容性和运行稳定性。
安装 rbenv

Homebrew 安装


  • 在 macOS (或 Linux) 体系上,建议使用 Homebrew 安装 rbenv。详细教程
    1. brew install rbenv ruby-build
    复制代码
    Homebrew 详细教程可查看:

  • 在 shell 中加载 rbenv
    运行下面命令,并按照打印的阐明进行操纵:
    1. rbenv init
    复制代码
    例如,下面这个示例,我们运行 rbenv init 后,提示将 eval "$(rbenv init - zsh)" 添加到 ~/.zshrc 文件中,才能主动加载 rbenv。
    1. $ rbenv init
    2. # Load rbenv automatically by appending
    3. # the following to ~/.zshrc:
    4. eval "$(rbenv init - zsh)"
    复制代码
  • 执行 source ~/.zshrc 大概关闭终端窗口并打开一个新窗口,让我们的更改见效。
克隆 Git 堆栈安装

对于更主动化的安装,可以使用 rbenv-installer。如果更喜欢手动方法安装,请按照以下步骤操纵。

  • 将 rbenv 克隆到 ~/.rbenv:
    1. git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    复制代码
  • 配置 shell 来加载 rbenv: 详细教程

    • 对于 bash:
      在 macOS (或 Linux) 体系上,bash 通常通过以下方式配置 ~/.bash_profile:
      1. echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bash_profile
      复制代码
    • 对于 Zsh:
      1. echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
      复制代码
    如果你好奇,请查看此处以相识 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 版本:
    1. rm -rf "$(rbenv root)"
    复制代码
    如果你已使用包管理器安装了 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 之前,请查抄你的构建环境是否具有须要的工具和库。然后:
  1. rbenv install -l     # 列出最新的稳定版本
  2. rbenv install -L     # 列出所有本地版本
  3. rbenv install 3.3.0  # 安装 Ruby 版本
复制代码
要对 BUILD FAILED 场景进行故障清除,请查看 ruby-build 讨论部门
如果 rbenv install 命令找不到,你可以将 ruby-build 作为插件安装:
  1. git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
复制代码
设置 Ruby 版本

安装完后,须要设置 Ruby 版本以完成安装并开始使用 Ruby,你可以使用 rbenv versions 命令查看已安装的版本列表。要切换/设置到特定版本,请运行:
  1. rbenv global 3.3.0   # 设置本机的默认 Ruby 版本,你可以替换为你已安装的版本号
  2. # 或:
  3. rbenv local 3.3.0    # 设置该目录的 Ruby 版本,你可以替换为你已安装的版本号
  4. # 或:
  5. rbenv shell 3.3.0   # shell 环境,切换到 Ruby 3.3.0 版本,你可以替换为你已安装的版本号
复制代码
除了 rbenv install 命令之外,你还可以手动下载并编译 Ruby 作为 ~/.rbenv/versions 的子目次。该目次中的内容也可以是安装在文件体系其他位置的 Ruby 版本的符号链接。
安装 Ruby gem

例如,使用 rbenv local 3.3.0 为你的项目选择 Ruby 版本。然后,像平常一样继承安装 gems:
  1. gem install bundler
复制代码
你不应该使用 sudo 来安装 gem。通常,Ruby 版本将安装在你的主目次下,因此你的用户可以写入。如果你在安装 gems 时收到“你没有写入权限”错误,则很可能你的“体系” Ruby 版本仍然是全局默认版本。使用 rbenv global  更改它,然后重试。
使用 gem env 查抄 gem 的安装位置:
  1. gem env home
  2. # => ~/.rbenv/versions/<version>/lib/ruby/gems/...
复制代码
卸载 Ruby 版本

随着时间的推移,你安装的 Ruby 版本将累积在 ~/.rbenv/versions 目次中。
要删除旧的 Ruby 版本,只需 rm -rf 你要删除的版本的目次即可。你可以使用 rbenv prefix 命令查找特定 Ruby 版本的目次,例如 rbenv prefix 3.3.0。
ruby-build 插件提供了 rbenv uninstall 命令来主动执行删除过程。
  1. rbenv uninstall 3.3.0  # 自动执行删除 Ruby 版本
复制代码
常用命令

你须要相识的主要 rbenv 命令是。详细教程
rbenv versions

列出 rbenv 已知的所有 Ruby 版本,并在当前活动版本旁边表现一个星号。
  1. $ rbenv versions
  2.   system
  3.   2.7.4
  4. * 3.3.0 (set by /Users/liam/.rbenv/version)
  5.   jruby-9.4.6.0
  6.   mruby-3.3.0
  7.   truffleruby-24.0.1
复制代码
rbenv version

表现当前活动的 Ruby 版本,以及有关其设置方式的信息。
  1. $ rbenv version
  2. 3.3.0 (set by /Users/liam/.rbenv/version)
复制代码
rbenv local

通过将版本名称写入当前目次中的 .ruby-version 文件来设置当地应用程序特定的 Ruby 版本。此版本覆盖全局版本,并且可以通过设置 RBENV_VERSION 环境变量或使用 rbenv shell 命令来覆盖自身。
  1. rbenv local 3.1.2
复制代码
当不带版本号运行时,rbenv local 会报告当前配置的当地版本。你还可以取消设置当地版本:
  1. rbenv local --unset
复制代码
rbenv global

通过将版本名称写入 ~/.rbenv/version 文件来设置要在所有 shell 中使用的 Ruby 全局版本。此版本可以通过特定于应用程序的 .ruby-version 文件或通过设置 RBENV_VERSION 环境变量来覆盖。
  1. rbenv global 3.1.2
复制代码
特殊版本名称 system 告诉 rbenv 使用体系 Ruby(通过搜索 $PATH 来检测)。
当没有版本号运行时,rbenv global 报告当前配置的全局版本。
rbenv shell

通过在 shell 中设置 RBENV_VERSION 环境变量来设置特定于 shell 的 Ruby 版本。此版本覆盖特定于应用程序的版本和全局版本。
  1. rbenv shell jruby-9.4.6.0
复制代码
当没有版本号运行时,rbenv shell 会报告 RBENV_VERSION 的当前值。你还可以取消设置 shell 版本:
  1. rbenv shell --unset
复制代码
请注意,你须要启用 rbenv 的 shell 集成(安装阐明的步骤 3)才能使用此命令。如果你不想使用 shell 集成,你可以简单地自己设置 RBENV_VERSION 变量:
  1. export RBENV_VERSION=jruby-9.4.6.0
复制代码
rbenv rehash

为 rbenv 已知的所有 Ruby 可执行文件安装 shims (~/.rbenv/versions/*/bin/*)。通常你不须要运行此命令,因为它会在安装 gems 后主动运行。
  1. rbenv rehash
复制代码
rbenv which

表现给定可执行文件的,的完整路径。
  1. $ rbenv which irb
  2. /Users/liam/.rbenv/versions/3.3.0/bin/irb
复制代码
rbenv whence

列出包罗指定可执行文件名称的所有 Ruby 版本。
  1. $ rbenv whence rackup
  2. 3.3.0
  3. jruby-9.4.6.0
  4. truffleruby-24.0.1
复制代码
环境变量

名称默认形貌RBENV_VERSION指定要使用的 Ruby 版本。另请参阅 rbenv shellRBENV_ROOT~/.rbenv定义 Ruby 版本和 shims 所在的目次。另请参阅 rbenv rootRBENV_DEBUG输出调试信息。例如:rbenv --debug RBENV_HOOK_PATH查看 wiki搜索 rbenv hooks 查看路径列表RBENV_DIR$PWD开始搜索 .ruby-version 文件的目次插件支持

rbenv 还支持通过插件来扩展功能。例如,ruby-buildrbenv-vars 插件可以让你更方便地安装和管理 Ruby 版本。你可以通过 Homebrew 或直接从 Git 堆栈安装这些插件,并使用它们来简化 Ruby 版本的安装和管理过程。
ruby-build

安装 ruby-build 插件的命令如下。详细教程
  1. # 通过 Homebrew 安装
  2. brew install ruby-build
  3. # 或者通过 Git 安装
  4. git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
复制代码
安装完成后,你可以使用 ruby-build 命令来安装和管理 Ruby 版本,而无需手动下载和编译 Ruby 源代码。
ruby-vars

安装 rbenv-vars 插件的命令如下。详细教程
  1. # 通过 Homebrew 安装
  2. brew install rbenv-vars
  3. # 或者通过 Git 安装
  4. git clone https://github.com/rbenv/rbenv-vars.git "$(rbenv root)"/plugins/rbenv-vars
复制代码
安装完成后,你可以使用 ruby-vars 命令让你在生成 Ruby 进程之前设置全局和特定于项目标环境变量。
结语

rbenv 是一个功能强大的 Ruby 版本管理工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。通过使用 rbenv,你可以确保你的项目在正确的 Ruby 环境中运行,从而提高开发服从和代码质量。
随着 Ruby 生态体系的不断发展,rbenv 将继承成为开发者不可或缺的工具之一。希望本文能帮助你更好地理解和使用 rbenv,为你的 Ruby 开发之旅提供便利!
相关链接


访问博址 liam-i.github.io 获取更佳阅读体验和最新内容。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表