如何在 Ubuntu 20.04 上安装 Ruby

  • A+
所属分类:刷机教程

Ruby 是当今最流行的语言之一。它有简洁的语法,并且注重简单和生产力上。Ruby 是强大的 Ruby on Rails 框架后面的语言。

在这个指南中,我们将会向你展示在 Ubuntu 20.04 上三种不同的方式去安装 Ruby。

  • 从 Ubuntu 标准源仓库。这是在 Ubuntu 上安装 Ruby 最简单的方式,并且应该适合大部分用户场景。包含在 Ubuntu 源仓库中的 Ruby 版本是2.7.0
  • 使用 Rbenv。一个允许你在同一台机器上安装多个 Ruby 版本的脚本。
  • 使用 Rvm(ruby 环境管理器)。一个更重,并且封装更多功能特性的脚本。它允许你安装,管理,使用多个不同版本的 Ruby。

选择最适合你环境的安装方式。如果你正在开发 Ruby 应用,并且需要多种 Ruby 环境,那么你更偏好安装 Ruby 的方式是 Rbenv 或者 RVM。

如果你不确定你需要安装哪个版本的 Ruby,参考你将要部署的应用的文档。

一、从 Ubuntu 源仓库安装 Ruby

在 Ubuntu 上安装 Ruby 最简单的方式就是使用apt软件包管理工具。在写作本文的时候,Ubuntu 源仓库中 Ruby 的版本是2.7.0,这是一个最新的稳定版本。

安装非常简单直接。以 root 或者其他有 sudo 权限的用户身份来运行下面的命令,来升级软件包索引,并且安装 Ruby:

sudo apt update
sudo apt install ruby-full

一旦完成,通过打印 Ruby 版本号,来验证安装结果:

ruby --version

输出将会像下面这样:

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]

你的 Ruby 版本可能和上面展示的不一样。

就这样。你已经成功地在你的 Ubuntu 机器上安装了 Ruby,并且你可以开始使用它了。

二、使用 Rbenv 安装 Ruby

Rbenv 是一个轻量级命令行工具,它可以让你轻松切换 Ruby 版本。

默认情况下,rbenv 不会安装 Ruby。我们将会使用ruby-build来安装 Ruby。它可以是一个独立的程序,也可以作为 rbenv 的插件。

这个ruby-build脚本从源码安装 Ruby。想要构建 Ruby,安装必要的软件库和编译器:

sudo apt update
sudo apt install git curl autoconf bison build-essential \
    libssl-dev libyaml-dev libreadline6-dev zlib1g-dev \
    libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev

安装 rbenv 工具最简单的方式就是使用 shell 脚本。运行下面的 curl 脚本来下载并执行脚本:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash

这个脚本从 Github 克隆rbenvruby-build仓库到~/.rbenv目录。

这个安装脚本同时会调用另外一个脚本来验证安装过程,脚本输出类似下面这样:

Running doctor script to verify installation...
Checking for `rbenv' in PATH: not found
  You seem to have rbenv installed in `/home/vagrant/.rbenv/bin', but that
  directory is not present in PATH. Please add it to PATH by configuring
  your `~/.bashrc', `~/.zshrc', or `~/.config/fish/config.fish'.

想要开始使用 rbenv,你需要将$HOME/.rbenv/bin添加到你的 PATH 环境变量。

  • 如果你正在使用 Bash
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
  • 如果你正在使用 Zsh:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

运行rbenv -v命令,确保安装成功:

rbenv -v

输出:

rbenv 1.1.2-30-gc879cb0

想要获取已经安装的 Ruby 版本列表,输入:

rbenv install -l

例如,想要安装 Ruby 版本2.7.1,并且将它设置为全局版本,你将输入:

rbenv install 2.7.1
rbenv global 2.7.1

Rbenv 会在你的 PATH 环境变量前面加上一个名为 shims 文件夹。这个文件夹包含了脚本(shims),它负责运行 Ruby 命令,并且执行。

Rbenv 允许你设置 shell,本地和全局的 Ruby 版本:

  • shell 版本在当前的 shell 中可用,拥有最高优先级。它可以通过rbenv shell <ruby-version>命令设置RBENV_VERSION环境变量来定义。
  • 本地版本在每一个目录下设置。这个版本被写在.ruby-version文件。当你运行一个 Ruby 脚本,rbenv 在当前以及所有父目录中搜索这个文件。它使用第一个找到的文件作为 Ruby 版本。想要设置本地版本,切换到这个目录,并且运行rbenv local <ruby-version>命令。
  • 当没有 shell 版本,以及本地版本被设置时,全局版本将会被启用。使用global <ruby-version>来设置全局版本。

当使用 rbenv 管理 Ruby 的时候,不要使用 sudo 来安装 gems。每一个 Ruby 版本都被安装在~/.rbenv/versions目录,并且对用户可写。

三、使用 RVM 安装 Ruby

Rvm 是一个命令行工具, 你可以安装,管理,并且使用多个 Ruby 环境。

安装从源码构建 Ruby 所需要的依赖包:

sudo apt update
sudo apt install curl g++ gcc autoconf automake bison libc6-dev \
        libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libtool \
        libyaml-dev make pkg-config sqlite3 zlib1g-dev libgmp-dev \
        libreadline-dev libssl-dev

运行下面的命令添加 GPG key 并且安装 RVM:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable

想要使用 RVM,加载脚本环境变量,使用source命令:

source ~/.rvm/scripts/rvm

想要获取使用这个工具安装的 Ruby 版本列表,输入:

rvm list known

使用 Rvm 安装最新版本的 Ruby,并且设置为默认的版本:

rvm install ruby
rvm --default use ruby

通过打印版本号,验证 Ruby 是否被正确安装:

ruby -v

输出如下:

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

如果你想要装指定版本的 Ruby,输入下面的命令。替换x.x.x为你想要安装的 Ruby 版本:

rvm install ruby-x.x.x
rvm --default use ruby-x.x.x

想要切换到另外一个版本,但是不设置为默认的 Ruby,输入:

rvm use ruby-x.x.x

想要获取更多关于如何使用 RVM 管理你的 Ruby 安装设置的信息,查看他们的文档页面

四、总结

我们已经向你展示了在 Ubuntu 20.04 上安装 Ruby 的不同方式。选择哪种方式依赖于你的要求和参数。即使通过 Ubuntu 软件源来安装已经被打包好的版本是最简单的方式,但是使用 Rbenv 和 RVM 可以给你更多选择,让你为每个用户选择不同的 Ruby 版本。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: