后知后觉...
主要是 rvm 几点不太爽:
rbenv 就没这些问题。brew install rbenv ruby-build rbenv-gem-rehash
改改启动脚本就好了,弄起来还挺简单的,重新安装 ruby 速度也飞快
CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" rbenv install -k -v 2.1.0-dev
我觉着用 10.9 自带的 Ruby,然后改改 $GEM_HOME 成 ~/.gem/ruby/2.0.0
,并且把 $GEM_HOME/bin 加到 $PATH 就 OK 了
How good is it? I don't know, I've been using it for less than 24 hours. Seems good.
话说以前装过多次 on my zsh + rvm 一直没出过问题,昨天重装了系统安装 rvm 失败才发现官网和 stackoverflow 上都说两者不太兼容。。。。
我是从 rbenv 换到了 rvm.
原因是自己用 rbenv 编出来的老是不能在 irb 里面输入中文,虽然知道其根本原因是使用了错误的 readline 库,但是一直都处理不好,一怒之下就换了 rvm.
另外 rvm 良好的处理了多用户服务器环境下的管理。比如我用 root 安装 rvm 和 ruby, 但是用另一个普通用户运行 app 这种场景,rvm 能帮你搞定。而 rbenv 则需要你有一定的 SA 能力才能处理好。
真正让我选择 rvm 的原因是:
再求教一下,列出的理由 2 和 3, 我其实没看懂。
#33 楼 @ruohanc 我这 readline 正常... 用 ruby-build 装不会出什么问题啊
我有 .bashrc 和 .zshrc 同时载入一个公共的 .profile, 如果把 rvm 环境脚本放到 .profile 中,每次升级 rvm 都会提示,很烦人,不得已就放了两份。
rvm 通过 autolib 管理依赖的,然后 rvm 就把依赖隐藏起来了不让你知道了,如果把 autolib 级别调低,明明装了一个 libyaml 但版本不是它喜欢的就不能通过很蛋疼。在 linux 上我完全可以在无管理员权限的状态下把所有依赖和 ruby 都编译好放到一个目录中交给 rbenv, 用 rvm 就不行。rbenv 有目录就可以切换了,拷贝 binary ruby 可以连带 gem 一起拷,而 rvm 的 gem 和 ruby 都不在一个地方的...
#35 楼 @ruohanc rvm 自带了一个叫做 rubygems-bundler 的东西,结果 gem 带的可执行文件都会被它加上个 no exec wrapper 非常恶心,这个东西和新版本 rubygems 检查 Gemfile 的特性是打架的...
ok 基本搞定,Rbenv 系统级的安装,也解决了权限问题,使用了组权限。把需要完全控制 rbenv 的用户加入 rbenv 组就可以了
GIST: https://gist.github.com/crhan/8064624#file-rbenv-install-system-wide-sh
RBENV_PREFIX="/usr/local/rbenv"
RBENV_GROUP="rbenv"
## Install rbenv
git clone git://github.com/sstephenson/rbenv.git $RBENV_PREFIX
## Add rbenv to the path:
echo '# rbenv setup' > /etc/profile.d/rbenv.sh
echo "export RBENV_ROOT=${RBENV_PREFIX}" >> /etc/profile.d/rbenv.sh
echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
chmod +x /etc/profile.d/rbenv.sh
source /etc/profile.d/rbenv.sh
## set rbenv group property
groupadd $RBENV_GROUP
chown -R :rbenv $RBENV_PREFIX
sudo find $RBENV_PREFIX -type f -perm /100 -exec chmod g+x {} \;
sudo find $RBENV_PREFIX -type f -perm /200 -exec chmod g+w {} \;
sudo find $RBENV_PREFIX -type d -exec chmod g+rwxXs {} \;
## Install ruby-build:
pushd /tmp
git clone git://github.com/sstephenson/ruby-build.git
cd ruby-build
./install.sh
popd
## Install Ruby 1.9.2-p290:
#rbenv install 1.9.3-p484
#rbenv global 1.9.3-p484
## Rehash:
#rbenv rehash
想问各位大大:
我在 centos6 下安装的 rbenv,
再用 rbenv 安装 ruby2.1.0 和 1.9.3 都没问题,
然后我用 gem install rails 也没问题,
但:
当我,rails new blog 的时候,报错了:
/home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in require': /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/2.1.0/x86_64-linux/digest/md5.so: undefined symbol: rb_Digest_MD5_Init - /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/2.1.0/x86_64-linux/digest/md5.so (LoadError)
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in
require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.0.4/lib/rails/generators/app_base.rb:1:in <top (required)>'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in
require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.0.4/lib/rails/generators/rails/app/app_generator.rb:1:in
'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in
require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.0.4/lib/rails/commands/application.rb:29:in <top (required)>'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in
require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.0.4/lib/rails/cli.rb:15:in
'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:45:in
require'
from /home/zengfb/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.0.4/bin/rails:9:in <top (required)>'
from /home/zengfb/.rbenv/versions/2.1.0/bin/rails:23:in
load'
from /home/zengfb/.rbenv/versions/2.1.0/bin/rails:23:in `
#39 楼 @u1384048594 大概是安装 ruby 前没把 openssl 装上的问题,参考:
sudo yum -y install sqlite-devel sqlite openssl openssl-devel readline-devel readline compat-readline5 libxml2-devel libxslt-devel libcurl curl wget git