
筆者特製? RPM紹介 †まずいきなりですが筆者が使用しているPHPのRPMを紹介します*1. このRPMはあるディストリビューション付属のRPMの改造ではなく,まったく1から開発したRPMになります. 特徴 †標準拡張モジュールの選択 †各環境に必要なPHP標準拡張モジュールの種類は異なります.ビルド・メンテナンスの視点からいうと不必要なRPMはそもそも存在しないほうがいいケースもあります. 次に,前述のとおりディストリビューション付属の共有ライブラリの問題などで,異なる環境へSRPMをコピーした後のリビルド*2が出来ない場合があります. このRPMを作成したそもそもの目的は,複数ディストリビューションでなるべく共通に使えるRPMの作成でした*3. このSRPMに付属のSPECはそういう場合に有効です. 日本語環境を意識した設定 †./configure時の--zend-multibyteオプションの使用など日本語環境での使用を意識したビルドを行います*4. 標準拡張モジュールの複数RPMへの分割 †特筆することでもないですが,一般的な標準拡張モジュール単位でのRPMの分割を行っています. 使用目的に応じて必要なRPMをインストールしてください.
その他 †サブパッケージ化された標準拡張モジュールは通常php,iniなどで「extension=mysql.so」などしなければ有効になりません. そこを筆者は「/etc/php.d」という,いわば設定ファイル置き場に各サブパッケージ用の「extension=xxx.so」を記述したiniファイルを設置するようにしています*5.
モジュール選択の方法 †まずSPECファイル(php.spec)をエディタで開きます. そうすると10行目位から20行前後の%defineというものがあります. %define bzip2_enable 1 %define curl_enable 1 %define domxml_enable 1 %define domxslt_enable 1 %define gd_enable 1 %define freetype_enable 1 %define gettext_enable 1 %define iconv_enable 1 %define imap_enable 1 %define imapssl_enable 1 %define ldap_enable 1 %define libedit_enable 1 %define mm_enable 1 %define mysql_enable 1 %define ncurses_enable 1 %define odbc_enable 1 %define pgsql_enable 1 %define readline_enable 1 %define recode_enable 1 %define snmp_enable 1 %define xmlrpc_enable 1 これらはそれぞれ標準拡張モジュールに対応し,「1」を「0」にすることで無効にすることが出来ます. インストール †ディストリビューション付属のPHPをアンインストール †それではインストールしましょう…と思いますが,あわてないでください. ディストリビューションに付属のPHPは削除しましたか? rpmコマンドで確認し,既にインストール済みなら削除から始めてくださいね. phpのパッケージが入っていないか確認
[root@phpmook root]# /bin/rpm -qa|grep -E '^php' php-mysql-4.3.6-1.3 php-4.3.6-1.3 この場合phpとphp-mysqlがインストールされているので,この2つをアンインストールします. また,ディストリビューションが配布している設定ファイルも一応削除します. phpのアンインストール
[root@phpmook root]# /bin/rpm -e php-mysql php [root@phpmook root]# /bin/rm -f /etc/php.ini
謹製PHPをインストール †さてそれではインストールです.RPMは「RPMS/i386」ディレクトリに作成されているはずです. phpのインストール
[root@phpmook root]# rpm -ihv /home/elf/RPMS/i386/php-4.3.7-1.i386.rpm
インストールできたらphpinfo()関数を記述したPHPスクリプトやCLIなら-vオプションや-mオプションで動作を確認してみてください.
yumからアップデート対象をはずす †今の状態だとyumを用いると,phpがディストリビューションのものと置き換えられてしまう可能性があります. それを回避するために/etc/yum.confにexcludeという項目を追加します. 項目exclude追加例
exclude=php*
筆者の使い方 †php.iniの調整をする †まずphp.iniはtarballに付属のものとほぼ同じなので各自下記の調整が必要です(苦笑
PEARはRPMでインストールしない †前述のとおり筆者はPEARをRPMでインストールしません. 理由はRPMの管理システムとPEARの管理システムが衝突するからです. 例えばPEARをRPMでインストールしたとします. # /usr/bin/rpm -ihv php-pear-4.3.7-1.ELF.i386.rpm そして,pearコマンドでPEARパッケージのアップデートを行います. # /usr/bin/pear upgrade-all その後仮に PHP バージョン4.3.8 がリリースされたとして, php-pear パッケージのアップデートを行ってみましょう. # /usr/bin/rpm -Fhv php-pear-4.3.8-1.ELF.noarch.rpm この時点でpearコマンドでアップデートしたPEARパッケージは PHP バージョン 4.3.8に置換されてしまいます. また,PEARパッケージの追加など行っている場合,そのパッケージの状態がどうなるか不明瞭です. これらを回避するために筆者はPEAR環境のみRPMでインストールしないようにしています. PEARの個別インストール方法 †PEARのインストールは公式サイトを参考に*6インストールします. lynxでインストーラーを読み込み実行
$ lynx -source http://go-pear.org/ | /usr/bin/php -Cq w3mでインストーラーを読み込み実行
$ w3m -dump_source http://go-pear.org/ | /usr/bin/php -Cq w3mでインストーラーを読み込み実行
$ wget -O go-pear.php http://go-pear.org/ ; php -Cq go-pear.php PHP自身でインストーラーを読み込む
$ php -r 'require 'http://go-pear.org' 質問は基本的に[Enter]キーを押していき,そのままの状態でインストールします. いくつか作業状態が表示されつつインストールが完了すると思います. 作業を終了したらpearコマンドを実行してインストールの完了を確認してください. それでは次に,PHPのRPMを自作するための基礎知識と手順を説明していきます. |