パッケージ定義ファイル package.xml は、 その名前からもわかるように、PEAR パッケージの情報を含む 整形式 XML ファイルです。バージョン 2.0 では、バージョン 1.0 に対して以下のような重要な拡張が施されています。
チャネルのサポート
バイナリ PECL パッケージのサポート (PEAR 1.4.0 では完全には実装されていません)
より具体的な依存性解決
既存のバージョン 1.0 の package.xml については、以下のコマンドにより ほぼ等価なパッケージを作成することが可能です。
$ pear convert |
PEAR_PackageFileManager は、バージョン 1.6.0 以降で PEAR_PackageFileManager2 クラスによって package.xml 2.0 をサポートしていることに注意しましょう。
PECL 開発者向け: PECL 固有の機能についての詳細な情報は こちらをご覧ください。
注意 package.xml バージョン 2.0 は、PEAR 1.4 以降でサポートされています。 2007 年 4 月現在、世の中の 99.8% 以上の環境で PEAR 1.4 以降が利用されています。 したがって、もはや後方互換性を気にして v1.0 をサポートする必要はありません。
<?xml version="1.0"?> <package version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd"> <name>PEAR</name> <channel>pear.php.net</channel> <extends>OldPackage</extends> <summary>1 行での概要説明</summary> <description>長めの説明文。 この文は、リリース間で変わることはあまりありません。リリースノートには "notes" タグを使用します。 </description> <lead> <name>Greg Beaver</name> <user>cellog</user> <email>cellog@php.net</email> <active>yes</active> </lead> <date>2005-02-26</date> <time>20:30:13</time> <-- 注意: <time> はオプションです --> <version> <release>1.4.0a2</release> <api>1.4.0</api> </version> <stability> <release>alpha</release> <api>alpha</api> </stability> <license uri="http://www.php.net/license/">PHP License</license> <notes> リリースノートをここに記述します。 複数行にまたがることも可能です。 </notes> <contents> <dir name="/"> <dir name="PEAR"> <dir name="ChannelFile"> <file name="Parser.php" role="php" /> </dir> <!-- /PEAR/ChannelFile --> <file name="Dependency2.php" role="php"> <tasks:replace from="@PEAR-VER@" to="version" type="package-info"/> </file> </dir> <!-- /PEAR --> <dir name="scripts" baseinstalldir="/"> <file name="pear.bat" role="script"> <tasks:replace from="@bin_dir@" to="bin_dir" type="pear-config" /> <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" /> <tasks:replace from="@include_path@" to="php_dir" type="pear-config" /> <tasks:windowseol/> </file> <file name="pecl.bat" role="script"> <tasks:replace from="@bin_dir@" to="bin_dir" type="pear-config" /> <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" /> <tasks:replace from="@include_path@" to="php_dir" type="pear-config" /> <tasks:windowseol/> </file> <file name="pear.sh" role="script"> <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" /> <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" /> <tasks:replace from="@pear_version@" to="version" type="package-info" /> <tasks:replace from="@include_path@" to="php_dir" type="pear-config" /> <tasks:unixeol/> </file> <file name="pecl.sh" role="script"> <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" /> <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" /> <tasks:replace from="@pear_version@" to="version" type="package-info" /> <tasks:replace from="@include_path@" to="php_dir" type="pear-config" /> <tasks:unixeol/> </file> <file name="pearcmd.php" role="php"> <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" /> <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" /> <tasks:replace from="@pear_version@" to="version" type="package-info" /> <tasks:replace from="@include_path@" to="php_dir" type="pear-config" /> </file> <file name="peclcmd.php" role="php"> <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" /> <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" /> <tasks:replace from="@pear_version@" to="version" type="package-info" /> <tasks:replace from="@include_path@" to="php_dir" type="pear-config" /> <tasks:footask/> </file> </dir> <!-- /scripts --> <file name="package.dtd" role="data" /> <file name="postinstall.php" role="php"> <tasks:postinstallscript/> </file> <file name="template.spec" role="foo" /> </dir> <!-- / --> </contents> <compatible> <name>FooPackage</name> <channel>pear.php.net</channel> <min>1.3.0</min> <max>1.5.0</max> </compatible> <dependencies> <required> <php> <min>4.2</min> <max>6.0.0</max> </php> <pearinstaller> <min>1.4.0dev13</min> </pearinstaller> <package> <name>Archive_Tar</name> <channel>pear.php.net</channel> <min>1.1</min> <recommended>1.2</recommended> </package> <package> <name>Foo</name> <uri>http://www.example.com/Foo-1.2.0.tgz</uri> </package> <extension> <name>xml</name> </extension> <os> <name>windows</name> <conflicts/> </os> <arch> <pattern>*-i?86-*-*</pattern> </arch> </required> <optional> <package> <name>PEAR_Frontend_Web</name> <channel>pear.php.net</channel> <min>0.5.0</min> </package> <package> <name>PEAR_Frontend_Gtk</name> <channel>pear.php.net</channel> <min>0.4.0</min> </package> </optional> <group name="remoteinstall" hint="パッケージをリモートの ftp サーバにインストールする機能を追加します"> <package> <name>Net_FTP</name> <channel>pear.php.net</channel> <min>1.3.0RC1</min> <recommended>1.3.0</recommended> </package> </group> <group name="webinstaller" hint="Web ベースの PEAR インストーラ"> <package> <name>PEAR_Frontend_Web</name> <channel>pear.php.net</channel> <min>0.5.0</min> </package> </group> <group name="gtkinstaller" hint="PHP-GTK ベースの PEAR インストーラ"> <package> <name>PEAR_Frontend_Gtk</name> <channel>pear.php.net</channel> <min>0.4.0</min> </package> </group> </dependencies> <usesrole> <role>foo</role> <package>Foo</package> <channel>pear.example.com</channel> </usesrole> <usestask> <task>footask</task> <package>Footask</package> <channel>pear.example.com</channel> </usestask> <phprelease> <installconditions> <os> <name>windows</name> </os> </installconditions> <filelist> <install as="pear.bat" name="scripts/pear.bat" /> <install as="pecl.bat" name="scripts/pecl.bat" /> <install as="pearcmd.php" name="scripts/pearcmd.php" /> <install as="peclcmd.php" name="scripts/peclcmd.php" /> <ignore name="scripts/pear.sh" /> <ignore name="scripts/pecl.sh" /> </filelist> </phprelease> <phprelease> <filelist> <install as="pear" name="scripts/pear.sh" /> <install as="pecl" name="scripts/pecl.sh" /> <install as="pearcmd.php" name="scripts/pearcmd.php" /> <install as="peclcmd.php" name="scripts/peclcmd.php" /> <ignore name="scripts/pear.bat" /> <ignore name="scripts/pecl.bat" /> </filelist> </phprelease> <changelog> <release> <version> <release>1.3.5</release> <api>1.3.0</api> </version> <stability> <release>stable</release> <api>stable</api> </stability> <date>2005-02-26</date> <license uri="http://www.php.net/license/3_0.txt">PHP License</license> <notes> * fix Bug #3505: pecl can't install PDO * enhance pear run-tests dramatically * fix Bug #3506: pear install should export the pear version into the environment </notes> </release> <release> <version> <release>1.4.0a1</release> <api>1.4.0</api> </version> <stability> <release>alpha</release> <api>alpha</api> </stability> <date>2005-02-26</date> <license uri="http://www.php.net/license/3_0.txt">PHP License</license> <notes> This is a major milestone release for PEAR. In addition to several killer features, every single element of PEAR has a regression test, and so stability is much higher than any previous PEAR release, even with the alpha label. New features in a nutshell: * full support for channels * pre-download dependency validation * new package.xml 2.0 format allows tremendous flexibility while maintaining BC * support for optional dependency groups and limited support for sub-packaging * robust dependency support * full dependency validation on uninstall * support for binary PECL packages * remote install for hosts with only ftp access - no more problems with restricted host installation * full support for mirroring * support for bundling several packages into a single tarball * support for static dependencies on a url-based package Specific changes from 1.3.5: * Implement request #1789: SSL support for xml-rpc and download * Everything above here that you just read </notes> </release> </changelog> </package> |