首页 > 编程语言 >rbenv:Ruby 多版本管理利器

rbenv:Ruby 多版本管理利器

时间:2024-05-23 21:40:19浏览次数:35  
标签:安装 Ruby rbenv 利器 shell 版本 ruby

在 Ruby 开发的世界中,经常需要面对不同项目使用不同 Ruby 版本的情况。这时,一个高效、灵活且易于使用的 Ruby 版本管理工具就显得尤为重要。

rbenv 正是这样一个工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。本文将详细介绍 rbenv 的安装、基本使用以及一些高级特性,帮助你更好地掌握这个强大的工具。

rbenv 简介

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

安装 rbenv

Homebrew 安装

  1. 在 macOS (或 Linux) 系统上,建议使用 Homebrew 安装 rbenv。详细教程

    brew install rbenv ruby-build
    

    Homebrew 详细教程可查看:

  2. 在 shell 中加载 rbenv

    运行下面命令,并按照打印的说明进行操作:

    rbenv init
    

    例如,下面这个示例,我们运行 rbenv init 后,提示将 eval "$(rbenv init - zsh)" 添加到 ~/.zshrc 文件中,才能自动加载 rbenv。

    $ rbenv init
    
    # Load rbenv automatically by appending
    # the following to ~/.zshrc:
    
    eval "$(rbenv init - zsh)"
    
  3. 执行 source ~/.zshrc 或者关闭终端窗口并打开一个新窗口,让我们的更改生效。

克隆 Git 仓库安装

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

  1. 将 rbenv 克隆到 ~/.rbenv:

    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    
  2. 配置 shell 来加载 rbenv: 详细教程

    • 对于 bash:

      在 macOS (或 Linux) 系统上,bash 通常通过以下方式配置 ~/.bash_profile:

      echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bash_profile
      
    • 对于 Zsh:

      echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
      

    如果你好奇,请查看此处以了解 init 的作用

  3. 执行 source ~/.zshrc 或者关闭终端窗口并打开一个新窗口,让我们的更改生效。

卸载 rbenv

rbenv 的简单性使得临时禁用或从系统中卸载它变得很容易。详细教程

  1. 禁用 rbenv 管理你的 Ruby 版本,只需从 shell 启动配置中注释或删除 rbenv init 行即可。这将从 PATH 中删除 rbenv shims 目录,并且将以后的使用(例如 ruby)将执行系统版本 Ruby,完全绕过 rbenv。

    禁用后,rbenv 仍可在命令行上访问,但你的 Ruby 应用程序不会受到版本切换的影响。

  2. 要完全卸载 rbenv,请执行步骤(1),然后删除 rbenv 根目录。这将删除安装在 `rbenv root`/versions/ 下的所有 Ruby 版本:

    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 之前,请检查你的构建环境是否具有必要的工具和库。然后:

rbenv install -l     # 列出最新的稳定版本
rbenv install -L     # 列出所有本地版本
rbenv install 3.3.0  # 安装 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 global 3.3.0   # 设置本机的默认 Ruby 版本,你可以替换为你已安装的版本号
# 或:
rbenv local 3.3.0    # 设置该目录的 Ruby 版本,你可以替换为你已安装的版本号
# 或:
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:

gem install bundler

你不应该使用 sudo 来安装 gem。通常,Ruby 版本将安装在你的主目录下,因此你的用户可以写入。如果你在安装 gems 时收到“你没有写入权限”错误,则很可能你的“系统” Ruby 版本仍然是全局默认版本。使用 rbenv global <version> 更改它,然后重试。

使用 gem env 检查 gem 的安装位置:

gem env home
# => ~/.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 命令来自动执行删除过程。

rbenv uninstall 3.3.0  # 自动执行删除 Ruby 版本

常用命令

你需要了解的主要 rbenv 命令是。详细教程

rbenv versions

列出 rbenv 已知的所有 Ruby 版本,并在当前活动版本旁边显示一个星号。

$ rbenv versions
  system
  2.7.4
* 3.3.0 (set by /Users/liam/.rbenv/version)
  jruby-9.4.6.0
  mruby-3.3.0
  truffleruby-24.0.1

rbenv version

显示当前活动的 Ruby 版本,以及有关其设置方式的信息。

$ rbenv version
3.3.0 (set by /Users/liam/.rbenv/version)

rbenv local

通过将版本名称写入当前目录中的 .ruby-version 文件来设置本地应用程序特定的 Ruby 版本。此版本覆盖全局版本,并且可以通过设置 RBENV_VERSION 环境变量或使用 rbenv shell 命令来覆盖自身。

rbenv local 3.1.2

当不带版本号运行时,rbenv local 会报告当前配置的本地版本。你还可以取消设置本地版本:

rbenv local --unset

rbenv global

通过将版本名称写入 ~/.rbenv/version 文件来设置要在所有 shell 中使用的 Ruby 全局版本。此版本可以通过特定于应用程序的 .ruby-version 文件或通过设置 RBENV_VERSION 环境变量来覆盖。

rbenv global 3.1.2

特殊版本名称 system 告诉 rbenv 使用系统 Ruby(通过搜索 $PATH 来检测)。

当没有版本号运行时,rbenv global 报告当前配置的全局版本。

rbenv shell

通过在 shell 中设置 RBENV_VERSION 环境变量来设置特定于 shell 的 Ruby 版本。此版本覆盖特定于应用程序的版本和全局版本。

rbenv shell jruby-9.4.6.0

当没有版本号运行时,rbenv shell 会报告 RBENV_VERSION 的当前值。你还可以取消设置 shell 版本:

rbenv shell --unset

请注意,你需要启用 rbenv 的 shell 集成(安装说明的步骤 3)才能使用此命令。如果你不想使用 shell 集成,你可以简单地自己设置 RBENV_VERSION 变量:

export RBENV_VERSION=jruby-9.4.6.0

rbenv rehash

为 rbenv 已知的所有 Ruby 可执行文件安装 shims (~/.rbenv/versions/*/bin/*)。通常你不需要运行此命令,因为它会在安装 gems 后自动运行。

rbenv rehash

rbenv which

显示给定可执行文件的,的完整路径。

$ rbenv which irb
/Users/liam/.rbenv/versions/3.3.0/bin/irb

rbenv whence

列出包含指定可执行文件名称的所有 Ruby 版本。

$ rbenv whence rackup
3.3.0
jruby-9.4.6.0
truffleruby-24.0.1

环境变量

名称 默认 描述
RBENV_VERSION 指定要使用的 Ruby 版本。另请参阅 rbenv shell
RBENV_ROOT ~/.rbenv 定义 Ruby 版本和 shims 所在的目录。另请参阅 rbenv root
RBENV_DEBUG 输出调试信息。例如:rbenv --debug <subcommand>
RBENV_HOOK_PATH 查看 wiki 搜索 rbenv hooks 查看路径列表
RBENV_DIR $PWD 开始搜索 .ruby-version 文件的目录

插件支持

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

ruby-build

安装 ruby-build 插件的命令如下。详细教程

# 通过 Homebrew 安装
brew install ruby-build

# 或者通过 Git 安装
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

安装完成后,你可以使用 ruby-build 命令来安装和管理 Ruby 版本,而无需手动下载和编译 Ruby 源代码。

ruby-vars

安装 rbenv-vars 插件的命令如下。详细教程

# 通过 Homebrew 安装
brew install rbenv-vars

# 或者通过 Git 安装
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 获取更佳阅读体验和最新内容。

标签:安装,Ruby,rbenv,利器,shell,版本,ruby
From: https://www.cnblogs.com/liam-i/p/18209426

相关文章

  • 东莞mes系统:提高生产效率的利器
    东莞作为中国制造业的重要基地之一,拥有众多制造企业,其中不乏一些领先的MES系统供应商。这些MES系统供应商致力于为东莞的制造企业提供智能制造解决方案,帮助企业提高生产效率、降低生产成本、提升产品质量。 MES系统在东莞的制造企业中被广泛应用,成为提高生产效率的利器。通过......
  • 提升网络性能,解决故障利器——AnaTraf网络流量分析
    在当今数字化时代,网络性能对于企业的运营和发展至关重要。然而,随着网络规模的不断扩大和复杂性的增加,网络故障的排查和解决变得愈发困难。为了帮助企业提升网络性能并快速解决故障,AnaTraf推出了一款高性能的实时网络流量分析工具——AnaTraf网络流量分析仪。AnaTraf网络流量分析......
  • 网络性能监控利器——AnaTraf网络流量分析仪,实时流量回溯分析助您快速排除网络故障
    在当今信息爆炸的时代,网络已经成为了人们生活和工作的重要组成部分。然而,随着网络规模的不断扩大和复杂性的增加,网络性能监控和故障排除变得越来越重要。为了保证网络的稳定性和高效性,网络性能监控与诊断(NPMD)已经成为了企业和组织的必备工具。而在这个领域中,AnaTraf网络流量分析仪......
  • SSH 简介:安全远程访问的利器
    简介SSH(SecureShell)是一种加密网络协议,用于在不安全的网络上安全地传输数据。它最常用于远程登录到计算机系统,并在远程系统上执行命令,也可以用于传输文件。SSH的加密特性使得通信过程安全可靠,成为许多系统管理员和开发者的首选工具。本文将介绍SSH的基本概念、用法和一些实......
  • Java开发利器Commons Lang之元组Tuple
    标准Java库没有提供足够的方法来操作其核心类,ApacheCommonsLang提供了这些额外的方法。ApacheCommonsLang为java提供了大量的帮助工具。langAPI,特别是String操作方法、基本数值方法、对象反射、并发、创建和序列化以及System属性。此外,它还包含对java.util.Date的基本增......
  • 串口U盘 - 基于STM32+CH375的郁闷的工程师利器+Arduino Laser Infrared Thermometer -
    1、串口U盘-基于STM32+CH375的郁闷的工程师利器辛勤地打工的工程师们,你们是否曾经有过这样的经历,自己辛辛苦苦为公司写的代码和设计的PCB,却无论如何都不能据为己有?因为公司不允许个人电脑上网,因为公司的电脑居然把USB口也封闭了!这时候,我们是万般地郁闷,但是,作为一个以电子开发......
  • 表单设计器开源:助力提质增效的办公利器
    在激烈的市场竞争之下,拥有过硬的技术和本领的企业,就能在市场中提升市场竞争力,斩获更多市场份额。作为提质增效的办公利器,低代码技术平台、表单设计器开源拥有理想的优势特点,如操作灵活、易维护、可视化界面等,都深受客户朋友的喜爱。想要更好地利用数据,提高办公效率,可以随时来了解......
  • Appium Inspector与Weditor:移动端测试的利器
    简介元素定位工具是在软件开发和自动化测试中精确定位和操作用户界面元素的工具。元素定位工具可以提供辅助定位元素、编写代码、录制用例、调试代码等功能。在移动端应用的自动化测试中,一款灵活的元素定位工具是必不可缺的,本节推荐两种定位工具,分别为官网提供的AppiumInspetor......
  • GUI利器 python界面开发PySimpleGUI
    大家好,很多人都想写一个自己的桌面程序,那么PySimpleGUI 是一个非常好的选择,它旨在简化GUI(图形用户界面)的创建过程。它基于几种流行的PythonGUI库,如tkinter、Qt、WxPython和Rem)i,但提供了一个更简单直观的接口。通过PySimpleGUI,即使是没有图形界面开发经验的开发者也可以......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-42-强大的可视化追踪利器Trace
    1.简介在我们日常执行自动化测试工作的过程中,经常会遇到一些偶发性的bug,但是因为bug是偶发性的,我们不一定每次执行都能复现,所以我们在测试执行的时候,追踪用例执行就变得非常重要了。playwright提供了一个PlaywrightTraceViewer工具来追踪测试执行,这是一个GUI工具,我们可以通过它......