package.xml の解説package.xml バージョン 1.0 は非推奨です
package.xml 1.0 は非推奨です。package.xml バージョン 2.0 を使用しましょう。 ドキュメントは package.xml 2.0 ドキュメント にあります。
2007 年 4 月現在、世の中の 99.8% 以上の環境で PEAR 1.4 以降が利用されています。 したがって、もう後方互換性を気にする必要はありません。
パッケージ定義ファイル package.xml は、
その名が示す通り、ある PEAR パッケージについての情報が記載された
整形式の XML ファイルです。
このセクションでは、パッケージ定義に使用可能な要素について述べ、 自作のパッケージに対して定義ファイルを作成する方法について解説します。
PEAR_PackageFileManager パッケージを使えば、package.xml の作成が容易になります。 通常と同様、次のコマンドで PEAR_PackageFileManager をインストールできます。
$ pear install PEAR_PackageFileManager
package.xml のトップレベル要素は
<package version="1.0"> です。
副要素として使用可能なものは次の通り。
<name>: パッケージの名称
<summary>: パッケージについての解説の短い要約
<description>:
パッケージについての完全な解説
<license>: パッケージのライセンス
(LGPL, PHP License など).
<maintainers>:
パッケージのメンテナに関する情報
<maintainer>: メンテナ各人に関する情報
(複数回記述可能)
<user>: メンテナのユーザアカウント名
<role>: メンテナのパッケージ開発における役割
(lead, developer, helper のいずれか)
<name>: メンテナの本名
<email>: メンテナのメールアドレス
<release>: 現リリースに関する情報
<version>: リリースのバージョン番号
<state>: リリースの状態
(stable, beta, alpha, devel もしくは snapshot のいずれか)
<date>: リリースされた日時
<license>: コードに適用された
ライセンス
<notes>: リリースノート
<filelist>
<file name="xxx" role="xxx" />: ファイル名
<dir name="xxx" [role="xxx"]>:
サブディレクトリ名。このサブディレクトリには
<file role="xxx">
要素を再度含むことができます。
<deps>: パッケージの依存性のリスト
<dep type="xxx" rel="yyy" optional="yes">name</dep>
: 依存性に関するより詳細な情報については
下記
を参照してください。
<changelog>: パッケージに関する更新履歴的情報
<release>
<version>: 対象リリースのバージョン
<state>: 対象リリースの状態
<date>: 対象リリースの日付
<notes>: 更新履歴の情報
要素内で使用可能な文字は A-Z および a-z です。
他の文字、たとえば é など、
を使用するには、エンティティを用います(この場合は é)。
package.xml ファイルを PEAR_PackageFileManager を使って作成する場合には、 インストールされた PEAR をバージョン 1.4.0a2 以降にしておくと良いでしょう。 FileManager が自動的に処理しますので、使用可能な文字について心配しなくてすみます。
package.xml ファイルを手動で作成する場合は、使用するエンティティを 自ら入力する必要があります。 一般的に良く使われるエンティティについては、 http://www.evolt.org/article/A_Simple_Character_Entity_Chart/17/21234/ を参照してください。 必要な文字が無い場合は、 http://www.oasis-open.org/docbook/xmlcharent/0.1/index.shtml や他のリストも参照してください。
package.xml の検証には、
libxml2 に同梱されているツール
xmllint を使用します。
xmllint --dtdvalid http://pear.php.net/dtd/package-1.0 --noout package.xml
基本的な package.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <package version="1.0"> <name>Money_Fast</name> <summary>Make money fast.</summary> <description> This package helps you to make money pretty fast. </description> <license>PHP License</license> <maintainers> <maintainer> <user>foo</user> <name>Joe Foo</name> <email>[email protected]</email> <role>lead</role> </maintainer> </maintainers> <release> <version>1.0</version> <date>2002-05-27</date> <state>stable</state> <notes> This is the first release. </notes> <filelist> <dir name="/" baseinstalldir="Money"> <file role="php" name="Fast.php" /> </dir> </filelist> </release> </package>
この package.xml は、必要な要素をすべて含んでおり、
テンプレートとして使用できます。
多くの場合、タグ間の文字データを変更するだけで、この例を自作のパッケージに適用できます。
ネストしたディレクトリの例
<?xml version="1.0" encoding="ISO-8859-1" ?>
[...]
<release>
<version>1.0</version>
<date>2002-07-23</date>
<state>stable</state>
<notes>
This is the first release.
</notes>
<filelist>
<dir name="/" baseinstalldir="Money">
<file role="php" name="Fast.php" />
<dir name="Calculator">
<file name="Calculator.php" role="php" />
<file name="Currency.php" role="php" />
<file name="Stocks.php" role="php" />
</dir>
<dir name="docs">
<file name="README.txt" role="doc" />
<file name="tutorial.txt" role="doc" />
<dir name="examples">
<file name="NASDAQ.php" role="php" />
<file name="DAX.php" role="php" />
</dir>
</dir>
</dir>
</filelist>
</release>
</package>
この例では、便利な機能が使われています。パッケージ中に
同じタイプのファイルだけを含むディレクトリがある場合、
role 属性を <dir> タグに記述することで、
個別の <file> タグにいちいち記述しないですみます。
このセクションで得た知識に基づいて、 パッケージ定義ファイルを作成可能になったことでしょう。 この話題について、さらに疑問がある場合は、 メーリングリストで 質問してください。
<file> タグ中の type 属性により
ファイルのタイプを指定します。これにより、ファイルがインストール
される場所が決まります。
| 値 | インストール ディレクトリ | |
|---|---|---|
| php | PHP ソースファイル | パッケージ名によって決定されます |
| ext | 拡張モジュール。ダイナミックライブラリ | PHP 拡張モジュールのディレクトリ、または PHP_PEAR_EXTENSION_DIR で定義されたディレクトリ |
| doc | ドキュメントファイル | {PEAR_documentation_dir}/パッケージ名/ |
| data | パッケージ関連データファイル群(画像やデータ表など) | {PEAR_data_dir}/パッケージ名/ |
| test | パッケージ関連テストファイル(ユニットテストなど) | {PEAR_test_dir}/パッケージ名/ |
| script | パッケージ関連シェルスクリプト群 | PHP バイナリディレクトリ、または PHP_PEAR_BIN_DIR で指定されたディレクトリ |
| src and extsrc | C または C++ のソースコード | 直接はコピーされません - 拡張モジュールのビルドの際に使用されます |
PEAR パッケージのインストールの際に、PEAR パッケージマネージャに
インストール先のシステム特性をチェックさせることが可能です。
インストールに当たって必要な(もしくは推奨される)システム特性を
<dep> タグで定義します。
依存性を明示した package.xml
次の例は、PHP 4.3.0 以降および XML_Parser 1.0 に対する 依存性を記述する方法を示しています。
<?xml version="1.0" encoding="ISO-8859-1" ?> [...] </release> <deps> <dep type="php" rel="ge" version="4.3.0" /> <dep type="pkg" rel="has" version="1.0">XML_Parser</dep> </deps> </package>
type 属性
type 属性には、次が指定できます。
| 値 | 意味 | 例 | |
|---|---|---|---|
| pkg | パッケージ | 特定のパッケージに依存 | "HTML_Flexy" |
| ext | 拡張モジュール | 特定の PHP 拡張モジュールに依存 | "curl" |
| php | PHP | 特定の PHP バージョンに依存 | "4.2" |
| prog | プログラム | システムパス中にある特定のプログラムに依存(PEAR インストーラでは未サポート) | "latex" |
| os | オペレーティングシステム | 特定の(バージョンの)OS に依存 | "Linux" |
| sapi | サーバ API | 特定のサーバ API に依存(PEAR インストーラでは未サポート) | "Apache" |
| zend | Zend | 特定の Zend API バージョンに依存(PEAR インストーラでは未サポート) | "2" |
パッケージ定義ファイルの DTD では他のタイプもサポートするようになっていますが、 まだ実際に実装されるにいたっていません。
rel 属性
rel 属性には、インストール先のシステム特性との関連を指定します。
| 値 | 意味 | 使用可能な type 属性 | |
|---|---|---|---|
| has | 保持 | インストール先のシステムが要求された特性を保持している。version 属性は無視されます。 | pkg, ext, php, prog, os, sapi, zend |
| eq | 合致 | インストール先のシステム特性が version 属性値と合致している。 | pkg, ext, php, prog, os, sapi, zend |
| lt | 未満 | インストール先のシステム特性が version 属性値より小さい。 | pkg, ext, php, zend |
| le | 以下 | インストール先のシステム特性が version 属性値以下である。 | pkg, ext, php, zend |
| gt | より大きい | インストール先のシステム特性が version 属性値より大きい。 | pkg, ext, php, zend |
| ge | 以上 | インストール先のシステム特性が version 属性値以上である。 | pkg, ext, php, zend |
| not | 衝突 | 依存性が本パッケージと衝突しており、共存できない。 version 属性は無視されます。 | ext, php |
値を指定しない場合、
has が指定されたことになります。
rel 属性を用いるには PEAR 1.4.0 かそれ以降が必要です。
version 属性
version は、
rel 属性で比較されるバージョン値を指定します。
optional 属性
optional 属性は、
あるパッケージが絶対に必要なのではなく、
そのパッケージをインストールすることで機能が拡張される場合に使用します。
指定可能な値は、"yes" および "no" です。
optional 属性が指定されない場合は、
そのパッケージが絶対に必要であると看做されます。
optional="yes" を使用した場合、次のような
インストールメッセージが出力されます。
$ pear install <package>
Optional dependencies:
Package `XML_Tree' is recommended to utilize some features.
Package `MDB' is recommended to utilize some features.