wiki:PackagingPolicy/PHP

PHPライブラリ系パッケージのポリシー

PHPのライブラリ的なものとしては、大きく分けて以下の2種類があります。

  • 機能拡張(PECLモジュール等、C言語等で書かれたもの)
  • PHPコンポーネント(PEARコンポーネント等、PHP言語で書かれたもの)

これらのパッケージングポリシーについて以下に記述します。

パッケージ命名規則

機能拡張

バイナリパッケージ名

対象となるPHPバージョンによってバイナリパッケージ名を変え、"php5-ext-(拡張機能名)"または"php70-ext-(拡張機能名)"とします。

(例)Memcached拡張の場合

  • php5-ext-memcached
  • php70-ext-memcached

ソースパッケージ名

php5・php70用を1つのsrc.rpmから生成する場合

"php-ext-(拡張機能名)"とします。

(例)Memcached拡張の場合

  • php-ext-memcached
php5・php70用を別個のsrc.rpmから生成する場合

"php5-ext-(拡張機能名)"または"php70-ext-(拡張機能名)"とします。

(例)Memcached拡張の場合

  • php5-ext-memcached
  • php70-ext-memcached

PHPコンポーネント

バイナリパッケージ名

対象となるPHPバージョンによってバイナリパッケージ名を変え、"php5-(コンポーネント名)"または"php70-(コンポーネント名)"とします。アンダスコア("_")はハイフン("-")に変換します。

(例)Archive_Tarクラスの場合

  • php5-Archive-Tar
  • php70-Archive-Tar

ソースパッケージ名

php5・php70用を1つのsrc.rpmから生成する場合

"php-(コンポーネント名)"とします。

(例)Archive_Tarクラスの場合

  • php-Archive-Tar
php5・php70用を別個のsrc.rpmから生成する場合

"php5-(コンポーネント名)"または"php70-(コンポーネント名)"とします。

(例)Archive_Tarクラスの場合

  • php5-Archive-Tar
  • php70-Archive-Tar

機能拡張のパッケージング時のrpmマクロ

PHP本体のAPIバージョンと合っているパッケージのみインストール可能となるよう、以下のマクロを用意してあります。

  • %req_php_api (PHP extension用)
  • %req_zend_api (Zend extension用)

specファイル中にて、

  • php5用の場合
    %if "%{?req_php5_api}" != ""
    Requires: %{req_php5_api}
    %endif
    
  • php70用の場合
    %if "%{?req_php70_api}" != ""
    Requires: %{req_php70_api}
    %endif
    

と記述することにより、rpm依存関係上でも、機能拡張パッケージのbuild時に使用したPHPと同じAPIバージョンを要求するようになります。