ほとラボ

It works!

最新のRubyをRPMで入れる

プロダクションサーバとかにRubyを入れたい、というときに

  • yumで入れるとバージョンが古い
  • rbenvで入れると標準ではユーザーローカルな場所に入ってしまってシステムワイドに入れづらい

などの理由からRPMをビルドしてRubyをインストールするのがよいと思ったのでそのメモ。

「手コンパイルしろよオラァ」っていうツッコミはナシで。

※ 今回は現時点(2014/5/13)での最新版である2.1.2を入れる
※ OSは CentOS 6.5

依存モジュールとかをインストール

# yum -y groupinstall "Development Tools" 
# yum --enablerepo=epel -y install libyaml libyaml-devel readline-devel ncurses-devel gdbm-devel tcl-devel openssl-devel db4-devel libffi-devel wget

ビルド準備

ディレクトリ作る

$ mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

ソース落としてくる

$ wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz -P rpmbuild/SOURCES

SPECファイル落としてくる

SPEC公開してくれている人がいるので利用させていただく。

hansode/ruby-2.1.x-rpm - GitHub

$ wget https://raw.githubusercontent.com/hansode/ruby-2.1.x-rpm/master/ruby21x.spec -P rpmbuild/SPECS

落としてきたspecファイルを編集して、1行目に書いてあるバージョンをインストールしたいバージョンに設定する。

ビルド前のディレクトリ構成こんな感じ

$ tree rpmbuild/
rpmbuild/
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
│   └── ruby-2.1.2.tar.gz
├── SPECS
│   └── ruby21x.spec
└── SRPMS

ビルド

$ rpmbuild -bb rpmbuild/SPECS/ruby21x.spec

ビルドしたrpmをとっておけば、AnsibleとかでRuby入れたいときにプレイブック書くのがすごい楽。

インストール

# rpm -Uvh rpmbuild/RPMS/x86_64/ruby-2.1.2-2.el6.x86_64.rpm

確認

$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

めでたしめでたし。

参考