昨日、PHP 5.4 + MySQL 5.5 の RPM を作成したわけですが、stomp という PECL を使う環境で stomp がインストールでませんでした。このあたりが原因のようです…。
CentOS 5.8 x86_64 では、php53 というパッケージに公式にあるので、パッケージをダウンロードしてリビルドしてみました。
$ yumdownloader --source php53
$ rpm -i php53-5.3.3-13.el5_8.src.rpm
前回と同じように、mysql_config のパスと php53-mysql を php53-mysql55 に変更してビルドを開始しました。
$ rpmbuild -ba ~/rpmbuild/SPECS/php53.spec
...
hecking for specified location of the MySQL UNIX socket... no
checking for mysql_close in -lmysqlclient... no
checking for mysql_error in -lmysqlclient... no
configure: error: mysql configure failed. Please check config.log for more information.
error: Bad exit status from /var/tmp/rpm-tmp.88928 (%build)
MySQL まわりの configure で失敗してしまいました…。
socket の設定は、–with-mysql-sock オプションを追加することで改善したのですが、どうしても -lmysqlclient まわりが解決できませんでした。おそらく、MySQL の RPM を公式で使っていることが原因だと推測したので、別のパッケージを探してみました。
執筆時現在の PHP 5.3 系の最新バージョンは、PHP 5.3.14 になります。
いくつかあった中で、ここにある SRPM からリビルドをしてみました。(remi リポジトリにもあるようですが、個人的にあまり remi は信用していないため、今回は使いませんでした)
ただし、この php-5.3.14-1.w5.src.rpm は、SPEC ファイル名が php53.spec となっていますが、パッケージ名が「php」となっているため、php53 にパッケージを変更しました。パッケージを変更するにあたり、昨日の php54.spec ファイルを参考にしながら変更しました。この変更には、依存関係まわりでかなりはまってしまいました。差分の方はかなり長いので、gist に置いておきました。
あと、pear は、昨日の php54-pear を php53-pear としてコピーしてさくっと作成しました。
そして、stomp ですが、OpenSSL 1.0 系に対応しているため、CentOS 5.x の OpenSSL では対応できないため、OpenSSL 対応をオフするとインストールすることができます。PECL インストールするには、php53-devel が必要です。
$ sudo pecl install stomp
downloading stomp-1.0.3.tgz ...
Starting to download stomp-1.0.3.tgz (18,309 bytes)
......done: 18,309 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
OpenSSL install prefix (no to disable SSL support) [/usr] : no
...
Build process completed successfully
Installing '/usr/lib64/php/modules/stomp.so'
install ok: channel://pecl.php.net/stomp-1.0.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=stomp.so" to php.ini
$ vi /etc/php.d/stomp.ini
extension=stomp.so
$ php -r "phpinfo();" | grep stomp
/etc/php.d/stomp.ini,
PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in Command line code on line 1
stomp.default_broker => tcp://localhost:61613 => tcp://localhost:61613
stomp.default_connection_timeout_sec => 2 => 2
stomp.default_connection_timeout_usec => 0 => 0
stomp.default_read_timeout_sec => 2 => 2
stomp.default_read_timeout_usec => 0 => 0
RPM を作成するのも、なかなか大変ですねっと。。。
Tags: centos