CentOS6.x Ruby-1.9.3

CentOS6.xの64ビット版にRuby-1.9.3をRPM化してインストールする際の構築記録です



CentOS6.4デフォルトのRubyのバージョンは1.8.7です

やや古いので、これだとRedmineの最新バージョンを動かすことはできません

Rubyのソースからビルドしてインストールすれば何も問題はないのですが、Redhat系ディストリビューションですのでRuby-1.9.3をRPM化してインストールしてみます

RPM化してインストールするとパッケージ管理できますので、アンインストールやバージョン管理に何かと都合が良いです

では、作業を開始します

開発ツール(Development Tools)のインストール

Rubyソースをビルドする為にはコンパイラ等が必要です

その為、ソースをビルドしたりRPM化したりする為のパッケージグループ「開発者ツール」をyumにてインストールします

rootにて以下を実行します

# yum groupinstall 'Development Tools'
または
# yum groupinstall '開発ツール'

Rubyのビルドに必要なその他のパッケージのインストール

Rubyのビルドに必要なパッケージをインストールします

rootにて以下を実行します

# yum install readline-devel libyaml-devel
# yum install gdbm-devel tcl-devel openssl-devel db4-devel

注意

libyaml-develをyumでインストールするにははEPELリポジトリを追加する必要があります

EPELリポジトリの方法は以下です

# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

EPELリポジトリの詳しい追加方法については[CentOS]yumでサードパーティ製リポジトリを使用するを参照してください

一般ユーザでRPMをビルドできる環境の作成

RPMの作成にはrpmbuildコマンドを使います

rootユーザでもRPMは作成できますが、ここでは一般ユーザでRPMが作成できる様に環境を整えます

ここでは、一般ユーザ foo として環境を作成することとします

ユーザ foo にて以下を実行します

$ mkdir -p ~/rpm/{BUILD,SOURCES,SPECS,SRPMS,RPMS}

また、以下の内容の ~/.rpmmacros ファイルを作成します

%_topdir  /home/foo/rpm

Ruby-1.9.3のRPMの作成

いよいよRubyをビルドしてRPM化します

Rubyのバージョンは、現時点で最新のRuby-1.9.3-p448です

この作業は一般ユーザ(先ほど一般ユーザでRPMのBUILDができる環境を作成ユーザ foo)で行います

ソースの配置

Ruby-1.9.3(現時点の最新は1.9.3-p448)のソースを取得し、~/rpm/SOURCESに配置します

$ cd ~/rpm/SOURCES
$ wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz

SPECファイルの取得・配置

RPMを生成する為に必要なSPECファイルを取得し、~/rpm/SPECSに配置します

SPECファルは、GitHubに公開されているものを利用したいと思います

ここのSPECファイルの内容のファイル ~/rpm/SPECS/ruby.spec を作成します

SPECファイルの修正

インストールするRubyは1.9.3-p448なので、ruby.specを以下の様に修正します

$ diff ruby.spec.org ruby.spec
2c2
< %define rubyminorver p0
---
> %define rubyminorver p448
6c6
< Release: 2%{?dist}
---
> Release: 1%{?dist}

RPMの作成

rpmbuildコマンドでRPMファイルを生成します

$ rpmbuild -bb ~/rpm/SPECS/ruby.spec

処理が正常終了すると、64bitの場合、~/rpm/RPMS/x86_64/以下に ruby-1.9.3p448-1.el6.x86_64.rpm が生成されます

補足

rpmbuildコマンド実行時、パラメータを -ba とすると、ソースRPM(SRPM)も同時に生成してくれます

$ rpmbuild -ba ~/rpm/SPECS/ruby.spec

RPM化したrubyのインストール

作成されたrpmをrootにてインストールします

# rpm -ivh /home/foo/rpm/RPMS/x86_64/ruby-1.9.3p448-1.el6.x86_64.rpm

確認

rubyのバージョンを確認します

# ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]

うん。いい感じです

インストールされたファイル群はrpmコマンドで確認できます

# rpm -ql ruby
/usr/bin
/usr/bin/erb
/usr/bin/gem
/usr/bin/irb
/usr/bin/rake
/usr/bin/rdoc
/usr/bin/ri
/usr/bin/ruby
/usr/bin/testrb
/usr/include
/usr/include/ruby
/usr/include/ruby/ruby-1.9.1
/usr/include/ruby/ruby-1.9.1/ruby
   :      :
   :      :

関連ページ