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
例 20-1基本的な package.xml
|
この package.xml は、必要な要素をすべて含んでおり、 テンプレートとして使用できます。 多くの場合、タグ間の文字データを変更するだけで、この例を自作のパッケージに適用できます。
例 20-2ネストしたディレクトリの例
|
この例では、便利な機能が使われています。パッケージ中に 同じタイプのファイルだけを含むディレクトリがある場合、 role 属性を <dir> タグに記述することで、 個別の <file> タグにいちいち記述しないですみます。
このセクションで得た知識に基づいて、 パッケージ定義ファイルを作成可能になったことでしょう。 この話題について、さらに疑問がある場合は、 メーリングリストで 質問してください。
<file> タグ中の type 属性により ファイルのタイプを指定します。これにより、ファイルがインストール される場所が決まります。
表 20-1指定可能な値
値 | インストール ディレクトリ | |
---|---|---|
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> タグで定義します。
例 20-3依存性を明示した package.xml 次の例は、PHP 4.3.0 以降および XML_Parser 1.0 に対する 依存性を記述する方法を示しています。
|
type 属性には、次が指定できます。
表 20-2type に指定可能な値
値 | 意味 | 例 | |
---|---|---|---|
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 属性には、インストール先のシステム特性との関連を指定します。
表 20-3rel に指定可能な値
値 | 意味 | 使用可能な 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 は、 rel 属性で比較されるバージョン値を指定します。
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. |