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をみなさんの手元にお届けするまで,