Skip to content

Instantly share code, notes, and snippets.

@sandyxu
Last active March 21, 2024 06:23
Show Gist options
  • Save sandyxu/8aceec7e436a6ab9621f to your computer and use it in GitHub Desktop.
Save sandyxu/8aceec7e436a6ab9621f to your computer and use it in GitHub Desktop.
使用 rbenv 安装和管理Ruby版本

常用的几个 Ruby 版本管理工具有:rvmrbenv,ry,rbfu。rvm 应该是最早出现、使用最多的,因为过于强大以至于违背了某个 Linux 软件开发原则,所以出现了很多轻便的替代者,其中来自 37signals 的 rbenv 就很受欢迎。ry 和 rbfu 看上去更轻便,不过使用不广泛。之前使用过rvm, 这次尝试下rbenv。

我的环境是 Ubuntu14.04

1. 安装 rbenv

rbenv的源代码托管在github,在终端中,从 github 上将 rbenv 源码 clone 到本地,然后设置 $PATH。

git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

注意 zsh用户是 ~/.zshrc

2. 安装 ruby-build

ruby-build 用来编译安装 Ruby 源码,如果选择手动编译,可不使用这个工具。

新版的Ruby编译安装有一些依赖,请参考 suggested-build-environment

我在安装的时候由于没有安装上面的依赖,碰到 The Ruby openssl extension was not compiled. Missing the OpenSSL lib? 问题,通过

apt-get install libssl-dev

解决。不过为了万全还是推荐:

apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6 libreadline6-dev zlib1g zlib1g-dev

下面是开始安装 ruby-build:

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

3. 安装 Ruby

查看可用的 ruby版本

rbenv install --list

这里从列表中选择 2.1.2 进行安装:

rbenv install 2.1.2

等待一会儿,安装完毕后可以查看已经安装的所有 Ruby 版本:

rbenv versions

4. 选择一个 Ruby 版本

rbenv 中的 Ruby 版本有三个不同的作用域:全局(global),本地(local),当前终端(shell)。

查找版本的优先级是 当前终端 > 本地 > 全局。

4.1 设置全局版本

全局版本是在没有找到“当前终端”或“本地”作用域的设置时执行。通过以下命令设置:

rbenv global 2.1.2

4.2 设置本地版本

“本地”作用域是针对各个项目的,通过项目文件夹中的 .rbenv-version 这个文件进行管理,需要将相应的 Ruby 版本号写入这个文件。所以一般设置这个选项就可以了,这个过程可以通过以下命令执行:

rbenv local 2.1.2

4.3 设置当前终端版本

“当前终端”作用域的优先级最高。通过以下命令设置:

rbenv shell 2.1.2

4.4 使用系统Ruby

如果要使用系统原有的 Ruby,则通过 system 指定:

rbenv global system

设置完毕后可以通过以下命令进行验证:

which ruby  # ~/.rbenv/shims/ruby 

rbenv version # 2.1.2 (set by ~/.rbenv/version)

5. 安装 gem

使用 rbenv 后,gem 还是按照原有的方式进行安装、升级,只是 gem 的安装路径是在 ~/.rbenv 文件夹中当前 Ruby 版本文件夹下。而且,安装带有可执行文件的 gem 后,需要执行一个特别的命令,告诉 rbenv 更新相应的映射关系,这个命令在安装新版本的 Ruby 后也需要执行:

rbenv rehash

@Dinxin
Copy link

Dinxin commented Apr 9, 2018

请问一下,为什么会在rbenv install 2.1.2的时候会出现以下错误:
Downloading ruby-2.1.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2
error: failed to download ruby-2.1.2.tar.bz2

BUILD FAILED (Ubuntu 16.04 using ruby-build 20180329-2-ge08b257)

@intchensc
Copy link

请问一下,为什么会在rbenv install 2.1.2的时候会出现以下错误: Downloading ruby-2.1.2.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2 error: failed to download ruby-2.1.2.tar.bz2

BUILD FAILED (Ubuntu 16.04 using ruby-build 20180329-2-ge08b257)

这个帮我解决了同样的问题
https://askubuntu.com/questions/1399788/ruby-installation-build-failed-ubuntu-20-04-using-ruby-build-20220324

@ccmywish
Copy link

ccmywish commented Jan 8, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment