安裝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

相關文章
相關標籤/搜索