4日目のエントリです。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の差分は以下の通りです。<yohgaki@ohgaki.net>新しいPhalcon/ZephirのZIPファイルに差し替え、ビルドするだけで最新版のRPMパッケージができます。今回作ったSRPMファイルは以下のURLからダウンロードできます。PHPのRPMパッケージを作る」とほぼ変わりません。上記のURLからSPRMをダウンロードし、SRPMをインストールします。php-phalcon2-x.x.x.src.rpmその後にrpmbuildコマンドでビルドします。rpmbuild/SPEC/php-phalcon2.specビルドに必要なパッケージが入っていれば、これだけでRPMパッケージが作成されます。yumコマンドでインストールし、httpdを再起動すればPhalcon2が使えます。httpd.serviceパッケージにはphalconコマンドとzephirコマンドが入っています。使い方はPhalconとZephirのサイトを参照してください。同じバージョンのRPMパッケージができると新旧の判断ができなくなるので、少なくともリリース番号を増やすと良いでしょう。2%{?dist}などとします。新しい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などでビルドできるようにした、などのコメントも歓迎します。今すぐできる、Webサイトへの2要素認証導入そもそもエスケープとは何なのか?PostgreSQLの文字列型の最大長は?2要素認証のTOTPとHOTP、どちらがより安全か?完全なSQLインジェクション対策PHPのHTMLエスケープ紹介エレクトロニック・サービス・イニシアチブのWebシステムのコンサルタントのブログです。PHPの開発、PHP4.x/5.xレガシーPHPセキュリティパッチサービスなどを行っています。ブログのサブタイトルを「書かない日記」としているのは、ブログを始めた時にあまり書かないつもりで始めたのでこのサブタイトルになっています。yohgaki@ohgaki.net私が記述したブログ中のコードは記載が無い場合はMITライセンスです。その他のコードは参考リンクなどのライセンス情報を参照ください。