隔週連載groonga

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

この記事を読むのに必要な時間:およそ 10 分

オラクル公式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インストールする方法をご参照ください。

著者プロフィール

吉田健太郎(Kentaro Yoshida)

株式会社リブセンス,Web系インフラの研究開発エンジニア。

ITベンチャー立ち上げに参画し,幅広い領域での経験を積むこと8年目。フルスタックエンジニアを目指して,湧き出るアイディアを形にする日々を過ごしている。

GitHub:https://github.com/y-ken/
ブログ:http://y-ken.hatenablog.com/