Linux下如何配置多版本Ruby开发环境

banner

前言

当我们学习任何一个编程语言时,第一步肯定是要在机器上部署该语言的运行环境,对于大部分笔者接触过的语言来说,这不是一个很麻烦的过程,因为笔者之前学习的都是相对热门的方向,也就意味着完善且易懂的操作文档随处可见,只需照着做就可以了。然而,对于一个相对小众的语言 – Ruby来说,安装运行环境就相对要费力了,笔者也在其中花了不少时间才搭建好一个勉强能用的环境。

当然,严格来说,本人搭建时的“费力”有一大半因素是咎由自取:因为某些没缘由的强迫症,所以除非不得不,否则本人不在Windows主力机上安装任何的开发环境。这也是为什么本文的标题是在“Linux”下配置环境。

其实如果在Windows下安装Ruby,过程还是比较简单的,只需下载官网的安装器然后一路下一步即可。

本质上在Linux下过程也是一样的,但由于Linux没有图形界面,加上本人文档阅读能力水平不够,导致过程十分坎坷,当然这里就不多提失败过程了,

概述

整体来看,本人选择的安装方案是使用第三方的Ruby管理器,这么做的原因如下:

  1. 方便版本更新以及切换,我们都知道编程语言更新后往往要涉及到环境变量的同步更新,如果还想旧版新版切换使用,就得不停的重新设置环境变量,这些枯燥的工作交给第三方工具会好得多。

  2. 安装方便,且有一个统一的管理入口。

  3. 被Python的虚拟环境概念搞的有点思维定势,总想着需要有环境管理的工具(最后还是没实现该需求)

这里还要说一句,第三方的管理器有很多,本人用的是rbenv,然而这仅仅因为rbenv在本人机器上安装成功了,实际上并没能实现本人最需要的“虚拟环境”这一需求,因此未来如果有时间,笔者还是会去尝试其它的管理工具,看看有没有哪一个可以实现同版本不同环境的功能。

安装步骤

本次的安装,本人使用的Linux发行版为Ubuntu 22.04 Server版,因此本文不适用其它非Ubuntu系统(有些依赖文件不同)。

具体的安装指令如下,逐行运行即可。

1
2
3
4
5
6
7
8
9
10
11
# 首先我们从github拉取 rbenv 的源码(这里提一句,该工具并没有在 apt 管理器仓库中同步最新文件,所以apt install rbenv不可行)
git clone https://github.com/rbenv/rbenv.git ~/.rbenv

# 运行这一行代码,使 rbenv 服务在每次开启终端连接时注册到shell中
echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc

# 安装 ruby-build 插件,以使用 rbenv install 命令
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

# 安装 rbenv 及 ruby 本体所需的全部依赖
apt-get install autoconf bison patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev

至此,rbenv及所需环境安装完毕,可以进行下一步安装ruby本体了

同样逐行运行下述代码:

1
2
3
4
5
# 显示所有可安装的ruby版本
rbenv install -l

# 安装所需版本,这里以3.2.0为例(verbose可选项是为了能观察到安装进度)
rbenv install 3.2.0 --verbose

rbenv 使用

此时,我们便安装完成,可以进行环境的开启。

rbenv 的运行逻辑是这样的:

每当用户使用ruby指令时,rbenv会接管这一指令,然后先扫描运行时的路径下是否有local区域版本配置文件,如果没有,则使用global全局版本。

基于此,我们便可以根据不同项目设置不同版本的ruby。

首先设置全局版本:

1
rbenv global 3.2.0

如果有区域版本需求,则可以:

1
2
3
4
5
# 传送到项目路径
cd /某某路径

# 配置区域版本,这条指令运行完毕后,会在当前路径下生成一个version文件
rbenv local x.x.x