最新の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]
めでたしめでたし。