こんにちは、
しかしmroongaはビルドする際のMySQLバージョンに依存するため、
そこで今回は、
- CentOS6.
4環境で選べるMySQLとPHPの組み合わせ方法 - RPMパッケージを使ってMySQL 5.
6.12、 mroonga、 PHP 5. 4の環境を作る方法 - mroongaのnightly版を使う方法
CentOS6.4環境で選べるMySQLとPHPの組み合わせ方法
CentOS 6向けのmroongaは、
もし特定のバージョンのPHPとMySQLを組み合わせる場合には、
- 利用するMySQLのバージョン(5.
1/ 5. 5/ 5. 6)に対応した、 mroongaをビルドする必要がある - 利用するMySQLのバージョン(5.
1/ 5. 5/ 5. 6)に対応した、 PHPのMySQLクライアントライブラリを使う必要がある (mysqlndを使わない場合)
各リポジトリが提供するPHP, MySQLのバージョンは次の通りです。
リポジトリ名\配布バージョン | PHP 5. |
PHP 5. |
PHP 5. |
MySQL 5. |
MySQL 5. |
MySQL 5. |
---|---|---|---|---|---|---|
base, updates | ○ | × | × | ○ | × | × |
remi | × | ○ | × | × | ○ | × |
remi-php55 | × | × | ○ | × | × | × |
ius | ○ | ○ | × | × | ○ | × |
ius-dev | × | × | × | × | × | ○ |
例えばPHP 5.
Remiリポジトリ・
- Remiリポジトリ : http://
rpms. famillecollet. com/ - IUSリポジトリ : http://
iuscommunity. org/ pages/ IUSClientUsageGuide. html
RPMパッケージを使ってMySQL 5.6.12、mroonga、PHP 5.4の環境を作る方法
mroongaはビルドしたときのMySQLバージョンに依存するため、
新機能や性能向上が多く施されたMySQL 5.
- RPMパッケージのビルド環境を作る
- オラクル公式MySQLをインストールする
- rpmbuildコマンドで、
mysql-mroongaのRPMパッケージを作る - rpmbuildコマンドで、
PHP 5. 4のRPMパッケージを作る
なお、
RPMパッケージのビルド環境を作る
まず、
新規に作る場合は、
マシンへのログインができたら、
# コンパイルを行うための開発環境一式をインストール $ 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コマンドが使えるよう、
# /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.
を用いて解説を行います。新しいバージョンが出た場合には適宜読み替えてください。
まずはオラクルまたは北陸先端科学技術大学院大学(JAIST) のミラーサイトより、
# ダウンロードを行う場所に移動 $ 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
次に、/var/
以下も削除しておきましょう。
$ sudo yum remove mysql mysql-server
mysql-libsからのアップグレードを行うため、
$ sudo yum localinstall MySQL-shared-compat-5.6.12-2.el6.x86_64.rpm
次に、
$ 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
インストール完了後、
# rootのパスワードを確認(1行目の末尾に記載) $ sudo cat /root/.mysql_secret # rootの新しいパスワードを設定 # コマンド発行後の対話シェルにて、先ほど控えたパスワードを入力 $ mysqladmin -u root -p password "newpassword"
新しく設定したパスワードで入れることを確認します。
$ mysql -uroot -p
以上で、
rpmbuildコマンドで、mysql-mroongaの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リポジトリに、
$ 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ユーザへ変更後、
$ sudo su build $ cd ~/rpmbuild $ rpm -ivh http://packages.groonga.org/centos/6/source/SRPMS/mysql-mroonga-3.05-1.el6.src.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.
準備が整いましたので、
$ 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
以上で、
必要に応じて、インストール時に実行しているクエリ
を発行してください。
このようにビルドしたRPMパッケージを利用したインストール手順の詳細は、
rpmbuildコマンドで、PHP 5.4のRPMパッケージを作る
原稿執筆時点で最新版のremiリポジトリにあるPHP 5.
まずはLes RPM de Remi - Repositoryよりsrc.
# ビルドユーザに移動 $ 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.
$ 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
準備が整いましたので、
$ 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ファイルをインストールすれば、
mroongaのnightly版を使う方法
mroongaはGitHubにてソースを公開する形で開発が進められています。導入の検証を行っている際に、
これより、mroonga-3.
を例に紹介します。
2013年7月18日版であれば、mroonga-3.
というファイル名となります。大まかにはソースをダウンロードし、
それではステップ毎に解説していきます。
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.
に加えた差分からさらに、
$ 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をみなさんの手元にお届けするまで、