rbenv:Ruby 多版本管理利器

在 Ruby 开发的世界中,经常需要面对不同项目使用不同 Ruby 版本的情况。这时,一个高效、灵活且易于使用的 Ruby 版本管理工具就显得尤为重要。
rbenv 正是这样一个工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。本文将详细介绍 rbenv 的安装、基本使用以及一些高级特性,帮助你更好地掌握这个强大的工具。
rbenv 简介
rbenv 是一个轻量级的 Ruby 版本管理工具,通过修改环境变量来控制当前使用的 Ruby 版本。它不会干扰系统自带的 Ruby 环境,而是为用户提供一个隔离的 Ruby 运行环境。这意味着你可以根据项目需求,轻松切换到所需的 Ruby 版本,确保项目的兼容性和运行稳定性。
安装 rbenv
Homebrew 安装
在 macOS (或 Linux) 系统上,建议使用 Homebrew 安装 rbenv。详细教程
brew install rbenv ruby-build
Homebrew 详细教程可查看:
在 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)"
执行
source ~/.zshrc或者关闭终端窗口并打开一个新窗口,让我们的更改生效。
克隆 Git 仓库安装
对于更自动化的安装,可以使用 rbenv-installer。如果更喜欢手动方法安装,请按照以下步骤操作。
将 rbenv 克隆到
~/.rbenv:git clone https://github.com/rbenv/rbenv.git ~/.rbenv
配置 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 的作用。
执行
source ~/.zshrc或者关闭终端窗口并打开一个新窗口,让我们的更改生效。
卸载 rbenv
rbenv 的简单性使得临时禁用或从系统中卸载它变得很容易。详细教程
要禁用 rbenv 管理你的 Ruby 版本,只需从 shell 启动配置中注释或删除
rbenv init行即可。这将从 PATH 中删除rbenv shims目录,并且将以后的使用(例如ruby)将执行系统版本 Ruby,完全绕过 rbenv。禁用后,
rbenv仍可在命令行上访问,但你的 Ruby 应用程序不会受到版本切换的影响。要完全卸载 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
- Homebrew:
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-build 和 rbenv-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 开发之旅提供便利!
相关链接
- https://github.com/rbenv/rbenv
- https://github.com/rbenv/ruby-build
- https://github.com/rbenv/rbenv-vars
- https://brew.sh
- Homebrew 酿酒术:精心调配你的 macOS 软件环境
访问博址 liam-i.github.io 获取更佳阅读体验和最新内容。
rbenv:Ruby 多版本管理利器的更多相关文章
- Python 多版本管理利器 pythonbrew
在$HOME目录中管理python安装 简介 pythonbrew是受 perlbrew 和 rvm 启发,在用户的$HOME目录中进行python构建和安装自动化的项目. 另一衍生版本 : pyth ...
- linux下的node版本管理利器:nvm
nvm是一款node版本管理工具,简单来说,如果你想在一个环境下安装多个node版本,并向自由地切换相关版本,那你就需要使用nvm进行版本管理,有点类似pyenv,也是一款python版本管理工具. ...
- centos 6.x安装rvm 配置 Ruby开发环境
rvm是ruby的版本管理工具 还可对ruby进行 安装 卸载 等 1.安装 curl # sudo yum install curl # curl -L get.rvm.io | bash ...
- 【Ruby on Rails 学习一】ubuntu14.04配置rvm与ruby
要安装ruby,首先要安装rvm,借助rvm安装ruby rvm 的全称是 Ruby Version Manager ,是一款由 Wayne E. Seguin 开发的一款命令行工具.rvm 能够让 ...
- 阿里云ubuntu16.04安装ruby
0x0 准备 环境:阿里云轻量服务器ubuntu16.04 目的:安装beef需要的ruby环境 更新软件 sudo apt-get update sudo apt-get upgrade sudo ...
- RVM Ruby 管理工具
1.RVM 简介 1.1 Ruby 简介 Ruby 是一种面向对象的脚本语言,简单易用,功能强大.能跨平台和可移植性好等等.其实就是种脚本语言. Ruby 的软件源使用的是亚马逊的云服务,国内网络环境 ...
- centos 6.5安装rvm 配置 Ruby开发环境
我是用ruby写测试脚本用 安装rvm也是费了好大劲 英文不易看懂 ,是个硬伤! rvm是ruby的版本管理工具 还可对ruby进行 安装 卸载 等 1.安装 curl # sudo yum ...
- Ruby系列文章之1---开发者应该熟悉的10个工具
1. Git Git是进入Ruby这个生态圈首先最应该学会的工具.几乎所有以Ruby开发出来的套件都放在Github上.也就是不管你要下载或修改协作都需要透过Git. 2. RVM Ruby有很多种i ...
- Mac 开发者设置强迫症
Latest commit 2461787 on Mar 1 原文链接 强迫症的 Mac 设置指南 如何配置一个高效的 Mac 工作环境 English Version Table of Conten ...
- python编程【环境篇】- 如何优雅的管理python的版本
简介 之前的文章(Python2还是python3 )中我们提到,建议现在大家都采用python3,因为python2在今年年底将不在维护.但在实际的开发和使用python过程中,我们避免不了还得用到 ...
随机推荐
- C/C++ 项目构建指南:如何使用 Makefile 提高开发效率
Makefile是一个常用的自动化构建工具,它可以为开发人员提供方便的项目构建方式.在C/C++项目中,Makefile可以用来编译.链接和生成可执行文件.使用Makefile的好处是可以自动执行一系 ...
- Docker学习路线5:在 Docker 中实现数据持久化
Docker 可以运行隔离的容器,包括应用程序和其依赖项,与主机操作系统分离.默认情况下,容器是临时的,这意味着容器中存储的任何数据在终止后都将丢失.为了解决这个问题并在容器生命周期内保留数据,Doc ...
- Seaborn风格设置
官方网站:seaborn: statistical data visualization - seaborn 0.11.2 documentation (pydata.org) Seaborn是基于m ...
- 信息泄露漏洞的JS整改方案
引言 ️ 日常工作中,我们经常会面临线上环境被第三方安全厂商扫描出JS信息泄露漏洞的情况,这给我们的系统安全带来了潜在威胁.但幸运的是,对于这类漏洞的整改并不复杂.本文将介绍几种可行的整改方法,以及其 ...
- C语言 02 安装
C 语言的编译器有很多,其中最常用的是 GCC,这里以安装 GCC 为例. Windows 这里以 Windows 11 为例 官方下载地址:https://www.mingw-w64.org/ 选择 ...
- The First 寒假集训の小总结
转眼间十五天的寒假集训已经结束,也学习到了许多新知识,dp,线段树,单调栈和单调队列......,假期过得还是很有意义的,虽然我的两次考试成绩不尽人意(只能怪我自己没有好好理解知识点还有好好做题),但 ...
- k8s 深入篇———— docker 镜像是什么[二]
前言 简单介绍一下docker的镜像. 正文 前面讲到了容器的工作原理了(namespace 限制了时间, cgroup限制了资源),知道docker 历史的也知道,docker 之所以能够称为容器大 ...
- identity4 系列————用户数据持久化篇[六]
前言 前面的例子已经将各种情形下的例子已经介绍了一遍,那么后面就是用户数据持久化该如何处理了. 正文 例子位置: https://github.com/IdentityServer/IdentityS ...
- 一个.NET开源的功能丰富、灵活易用的 Windows 窗口增强神器
前言 通常情况下 Windows 中的软件窗口界面一般只包含还原.移动.大小.最大化.最小化.关闭等几个基本的操作: 今天大姚给大家推荐一个.NET开源.免费(MIT License).功能丰富.灵活 ...
- NICA 校际交流赛#2 游记
\(1\!:\!15\) 到达考场,检测好网络和电脑. 分配任务,sxshm 打前 \(5\) 题,tcy01_QAQ_ 打 \(6,\!7\) 两题,我打后面的题. \(1\!:\!30\) 显得无 ...