隔週連載groonga

第8回CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP 5.4 環境の作り方

こんにちは、株式会社リブセンスの吉田健太郎です。MySQLで本格的な日本語全文検索を行うには、MySQL 5.0ならTritonn、5.1以降ではmroongaがあります。mroongaとはTritonnの後継プロダクトで、2010年より開発が始まりました。このプロダクトの強みとしては、MySQLプラグインとしてシンプルに使えることと、リレーショナルな日本語対応の全文検索機能ができることです。mroongaはTritonnから進化を遂げており、更新・参照速度のさらなる向上や、unigramなどのトークナイズ方式の拡充などが行われました。

しかしmroongaはビルドする際のMySQLバージョンに依存するため、公式に配布されている組み合わせには限りがあります。そのため、導入の障壁になるケースがあります。手っ取り早くソースをコンパイルしてインストールすればどんな組み合わせもできますが、サーバが増えれば増えるほど手間が増えます。

そこで今回は、RPMパッケージを作る方法を以下のテーマで解説します。RPMパッケージがあれば、手間を掛けずに同じ構成のサーバを量産できます。

  1. CentOS6.4環境で選べるMySQLとPHPの組み合わせ方法
  2. RPMパッケージを使ってMySQL 5.6.12、mroonga、PHP 5.4の環境を作る方法
  3. mroongaのnightly版を使う方法

CentOS6.4環境で選べるMySQLとPHPの組み合わせ方法

CentOS 6向けのmroongaは、ディストリビューション付属のMySQL 5.1系とセットで利用することを前提にビルドされています。そのため、CentOS 6.x + MySQL 5.1.x (updatesリポジトリ) という組み合わせが、公式に配布しているmroongaの推奨環境です。この環境に、groongaリポジトリにあるmysql-mroongaをインストールすることで、難なくmroongaを導入できます。

もし特定のバージョンのPHPとMySQLを組み合わせる場合には、次の2点において注意が必要です。ただし、PHPに関してはPHP 5.4からデフォルトとなったmysqlndというMySQLのクライアントライブラリを使えば、MySQLをインストールせずに使えるドライバですので、MySQLのバージョン依存を解消できます。

  • 利用するMySQLのバージョン(5.1/5.5/5.6)に対応した、mroongaをビルドする必要がある
  • 利用するMySQLのバージョン(5.1/5.5/5.6)に対応した、PHPのMySQLクライアントライブラリを使う必要がある(mysqlndを使わない場合)

各リポジトリが提供するPHP, MySQLのバージョンは次の通りです。

リポジトリ名\配布バージョン PHP 5.3.x PHP 5.4.x PHP 5.5.x MySQL 5.1.x MySQL 5.5.x MySQL 5.6.x
base, updates × × × ×
remi × × × ×
remi-php55 × × × × ×
ius × × ×
ius-dev × × × × ×

例えばPHP 5.4.xとMySQL 5.6.x環境を用意する際、mysqlndが採用できれば後述の手順において、PHPのRPMパッケージ作成は省略可能です。つまり、mroongaのRPMパッケージ作成のみで導入できます。しかし事情により、mysqlndが使えず従来のlibmysqlclientが必要な環境の場合には、PHP・mroongaそれぞれのRPMパッケージを後述する手順で作成します。なお、iusの提供するmysql56u-develパッケージにはmroongaのビルドに必要なlibmysqlservices.aが不足しているため、オラクル公式のRPMパッケージを利用して紹介します。

Remiリポジトリ・IUSリポジトリのインストールについては、公式サイトが参考になります。

RPMパッケージを使ってMySQL 5.6.12、mroonga、PHP 5.4の環境を作る方法

mroongaはビルドしたときのMySQLバージョンに依存するため、MySQL 5.5や5.6の環境でビルドすれば、問題なく動きます。組み合わせが多いため公式でのRPMパッケージの配布は一部に限定されているのが現状です。

新機能や性能向上が多く施されたMySQL 5.5や5.6と一緒に、mroongaやPHPを利用したいというケースもあるでしょう。この場合はソースをコンパイルしてインストールする方法もありますが、RPMパッケージの使い勝手の良さには及びません。とても手軽にRPMパッケージを作ることができるため、その作成・インストール手順を紹介します。

  1. RPMパッケージのビルド環境を作る
  2. オラクル公式MySQLをインストールする
  3. rpmbuildコマンドで、mysql-mroongaのRPMパッケージを作る
  4. rpmbuildコマンドで、PHP 5.4のRPMパッケージを作る

なお、CentOS 5用のmroongaは、MySQL 5.6の本体と共にrpmパッケージが提供されています。そして、debian系のsqueezeやlucidではMySQL 5.1向けパッケージが、その他debian系に関してはMySQL 5.5向けのパッケージが提供されています。

RPMパッケージのビルド環境を作る

まず、RPMパッケージビルド専用の仮想マシンをVirtualBox等で作ります。もちろん既にあるCentOS環境でも構いません。

新規に作る場合は、理研等のミラーサイトよりCentOSの最小構成版のisoイメージCentOS-6.4-x86_64-minimal.isoをダウンロードし、OSのインストールを行います。

マシンへのログインができたら、まずコンパイルを行うためのパッケージ群をインストールします。

# コンパイルを行うための開発環境一式をインストール
$ sudo yum groupinstall 'Development Tools'

# RPMビルドの依存ライブラリの一部にて利用するため、EPELリポジトリをインストール
$ sudo yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

# ファイルのダウンロードに便利なwgetはmroongaのビルド時にも使うのでインストール
$ sudo yum install wget

次に、ビルド専用の一般ユーザbuildを作ります。

$ sudo /usr/sbin/useradd build

ビルド専用ユーザのパスワードを設定します。

$ sudo passwd build

buildユーザでもsudoコマンドが使えるよう、visudoコマンドで次のように設定を変更します。

# /etc/sudoersファイルを安全に編集するvisudoコマンドを使用
$ sudo visudo

# 以下のdiffのように、root ALL=(ALL) ALLの下にbuild ALL=(ALL) ALLを追記
 ## Allow root to run any commands anywhere
 root   ALL=(ALL)       ALL
+build ALL=(ALL) ALL

RPMパッケージをビルドするためのフォルダやドットファイルを作ります。

# buildユーザへ変更
$ sudo su build

# 必要ディレクトリやドットファイルを作成
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

# 元のユーザに戻る
$ exit

以上でRPMパッケージをビルドする下準備ができました。

オラクル公式MySQLをインストールする

原稿執筆時点で最新版のMySQL 5.6.12-2を用いて解説を行います。新しいバージョンが出た場合には適宜読み替えてください。

まずはオラクルまたは北陸先端科学技術大学院大学(JAIST) のミラーサイトより、MySQLのRPMパッケージをダウンロードします。

# ダウンロードを行う場所に移動
$ cd /tmp

# どちらか一方を選びダウンロード
$ wget http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-5.6.12-2.el6.x86_64.rpm-bundle.tar
$ wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/MySQL-5.6.12-2.el6.x86_64.rpm-bundle.tar

ダウンロードしたtarアーカイブを展開します。

# tarファイルを展開
$ tar xf MySQL-5.6.12-2.el6.x86_64.rpm-bundle.tar

# 以下のファイルが生成されたことを確認
$ ls *.rpm
MySQL-client-5.6.12-2.el6.x86_64.rpm
MySQL-devel-5.6.12-2.el6.x86_64.rpm
MySQL-embedded-5.6.12-2.el6.x86_64.rpm
MySQL-server-5.6.12-2.el6.x86_64.rpm
MySQL-shared-5.6.12-2.el6.x86_64.rpm
MySQL-shared-compat-5.6.12-2.el6.x86_64.rpm
MySQL-test-5.6.12-2.el6.x86_64.rpm

次に、mysql-libs以外のパッケージがインストールされている場合はアンインストールを行います。もしMySQLにデータを残している場合は、アップデートすると取り出せなくなります。このアンインストール前のタイミングでmysqldumpコマンドを利用してSQLダンプを取得します。そして/var/lib/mysql以下も削除しておきましょう。

$ sudo yum remove mysql mysql-server

mysql-libsからのアップグレードを行うため、MySQL-Shared-Compatを先にインストールします。これは、標準でインストールされているmysql-libs-5.1.69に依存しているpostfix, crontab, cronie, cronie-anacronを消さずにアップデートするためです。

$ sudo yum localinstall MySQL-shared-compat-5.6.12-2.el6.x86_64.rpm

次に、MySQLの本体をインストールします。後ほどmysql-mroongaやPHPのRPMビルドを行うため、MySQL-develもインストールします。もしビルドしか行わない場合には、ここではMySQL-develのみのインストールで十分です。

$ sudo yum localinstall MySQL-shared-5.6.12-2.el6.x86_64.rpm \
  MySQL-server-5.6.12-2.el6.x86_64.rpm \
  MySQL-devel-5.6.12-2.el6.x86_64.rpm \
  MySQL-client-5.6.12-2.el6.x86_64.rpm

インストール完了後、MySQLのパスワードを設定します。

# rootのパスワードを確認(1行目の末尾に記載)
$ sudo cat /root/.mysql_secret

# rootの新しいパスワードを設定
# コマンド発行後の対話シェルにて、先ほど控えたパスワードを入力
$ mysqladmin -u root -p password "newpassword"

新しく設定したパスワードで入れることを確認します。

$ mysql -uroot -p

以上で、MySQLのインストールは完了です。

rpmbuildコマンドで、mysql-mroongaのRPMパッケージを作る

ここでは、mysql-mroongaのsrc.rpmパッケージを展開してRPMパッケージを作成します。 そのままRPMパッケージ生成を始めると、パッケージの生成に必要なライブラリが見つからない旨のエラーが起きるため、先に必要なライブラリのインストールを行います。

$ rpmbuild -ba SPECS/mysql-mroonga.spec
error: Failed build dependencies:
    groonga-devel >= 3.0.4 is needed by mysql-mroonga-3.05-1.el6.x86_64
    groonga-normalizer-mysql-devel is needed by mysql-mroonga-3.05-1.el6.x86_64

yumリポジトリに、groongaプロジェクトが提供しているリポジトリを追加します。

$ sudo yum install http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm

ビルドに必要なライブラリのインストールを行います。

$ sudo yum install groonga-libs groonga-devel \
  groonga-normalizer-mysql groonga-normalizer-mysql-devel \
  gperf ncurses-devel time zlib-devel

buildユーザへ変更後、groongaプロジェクトが提供しているgroongaリポジトリより、mysql-mroongaのsrc.rpmパッケージを取得し、rpmbuildフォルダ以下に展開します。

$ sudo su build
$ cd ~/rpmbuild
$ rpm -ivh http://packages.groonga.org/centos/6/source/SRPMS/mysql-mroonga-3.05-1.el6.src.rpm

後述のように、SPECファイルの書き換えを行います。これでRPMビルドの準備は整いました。

$ cp SPECS/mysql-mroonga.spec SPECS/mysql56-mroonga.spec
$ vi SPECS/mysql56-mroonga.spec
$ diff -u SPECS/mysql-mroonga.spec SPECS/mysql56-mroonga.spec
--- SPECS/mysql-mroonga.spec    2013-06-28 15:39:17.000000000 +0900
+++ SPECS/mysql56-mroonga.spec  2013-07-12 07:40:39.550694635 +0900
@@ -8,8 +8,8 @@
 %define mysql_spec_file_default mysql.spec
 %else
 %define mysql_version_default 5.6.12
-%define mysql_release_default 1
-%define mysql_dist_default    rhel5
+%define mysql_release_default 2
+%define mysql_dist_default    el6
 %define mysql_download_base_url_default http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6
 %define mysql_spec_file_default mysql.%{mysql_version_default}.spec
 %endif
@@ -22,7 +22,7 @@

 %define groonga_required_version 3.0.4

-Name:      mysql-mroonga
+Name:      mysql56-mroonga
 Version:   3.05
 Release:   1%{?dist}
 Summary:   A fast fulltext searchable storage engine for MySQL.

準備が整いましたので、MySQL 5.6向けmroongaのRPMパッケージをビルドを始めます。

$ rpmbuild -ba SPECS/mysql56-mroonga.spec

数分後、メッセージと共に次のようなファイル群が生成されたら無事完了です。

Processing files: mysql56-mroonga-debuginfo-3.05-1.el6.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/build/rpmbuild/BUILDROOT/mysql56-mroonga-3.05-1.el6.x86_64
Wrote: /home/build/rpmbuild/SRPMS/mysql56-mroonga-3.05-1.el6.src.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-3.05-1.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-doc-3.05-1.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-debuginfo-3.05-1.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.RMUP8R
+ umask 022
+ cd /home/build/rpmbuild/BUILD
+ cd mroonga-3.05
+ rm -rf /home/build/rpmbuild/BUILDROOT/mysql56-mroonga-3.05-1.el6.x86_64
+ exit 0

以上で、MySQL 5.6と共に使うmroongaのRPMビルドは完了です。

必要に応じて、生成されたRPMファイルをインストール先サーバに転送します。その後に、次のようにインストールします。MySQLが起動した状態で行うことを忘れないでください。 もし停止状態でインストールを行った場合には、mroongaのインストール/アンインストール時に発行するするクエリと、その用途をまとめて解説を参考に、手動でインストール時に実行しているクエリを発行してください。

このようにビルドしたRPMパッケージを利用したインストール手順の詳細は、CentOS6.xに最新版のMySQL5.6とmroongaを最速でRPMインストールする方法をご参照ください。

rpmbuildコマンドで、PHP 5.4のRPMパッケージを作る

原稿執筆時点で最新版のremiリポジトリにあるPHP 5.4系を利用して解説を行います。新しいバージョンが出た場合には適宜読み替えてください。

まずはLes RPM de Remi - Repositoryよりsrc.rpmパッケージを取得し、rpmbuildフォルダ以下に展開します。

# ビルドユーザに移動
$ sudo su build

# src.rpmファイルをダウンロードの上、rpmbuildフォルダ以下に展開
$ rpm -ivh http://rpms.famillecollet.com/SRPMS/php-5.4.17-2.remi.src.rpm

そのままビルドを行うと以下のように依存ライブラリ不足によるエラーとなるため、ビルドに必要なパッケージのインストールを行います。

$ rpmbuild -ba SPECS/php54.spec
error: Failed build dependencies:
    bzip2-devel is needed by php-5.4.17-2.el6.x86_64
    curl-devel >= 7.9 is needed by php-5.4.17-2.el6.x86_64
    gmp-devel is needed by php-5.4.17-2.el6.x86_64
    httpd-devel >= 2.0.46-1 is needed by php-5.4.17-2.el6.x86_64
    pam-devel is needed by php-5.4.17-2.el6.x86_64
    openssl-devel is needed by php-5.4.17-2.el6.x86_64
    sqlite-devel >= 3.6.0 is needed by php-5.4.17-2.el6.x86_64
    libedit-devel is needed by php-5.4.17-2.el6.x86_64
    libtool-ltdl-devel is needed by php-5.4.17-2.el6.x86_64
    krb5-devel is needed by php-5.4.17-2.el6.x86_64
    libc-client-devel is needed by php-5.4.17-2.el6.x86_64
    cyrus-sasl-devel is needed by php-5.4.17-2.el6.x86_64
    openldap-devel is needed by php-5.4.17-2.el6.x86_64
    mysql-devel >= 4.1.0 is needed by php-5.4.17-2.el6.x86_64
    postgresql-devel is needed by php-5.4.17-2.el6.x86_64
    unixODBC-devel is needed by php-5.4.17-2.el6.x86_64
    libxml2-devel is needed by php-5.4.17-2.el6.x86_64
    firebird-devel is needed by php-5.4.17-2.el6.x86_64
    net-snmp-devel is needed by php-5.4.17-2.el6.x86_64
    libxslt-devel >= 1.0.18-1 is needed by php-5.4.17-2.el6.x86_64
    libxml2-devel >= 2.4.14-1 is needed by php-5.4.17-2.el6.x86_64
    libjpeg-devel is needed by php-5.4.17-2.el6.x86_64
    libpng-devel is needed by php-5.4.17-2.el6.x86_64
    freetype-devel is needed by php-5.4.17-2.el6.x86_64
    libXpm-devel is needed by php-5.4.17-2.el6.x86_64
    t1lib-devel is needed by php-5.4.17-2.el6.x86_64
    db4-devel is needed by php-5.4.17-2.el6.x86_64
    gdbm-devel is needed by php-5.4.17-2.el6.x86_64
    tokyocabinet-devel is needed by php-5.4.17-2.el6.x86_64
    libmcrypt-devel is needed by php-5.4.17-2.el6.x86_64
    libtidy-devel is needed by php-5.4.17-2.el6.x86_64
    freetds-devel is needed by php-5.4.17-2.el6.x86_64
    aspell-devel >= 0.50.0 is needed by php-5.4.17-2.el6.x86_64
    recode-devel is needed by php-5.4.17-2.el6.x86_64
    libicu-devel >= 3.6 is needed by php-5.4.17-2.el6.x86_64
    enchant-devel >= 1.2.4 is needed by php-5.4.17-2.el6.x86_64

PHPのRPMビルドに必要なライブラリのインストールを行います。

$ sudo yum install bzip2-devel curl-devel gmp-devel httpd-devel pam-devel openssl-devel sqlite-devel libedit-devel libtool-ltdl-devel krb5-devel libc-client-devel cyrus-sasl-devel openldap-devel postgresql-devel unixODBC-devel libxml2-devel firebird-devel net-snmp-devel libxslt-devel libxml2-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel t1lib-devel db4-devel gdbm-devel tokyocabinet-devel libmcrypt-devel libtidy-devel freetds-devel aspell-devel recode-devel libicu-devel enchant-devel

MySQL 5.6互換とするため、SPECファイルの修正を後述のように行います。

$ cp SPECS/php54.spec SPECS/php54-mysql56.spec
$ vi SPECS/php54-mysql56.spec
$ diff -u SPECS/php54.spec SPECS/php54-mysql56.spec
--- SPECS/php54.spec    2013-07-13 02:24:58.000000000 +0900
+++ SPECS/php54-mysql56.spec    2013-07-12 08:00:22.403695013 +0900
@@ -25,7 +25,7 @@

 # Use the arch-specific mysql_config binary to avoid mismatch with the
 # arch detection heuristic used by bindir/mysql_config.
-%global mysql_config %{_libdir}/mysql/mysql_config
+%global mysql_config %(which mysql_config)

 # Optional components; pass "--with mssql" etc to rpmbuild.
 %global with_oci8   %{?_with_oci8:1}%{!?_with_oci8:0}
@@ -388,7 +388,7 @@
 Provides: php-mysqli = %{version}-%{release}
 Provides: php-mysqli%{?_isa} = %{version}-%{release}
 Provides: php-pdo_mysql, php-pdo_mysql%{?_isa}
-BuildRequires: mysql-devel >= 4.1.0
+BuildRequires: MySQL-devel >= 4.1.0
 Conflicts: php-mysqlnd
 Obsoletes: php53-mysql, php53u-mysql, php54-mysql

準備が整いましたので、RPMビルドを始めます。このビルドは4コア環境で1時間程度掛かるため、しばらく待ちましょう。

$ rpmbuild -ba SPECS/php54-mysql56.spec

メッセージと共に次のようなファイルが生成されたら完了です。

Processing files: php-debuginfo-5.4.17-2.el6.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/build/rpmbuild/BUILDROOT/php-5.4.17-2.el6.x86_64
Wrote: /home/build/rpmbuild/SRPMS/php-5.4.17-2.el6.src.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-cli-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-fpm-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-common-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-devel-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-imap-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-ldap-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-pdo-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-mysql-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-mysqlnd-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-pgsql-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-process-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-odbc-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-soap-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-interbase-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-snmp-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-xml-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-xmlrpc-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-mbstring-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-gd-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-bcmath-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-dba-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-mcrypt-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-tidy-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-mssql-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-embedded-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-pspell-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-recode-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-intl-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-enchant-5.4.17-2.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/php-debuginfo-5.4.17-2.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.RUWrsf
+ umask 022
+ cd /home/build/rpmbuild/BUILD
+ cd php-5.4.17
+ /bin/rm -rf /home/build/rpmbuild/BUILDROOT/php-5.4.17-2.el6.x86_64
+ exit 0

この中から適宜必要なRPMファイルをインストールすれば、MySQL 5.6とmroonga.そしてPHP 5.4が使える環境が構築できます。

mroongaのnightly版を使う方法

mroongaはGitHubにてソースを公開する形で開発が進められています。導入の検証を行っている際に、mroongaのGitHubリポジトリにて修正済みではあるが、月次での公開がまだ行われていない状態を取り込みたいことがあるかもしれません。そのような場合には、毎晩GitHubの最新リビジョンを用いて作成されるnightly版からRPMパッケージを作ることで、先取りすることができます。

これより、そのnightly版のRPMパッケージ作成手順をmroonga-3.05.2013.07.18.tar.gzを例に紹介します。

2013年7月18日版であれば、mroonga-3.05.2013.07.18.tar.gzというファイル名となります。大まかにはソースをダウンロードし、SOURCES以下に配置、そしてSPECファイルを書き換えてrpmbuildという順番です。

それではステップ毎に解説していきます。

cd ~/rpmbuild
# SOURCE以下にダウンロードする
$ wget -P SOURCES/ http://packages.groonga.org/nightly/mroonga-3.05.2013.07.18.tar.gz

# ダウンロードしたtarballを利用してビルドするよう、SPECファイル名と中身を書き換える
$ cp SPECS/mysql56-mroonga.spec SPECS/mysql56-mroonga-2013.07.18.spec
$ vi SPECS/mysql56-mroonga-2013.07.18.spec

mysql56-mroonga.specに加えた差分からさらに、次の箇所を調整します。

$ diff -u SPECS/mysql56-mroonga.spec SPECS/mysql56-mroonga-2013.07.18.spec
--- SPECS/mysql56-mroonga.spec  2013-07-12 07:40:39.550694635 +0900
+++ SPECS/mysql56-mroonga-2013.07.18.spec   2013-07-12 08:22:50.015998696 +0900
@@ -23,7 +23,7 @@
 %define groonga_required_version 3.0.4

 Name:      mysql56-mroonga
-Version:   3.05
+Version:   3.05.2013.07.18
 Release:   1%{?dist}
 Summary:   A fast fulltext searchable storage engine for MySQL.

RPMパッケージをビルドします。

$ rpmbuild -ba SPECS/mysql56-mroonga-2013.07.18.spec

数分後、メッセージと共に次のようなファイルが生成されたら完了です。

Processing files: mysql56-mroonga-debuginfo-3.05.2013.07.18-1.el6.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/build/rpmbuild/BUILDROOT/mysql56-mroonga-3.05.2013.07.18-1.el6.x86_64
Wrote: /home/build/rpmbuild/SRPMS/mysql56-mroonga-3.05.2013.07.18-1.el6.src.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-3.05.2013.07.18-1.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-doc-3.05.2013.07.18-1.el6.x86_64.rpm
Wrote: /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-debuginfo-3.05.2013.07.18-1.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.LENxjv
+ umask 022
+ cd /home/build/rpmbuild/BUILD
+ cd mroonga-3.05.2013.07.18
+ rm -rf /home/build/rpmbuild/BUILDROOT/mysql56-mroonga-3.05.2013.07.18-1.el6.x86_64
+ exit 0

次回予告

次回はmroongaをみなさんの手元にお届けするまで、ということでリリースマネージャ観点からmroongaを紹介します。今回はCentOSでのパッケージ作成の事例でした。mroongaはCentOS以外でもパッケージを提供しています。今後のパッケージングの動向についても紹介する予定です。お楽しみに!

おすすめ記事

記事・ニュース一覧