Ubuntu 11.10升级Ruby (1.8.7 --> 1.9.3或者其他任意版本)

时间:2021-07-17 13:33:24

使用apt-get install ruby,安装的默认版本为1.8.7。想要使用更高版本,只能采用手工升级的方式。

方式1 使用RVM(推荐方式)

1 安装RVM

http://rvm.io/rvm/install。注意,不要使用Ubuntu自带的rvm-ruby。如果已经使用apt-get install rvm-ruby安装过,先删除:

sudo apt-get --purge remove ruby-rvm
sudo rm -rf /usr/share/ruby-rvm /etc/rvmrc /etc/profile.d/rvm.sh

检查删除的结果

env | grep rvm

如果有输出内容的话,注销重新登录。

2 安装rvm

sudo \curl -L https://get.rvm.io | sudo bash -s stable
sudo source /etc/profile

3 使用rvm安装指定版本的ruby

rvm list known
rvm install 1.9.3
rvm use 1.9.3

方式2 源代码安装

1 下载源码文件

http://www.ruby-lang.org/en/downloads/,寻找合适的版本。这里选用的是Ruby 1.9.3-p448,本文写作时的最新版本是Ruby 2.0.0-p247

wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz

解压

tar zxvf ./ruby-1.9.3-p448.tar.gz

2 编译前设置

./configure --prefix=/usr\
            --program-suffix=1.9.3\
            --with-ruby-version=1.9.3\
            --disable-install-doc

3 编译和安装

make
sudo apt-get install checkinstall
sudo checkinstall -D -y\
                  --fstrans=no\
                  --nodoc\
                  --pkgname='ruby1.9.3'\
                  --pkgversion='1.9.3-p448'\
                  --provides='ruby'\
                  --requires='libc6,libffi5,libgdbm3,libncurses5,libreadline5,openssl,libyaml-0-2,zlib1g'

4 修改系统默认的命令

update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.3 500\
                        --slave   /usr/bin/ri   ri   /usr/bin/ri1.9.3\
                        --slave   /usr/bin/irb  irb  /usr/bin/irb1.9.3\
                        --slave   /usr/bin/gem  gem  /usr/bin/gem1.9.3\
                        --slave   /usr/bin/erb  erb  /usr/bin/erb1.9.3\
                        --slave   /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.3

如果提示:"update-alternatives: error: alternative gem can't be slave of ruby: it is a master alternative"

通常是由于之前已经安装了旧版本导致,可以尝试:

sudo update-alternatives --remove ri /usr/bin/ri1.8