[CentOS] ruby2.0.0-p247 のrpmパッケージを作成する


yokohama96x96みなさんこんにちは。去年こんな風にrubyのrpmを作ってみましたが、rubyも2.0.0が出てしばらく経ったことですし、再度rpmを作ってみることにしました。

■ 下準備 - パッケージのインストール

まずは yum で "Development tools" をインストールします。

[ (っ´∀`)っ@友の会 ~]$ sudo yum install "Development tools"

続いて zlib-devel openssl-devel readline-devel ncurses-devel gdbm-devel db4-devel libffi-devel tk-devel libyaml-devel をインストールします。

[ (っ´∀`)っ@友の会 ~]$ sudo yum install zlib-devel openssl-devel readline-devel ncurses-devel gdbm-devel db4-devel libffi-devel tk-devel libyaml-devel

次に libyaml-devel をインストールしますが、これはbaseリポジトリにないので epel リポジトリからインストールします。

[ (っ´∀`)っ@友の会 ~]$ sudo yum --enablerepo=epel install libyaml-devel

 

■ 下準備 - rpmbuildの用意

rpmを作成するためにディレクトリと .rpmmacros を作成します。

[ (っ´∀`)っ@友の会 ~]$ mkdir -p ~/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS}
[ (っ´∀`)っ@友の会 ~]$ echo "%_topdir $HOME/rpm" > $HOME/.rpmmacros

 

■ rubyソースコードのダウンロード

以下コマンドを実行してソースコードをダウンロードします。

[ (っ´∀`)っ@友の会 ~]$ cd ~/rpm/SOURCES/
[ (っ´∀`)っ@友の会 ~]$ wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz

 

■ specファイル作成

こちらを参考にspecファイルを作成します。 rubyver と rubyminorver と Provides: ruby(abi) を書き換えるくらいでよいでしょう。 changelog は無くてもかまいません。

[ (っ´∀`)っ@友の会 ~]$ cd ../SPECS/
[ (っ´∀`)っ@友の会 ~]$ vi ruby.spec
%define rubyver         2.0.0
%define rubyminorver    p247

Name:           ruby
Version:        %{rubyver}%{rubyminorver}
Release:        2%{?dist}
License:        Ruby License/GPL - see COPYING
URL:            http://www.ruby-lang.org/
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires:  readline readline-devel ncurses ncurses-devel gdbm gdbm-devel glibc-devel tcl-devel gcc unzip openssl-devel db4-devel byacc make libyaml-devel
Source0:        ftp://ftp.ruby-lang.org/pub/ruby/ruby-%{rubyver}-%{rubyminorver}.tar.gz
Summary:        An interpreter of object-oriented scripting language
Group:          Development/Languages
Provides: ruby(abi) = 2.0
Provides: ruby-irb
Provides: ruby-rdoc
Provides: ruby-libs
Provides: ruby-devel
Provides: rubygems
Obsoletes: ruby
Obsoletes: ruby-libs
Obsoletes: ruby-irb
Obsoletes: ruby-rdoc
Obsoletes: ruby-devel
Obsoletes: rubygems

%description
Ruby is the interpreted scripting language for quick and easy
object-oriented programming.  It has many features to process text
files and to do system management tasks (as in Perl).  It is simple,
straight-forward, and extensible.

%prep
%setup -n ruby-%{rubyver}-%{rubyminorver}

%build
export CFLAGS="$RPM_OPT_FLAGS -Wall -fno-strict-aliasing"

%configure 
  --enable-shared 
  --disable-rpath 
  --without-X11 
  --without-tk 
  --includedir=%{_includedir}/ruby 
  --libdir=%{_libdir}

make %{?_smp_mflags}

%install
# installing binaries ...
make install DESTDIR=$RPM_BUILD_ROOT

#we don't want to keep the src directory
rm -rf $RPM_BUILD_ROOT/usr/src

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-, root, root)
%{_bindir}
%{_includedir}
%{_datadir}
%{_libdir}

 

■ rpmパッケージのビルド

上記specファイルができたらrpmをビルドします。

[ (っ´∀`)っ@友の会 ~]$ rpmbuild -bb ~/rpm/SPECS/ruby.spec

しばらくして、 ~/rpm/RPMS/x86_64/ruby-2.0.0p247-2.el6.x86_64.rpm ができあがっていればOKです。rubyのパッケージを作成したホストには、そのまま ruby-2.0.0p247-2.el6.x86_64.rpm をインストールすればOKです。他のCentOSにインストールする場合は、epelリポジトリから libyaml をインストールしてから ruby-2.0.0p247-2.el6.x86_64.rpm をコピーして rpm コマンドでインストールしてあげればOKです。以下のようにバージョン表示ができれば大丈夫でしょう。

[ (っ´∀`)っ@友の会 ~]$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

[ (っ´∀`)っ@友の会 ~]$ rake --version
rake, version 0.9.6

[ (っ´∀`)っ@友の会 ~]$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
test-unit (2.0.0.0)

ね、簡単でしょう?

[amazonjs asin="4797372273" locale="JP" title="たのしいRuby 第4版"]