使用 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阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352