PHP 4.3.10 のRPM を作って入れ替え

「PHP 4.3.9 以前 / 5.0.2 以前に複数の重大な欠陥。」 とのこと。
実はPHP 4.3.8 のまま放置していたので、これを気に入れ替え。ついでに、RPM の作り方をメモ。
まず、ダウンロードページ から”php-4.3.10.tar.gz” (4,892,209 bytes, md5: 73f5d1f42e34efa534a09c6091b5a21e) をダウンロード、”/usr/src/redhat/SOURCES” へ。
マニュアルのパッケージも作っておきたい人は各言語版のマニュアル もダウンロードして同じく”/usr/src/redhat/SOURCES” へ。
さらに、php.conf をどこからから探してきてこれも”/usr/src/redhat/SOURCES” へ。ウチではとりあえずつじつまを合わせるために”/etc/httpd/conf.d/php.conf” を再利用。
先ほどダウンロードしてきた”php-4.3.10.tar.gz” の中の”php4.spec” は実行しても「SRPM を作って終了」 となってしまうので、RHL9 用のPHP のSRPM の中から”php.spec” だけを抜き出して適当に作り変えてみました。全部貼り付けると異常に長くなるので、変更したポイントだけを短く紹介。基本的にはPatch 関係を全部コメントアウト、マニュアルも日本語のみ、としています。


%define contentdir /var/www
%define manual_langs ja


Name: php Version: 4.3.10 Release: 1

Source0: %{name}-%{version}.tar.gz Source1: php_manual_ja.tar.gz Source2: php.conf

コンパイルオプションには以下のものを追加。あとはお好みで。


--enable-roxen-zts \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--enable-zend-multibyte \
--enable-track-vars \
--with-zlib \

そしていつもの呪文。


# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/php.spec # パッチをあてる
# rpmbuild -bc --target i686 /usr/src/redhat/SPECS/php.spec # コンパイルを行う
# rpmbuild -bi --target i686 /usr/src/redhat/SPECS/php.spec # インストールテスト
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/php.spec # パッケージを作成する

出来上がったらパッケージのアップグレード、httpd の再起動。


# rpm -Uvh /usr/src/redhat/RPMS/i686/php-4.3.10-1.i686.rpm
# rpm -qa |grep php
php-4.3.10-1
# /etc/rc.d/init.d/httpd restart

“php.ini.rpmnew” が出来たので”/etc/php.ini” と比較してみましたが、特に変更点がなかったので、そのまま。
あと、「Apache 2.0.52 に入れ替えついでにいくつか変更」 で書いたように、”X-Powered-By:” というフィールドでPHP のバージョンが丸見えになってしまう対策で”/etc/php.ini” の中のexpose_php = On” を”expose_php = Off” に変更。
PHP 4.3.8 もRPM を作って入れていたのですが、作業手順のメモを書き忘れていたので少し手間取りました。ちゃんと書こう。>じぶん

コメント

  1. うっちん より:

    はじめまして。
    自分も現在PHP4.3.10のRPMを作成しているのですが、うまくいきません。
    正確にはRPMは作成できたのですが、何故か
    php-debuginfo-4.3.10-1.i386.rpm
    と言うRPMになってしまいます。
    すいませんがSPECファイルを教えてもらえないでしょうか?

  2. カネダ より:

    > うっちん さま
    php のtarball に入っているSPEC ファイルではちゃんとしたRPM は作ってくれないみたいですので、別途、用意する必要があります(もしくは、がんばって自分で書くか)。
    ウチの場合はRHL9 用php のSRPM からSPEC ファイルを抜き出して使いました。
    http://www.jp.redhat.com/support/errata/RHSA/RHSA-2003-204J.html#Red%20Hat%20Linux%209
    上のリンクからSRPM が落とせますので、あとは
    $ mkdir phptemp
    $ cd phptemp
    $ ../rpm2cpio php-4.2.2-17.2.src.rpm | cpio -id
    とかやるとSPEC ファイルが手に入るはずですのでお試しください。そのままでは使えないかもしれませんが、このページの記事を参照してみてください。
    マニュアルとかも要る場合はSRPM をそのままインストールしちゃってもいいかもですね。