如何在 CentOS 上升级 Ruby
问题:我在 CentOS 6.5 上安装了带有
rubygems
的 Ruby 软件包。当我尝试启动 Ruby 应用程序时,它无法启动,因为我的 CentOS 系统不满足 Ruby 的最低版本要求(1.9 及更高版本)。如何在 CentOS 上升级 Ruby?
在 CentOS 6.5 上,安装的默认 Ruby 版本是 1.8.7。某些 Ruby 应用程序需要 Ruby 版本 1.9 及更高版本,因此它们无法在原生 CentOS 上正常运行。要在 CentOS 上升级 Ruby,您可以从源代码构建并安装 Ruby。
如果您之前已经使用 yum
安装了 ruby
和 ruby-devel
软件包,请在升级 Ruby 之前先删除它们。
$ sudo yum remove ruby ruby-devel
从源代码构建并安装最新的 Ruby,如下所示。
$ sudo yum groupinstall "Development Tools"
$ sudo yum install openssl-devel
$ wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
$ tar xvfvz ruby-2.1.2.tar.gz
$ cd ruby-2.1.2
$ ./configure
$ make
$ sudo make install
最后,更新 Rubygems 和 Bundler。
$ sudo gem update --system
$ sudo gem install bundler

如果您预装了旧版本 Ruby 的 gem,请更新 gem。
$ sudo gem update
要使用已安装的 Ruby/Rubygems,请打开一个新终端。然后检查已安装的 Ruby 和 Rubygems 的版本,如下所示。
$ ruby --version
$ rubygems --version
故障排除
1. 当我升级 Ruby 后运行 gem
命令时,出现以下错误。
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
要解决此问题,您需要从源代码构建并安装 OpenSSL 的 Ruby 扩展,如下所示。
$ sudo yum install openssl-devel
$ cd ruby-2.1.2/ext/openssl/
$ ruby extconf.rb
$ make top_srcdir="../../"
$ sudo make install top_srcdir="../../"