如果你是Ruby開發者應該知道用rvm來安裝/管理Ruby版本,同時也能用它的gemset功能來管理各個工程的gems。因為rvm過于強大以至于違背了某個Linux軟件開發原則。所以出現了很多輕便的替代者,其中來自37signals的rbenv就很受歡迎。
rbenv可以幫助你在一臺機器上建立多個版本的ruby環境, 并提供方便的切換方法。
注意:rbenv和rvm是不兼容的,所以安裝rbenv之前要先把rvm卸載。
$ rvm implode
然后再將你zsh或bash中的這一句去掉。
[[ -s"$HOME/.rvm/scripts/rvm"]] && ."$HOME/.rvm/scripts/rvm"# Load RVM function
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"
如果你有安裝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。
cd~/.rbenv
git pull
使用ruby-build可以自動下載編譯安裝Ruby相應的版本,只需指定版本號。
ruby-build是一個rbenv插件,用來編譯安裝Ruby源碼。提供了一個rbenv install命令編譯和安裝類UNIX系統不同版本的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
gitclonehttps://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
cd~/.rbenv/plugins/ruby-build
./install.sh
查看可用的ruby版本
rbenv install --list
安裝2.3.0版本
rbenv install 2.3.0
等待一會兒,安裝完畢后可以查看已經安裝的所有Ruby版本
rbenv versions
* system (setby /root/.rbenv/version)
? 2.3.0
顯示所有版本,前面加*的為當前激活的版本。
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,則通過system指定
rbenv global system
每當切換ruby版本和執行bundle install之后必須執行這個命令
rbenvrehash
設置完畢后可以通過以下命令進行驗證
whichruby
# ~/.rbenv/shims/ruby
rbenv version
#2.3.0 (set by RBENV_VERSION environment variable)
rbenvwhichirb
rbenvwhenceirb
rbenv prefix
直接用用rm -rf 命令刪除~/.rbenv/versions文件夾下對應的Ruby版本即可
如果安裝了 ruby-build 插件,那么使用如下命令即可
rbenv uninstall 2.3.0
rbenv version
使用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
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 -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.dreamxu.com/install-ruby-on-mac-with-rbenv/
http://www.4wei.cn/archives/1002162
http://iplayboy.tk/troubleshooting/2015-12/centos-install-jekyll.html