安装Ruby、多版本Ruby共存、Ruby安装慢问题

rbenv

rbenv能够管理多个版本的ruby。能够分为3种范围(或者说不一样生效做用域)的版本:git

  • local版:本地,针对各项目范围github

  • global版:全局,没有shell和local版时使用global版shell

  • shell版:当前终端,只针对当前所在终端ruby

查找优先级为shell>local>globalbash

1.安装rbenvapp

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

2.安装ruby-build工做,可自动编译安装ruby。它能够做为rbenv的插件。ui

cd
git clone https://github.com/rbenv/ruby-build.git
PREFIX=/usr/local ./ruby-build/install.sh

3.选择ruby版本,安装rubyurl

rbenv install --list
rbenv install 2.6.2

默认状况下,安装是很慢的,由于要从官方下载源码包进行编译,下载的过程很是慢。因此,参见后面解决rbenv安装慢问题spa

若是编译失败,多是少了一些依赖包,在编译失败的时候会提示你执行什么命令来安装这些包(很是人性)。好比须要readline-devel包。插件

yum -y install readline-devel

5.安装完ruby或切换了ruby以后,都须要执行rehash操做,让rbenv知道刚才新装了一个ruby。

rbenv rehash

6.设置ruby版本,即local版、global版、shell版

rbenv global 2.6.2

<a name="installslow"></a>

解决rbenv安装慢问题

方案1

若是慢,能够从 https://cache.ruby-china.com/pub/ruby/ 将ruby对应版本文件下载下来,而后安装。但注意先设置环境变量,而且在此环境变量url以后加上特殊符号"#"或"?":

# 以ruby-2.6.2为例
wget https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.2.tar.bz2 -P ~
RUBY_BUILD_MIRROR_URL='file:///~/ruby-2.6.2.tar.bz2#' rbenv install 2.6.2 --verbose

# 另:也能够设置代理https_proxy=IP:PORT加速下载

方案2

https://cache.ruby-china.com/pub/ruby/ 将ruby对应版本文件下载下来,将文件丢到~/.rbenv/cache目录下。

注意点:

  1. ~/.rbenv/cache目录可能不存在,须要先建立
  2. 下载保存下来的版本可能不是rbenv install时所需的版本,由于同一个版本的文件有.tar.bz2的,有.tar.xz的等等,rbenv对安装不一样的ruby版本使用的文件后缀可能不同(能够先执行如下rbenv install 2.6.3后立马ctrl+c,再去下载显示出来对应后缀的包),因此可能须要下载多个后缀的版本文件丢到cache目录下

如下是一个过程示例:

#  先rbenv install看看使用什么后缀的版本文件
# 这里显示的是使用.tar.bz2后缀的文件
$ rbenv install 2.6.2
Downloading ruby-2.6.2.tar.bz2...
^C

# 因此下载.tar.bz2的文件
$ wget 'https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.2.tar.bz2' -P ~/.rbenv/cache

# 安装便可
$ rbenv install 2.6.2

方案3

有时候上面的方法会失效,不一样版本可能不同。可是,这里可使用一个"安道"写的rbenv插件,让rbenv直接使用中国的镜像站点下载。直接执行下面的命令便可。

git clone https://github.com/andorchen/rbenv-china-mirror.git "$(rbenv root)"/plugins/rbenv-china-mirror

多版本ruby

上面已经装了一个ruby了,如今再装一个ruby 2.6.1:

# 以ruby-2.6.1为例
$ wget https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.1.tar.bz2 -P /root

$ RUBY_BUILD_MIRROR_URL='file:///root/ruby-2.6.1.tar.bz2#' rbenv install 2.6.1 --verbose

$ rbenv rehash

如今,就有了两个版本,可使用rbenv versions命令查看(复数versions表示列出已装全部版本,单数version表示列出当前所使用的ruby版本)。

$ rbenv versions

如今,就能够经过rbenv [local | shell | global] VERSION来设置多版本共存的ruby了。

好比:

$ rbenv local 2.6.1
$ rbenv version

rbenv命令行

$ rbenv --help
Usage: rbenv <command> [<args>]

Some useful rbenv commands are:
   commands    列出rbenv的全部命令列表
   local       设置或显示local application-specific Ruby version
   global      设置或显示global Ruby version
   shell       设置或显示shell-specific Ruby version
   install     使用ruby-build安装指定的ruby版本
   uninstall   卸载指定版本
   rehash      rehash,每次安装完ruby后都要执行,不然rbenv不知道刚才新装ruby的信息
               (rbenv经过检查~/.rbenv/shims来获取ruby信息)
   version     显示当前ruby版本
   versions    显示全部已装ruby版本
   which       显示ruby命令的全路径
   whence      列出包含该可执行命令的全部ruby版本

See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme

完整的命令列表可查看rbenv commands,各命令使用方法,可查看rbenv help COMMAND

相关文章
相关标签/搜索