使用 rbenv 安裝和管理 Ruby

如果你是Ruby開發者應該知道用rvm來安裝/管理Ruby版本,同時也能用它的gemset功能來管理各個工程的gems。因為rvm過于強大以至于違背了某個Linux軟件開發原則。所以出現了很多輕便的替代者,其中來自37signals的rbenv就很受歡迎。

rbenv可以幫助你在一臺機器上建立多個版本的ruby環境, 并提供方便的切換方法。

注意:rbenv和rvm是不兼容的,所以安裝rbenv之前要先把rvm卸載。

卸載rvm

$ rvm implode

然后再將你zsh或bash中的這一句去掉。

[[ -s"$HOME/.rvm/scripts/rvm"]] && ."$HOME/.rvm/scripts/rvm"# Load RVM function

安裝rbenv

Linux下安裝

rbenv的源代碼托管在github,在終端中從 github上將rbenv源碼clone到本地,然后設置$PATH。

gitclonehttps://github.com/rbenv/rbenv.git ~/.rbenv

Optionally, try to compile dynamic bash extension to speed up rbenv. Don't worry if it fails; rbenv will still work normally:

cd ~/.rbenv && src/configure && make -C src

echo 'exportPATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

echo 'eval"$(rbenv init -)"' >> ~/.bashrc

注意:如果用Zsh,就用~/.zshrc替換~/.bash_profile。

重啟shell或者運行exec $SHELL,就可以開始用rbenv了。

測試rbenv是否設置正常

$typerbenv

#=> "rbenv is a function"

Mac下安裝

如果你有安裝Homebrew的話,可以用以下命令來安裝rbenv和 ruby-build

$ brew install rbenv

$ brew install ruby-build

配置并初始化SHELL

echo'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bashrc

echo'eval "$(rbenv init -)"'>> ~/.bashrc

注意:如果用 Zsh,就用~/.zshrc替換~/.bash_profile。

更新rbenv

cd~/.rbenv

git pull

安裝ruby-build

使用ruby-build可以自動下載編譯安裝Ruby相應的版本,只需指定版本號。

ruby-build是一個rbenv插件,用來編譯安裝Ruby源碼。提供了一個rbenv install命令編譯和安裝類UNIX系統不同版本的Ruby。如果選擇手動編譯,可不使用這個工具。

安裝編譯ruby的依賴

Ubuntu

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

CentOS

yum install -y gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel

安裝ruby-build

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

cd~/.rbenv/plugins/ruby-build

./install.sh

rbenv使用

安裝Ruby

查看可用的ruby版本

rbenv install --list

安裝2.3.0版本

rbenv install 2.3.0

等待一會兒,安裝完畢后可以查看已經安裝的所有Ruby版本

rbenv versions

* system (setby /root/.rbenv/version)

? 2.3.0

顯示所有版本,前面加*的為當前激活的版本。

選擇一個Ruby版本

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

查找版本的優先級是當前終端>本地>全局。

設置全局版本

全局版本是在沒有找到當前終端或本地作用域的設置時執行。通過以下命令設置

rbenv global 2.3.0

設置本地版本

本地作用域是針對各個項目的,通過項目文件夾中的 .rbenv-version 這個文件進行管理,需要將相應的 Ruby 版本號寫入這個文件。所以一般設置這個選項就可以了,這個過程可以通過以下命令執行

rbenvlocal2.3.0

會在當前目錄下生成.rbenv-version文件,此文件會覆蓋rbenv global設定。

如果想取消的話,可以這樣

rbenvlocal--unset

設置當前終端版本

"當前終端"作用域的優先級最高。通過以下命令設置

rbenv shell 2.3.0

使用系統Ruby

如果要使用系統原有的Ruby,則通過system指定

rbenv global system

每當切換ruby版本和執行bundle install之后必須執行這個命令

rbenvrehash

設置完畢后可以通過以下命令進行驗證

whichruby

# ~/.rbenv/shims/ruby

列出目前使用的版本

rbenv version

#2.3.0 (set by RBENV_VERSION environment variable)

列出irb這個命令的完整路徑

rbenvwhichirb

列出包含irb這個命令的版本

rbenvwhenceirb

查看對應Ruby版主的目錄

rbenv prefix

卸載Ruby

直接用用rm -rf 命令刪除~/.rbenv/versions文件夾下對應的Ruby版本即可

如果安裝了 ruby-build 插件,那么使用如下命令即可

rbenv uninstall 2.3.0

查看當前使用的ruby版本

rbenv version

安裝gem

使用rbenv后,gem還是按照原有的方式進行安裝、升級,只是gem的安裝路徑是在~/.rbenv 文件夾中當前Ruby版本文件夾下。而且安裝帶有可執行文件的gem后,需要執行一個特別的命令,告訴rbenv更新相應的映射關系,這個命令在安裝新版本的Ruby后也需要執行

rbenvrehash

安裝rails

gem install bundler rails

檢查安裝后的軟件版本

ruby -v gem -v rake -V rails -v

告訴Rubygems安裝軟件包的時候不安裝文檔

echo"gem: --no-ri --no-rdoc"> ~/.gemrc

一些好用的rbenv插件

ruby-build

自動編譯安裝ruby

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

gemset

管理gemset

gitclonehttps://github.com/jf/rbenv-gemset.git? ~/.rbenv/plugins/rbenv-gemset

rbenv-gem-rehash

通過gem命令安裝完gem后無需手動輸入rbenv rehash命令

gitclonehttps://github.com/rbenv/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash

rbenv-update

通過rbenv update命令來更新rbenv以及所有插件

gitclonehttps://github.com/rkh/rbenv-update ~/.rbenv/plugins/rbenv-update

rbenv-aliases

gitclonehttps://github.com/tpope/rbenv-aliases.git ~/.rbenv/plugins/rbenv-aliases

故障排除

rbenv安裝太慢的解決辦法

rbenv+ruby-build插件,可以直接使用命令rbenv install 2.3.0安裝對應的ruby版本。但這樣太慢,很長時間都在下載。

解決方法

使用國內鏡像源

因為檢查md5sum,所以需要在url后面加個#或者?

$envRUBY_BUILD_MIRROR_URL=https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz# rbenv install 2.3.0

使用wget下載

如果速度還慢,可以用wget先下載完成

$ wget -q https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz -O ~/.rbenv/versions/ruby-2.3.0.tar.gz

$ env RUBY_BUILD_MIRROR_URL=file:///root/.rbenv/versions/ruby-2.3.0.tar.gz# rbenv install 2.3.0

參考文檔

http://www.google.com

http://www.dreamxu.com/install-ruby-on-mac-with-rbenv/

http://www.4wei.cn/archives/1002162

http://iplayboy.tk/troubleshooting/2015-12/centos-install-jekyll.html

http://about.ac/2012/04/install-ruby-with-rbenv.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374