Phalcon2.xのRPMパッケージを作る

(更新日: 2014/12/05)

このエントリはPhalcon PHP Advent Calendar 2014 4日目のエントリです。2日目としてPhalcon 1.xのRPMパッケージを作っています。今回はPhalcon2のRPMパッケージをphp-phalcon2.xパッケージとして作ります。多分動くと思いますが、ほとんどテストしていないので問題があったらコメントをお願いします。

php-phalconとphp-phalcon2パッケージは同時にインストールできないので注意してください。

Phalcon2.xとPhalcon1.xの違い

Phalcon2ではZephir言語というPhalconモジュールを作るための言語がサポートされています。これはZephir言語で書かれたプログラムをPHPのネイティブモジュールにしてくれるソフトウェアです。Phalcon2のRPMパッケージではこれもインストールします。

私のブログでもZephirを利用したJavaScript文字列エスケープ関数の作成を紹介しています。この関数の場合、大量のPHP関数を呼び出いしているのであまり高速化のメリットが出ていませんが、大量のPHP関数呼び出さなかったり、大量のZephirモジュール関数を呼び出す場合にはメリットが大きくなります。

Phalcon2のREAME.mdファイルではバンドルしているjson-cライブラリを使うようにと書かれています。見たところ最新のjson-cライブラリなら大丈夫そうでした。最新のjson-cライブラリが必要なのでFedora20でのみ試しています。

 

php-phalcon2のSEPCファイル

Phalcon2スペックファイルではZephirもビルドするので別のスペックファイルにしました。Phalcon1.xのphp-phalcon.specとPhalcon2.xのphp-phalcon2.specの差分は以下の通りです。

 

新しいPhalcon/ZephirのZIPファイルに差し替え、ビルドするだけで最新版のRPMパッケージができます。

今回作ったSRPMファイルは以下のURLからダウンロードできます。

 

php-phalcon2.specのビルド

ビルドに必要な手順は「Phalcon PHPのRPMパッケージを作る」とほぼ変わりません。上記のURLからSPRMをダウンロードし、SRPMをインストールします。

その後にrpmbuildコマンドでビルドします。

ビルドに必要なパッケージが入っていれば、これだけでRPMパッケージが作成されます。yumコマンドでインストールし、httpdを再起動すればPhalcon2が使えます。

パッケージにはphalconコマンドとzephirコマンドが入っています。使い方はPhalconZephirのサイトを参照してください。

同じバージョンのRPMパッケージができると新旧の判断ができなくなるので、少なくともリリース番号を増やすと良いでしょう。

これを

などとします。

 

バージョンアップ方法

新しいPhalcon2、Zephirがリリースされた場合、githubリポジトリから適切なZIPファイルをダウンロードし、~/rpmbuild/SOURCESにコピーし、上記のrpmbuildコマンドでビルドします。

Phalcon2はphalcon/cphalconリポジトリの2.0.0ブランチ、Zephirはphalcon/zephirリポジトリのmasterブランチのZIPファイルが必要です。

 

Zephirのパッケージング

しっかりしたRPMパッケージを作っている方ならすぐ気が付くと思います。Zephirのパッケージングは手抜きをしています。Zephirはgitリポジトリからのクローンしてビルドしてインストールすることを想定しています。

今回はリポジトリを丸ごと/usr/share/zephirに入れています。手抜きをしないパッケージゃーであれば、必要性最低限のファイルのみを入れます。

必要性最低限のファイルのみだとパッケージとしては格好が良いのですが、バージョンアップを行う場合にSPECファイルの調整が必要となるケースが増えます。パッケージとしての見栄えより使い勝手を優先してこうしています。

※ 元となったphp-phalcon.specを作った時から同じ理由で、phalcon本体、devtoolsの手抜きをしています。

 

まとめ

RPMパッケージにしておくと簡単に新しい環境にインストールできるので便利です。RHEL系のOSでお仕事をされている方はぜひ試してみてください。

繰り返しになりすが、ほとんどテストしていません。問題があったら教えてください!CentOSなどでビルドできるようにした、などのコメントも歓迎します。

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です