ここでは、REST インターフェイスで使用するファイルフォーマットについて 詳細に説明します。
注意 バージョン番号を含むファイル名については、例として 0.1.2 を使うことにします。
一般に、ファイルのサイズはできるだけ小さくすべきです。 そうすれば、ファイルを取得する際に余計な帯域を使わなくてすみます。 ということもあり、すべての xml ファイル (元の package.xml は除く) で使用するタグの名前は 1 文字か 2 文字のものにしています。 pear list-all のようなコマンドを実行すると、 大量のファイルをダウンロードすることになるので、 些細なことですがこれはかなりの帯域の節約になります。
チャネルについての情報 |
これは、そのチャネルで最も重要なファイルです。 このファイルがなければ何も動作しません。 チャネルを発見するときに、このファイルを取得します。 このファイルでは REST ディレクトリとそのミラーの場所を定義します。
チャネル名 <name> は完全修飾形式のドメイン名で、たとえば channel.xml ファイルを更新する際の URL の一部として使用します。
PEAR では、チャネル名の短縮版となるエイリアスを提供しています。 これは日常の作業で用いられるものです。 <suggestedalias> に、短くて書きやすい単語を指定します。たとえばエイリアスが nice であったとすると、
pear install pear.mynicelittlespaceon.example.org/package |
pear install nice/package |
/channel.xml
そのドメインのルートディレクトリになければなりません。 その他のファイルはどこか特定のディレクトリ配下に置くこともできますが、 channel.xml だけは / になければならないのです。
<?xml version="1.0" encoding="utf-8"?> <channel version="1.0" xmlns="http://pear.php.net/channel-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/channel-1.0 http://pear.php.net/dtd/channel-1.0.xsd" > <name>pear.example.org</name><!-- URL, used to update channel.xml and such --> <suggestedalias>example</suggestedalias> <summary>Simple demo channel server</summary> <servers> <primary> <!-- you can ignore xmlrpc, it's deprecated anyway --> <xmlrpc> <function version="1.0">logintest</function> <function version="1.0">package.listLatestReleases</function> <function version="1.0">package.listAll</function> <function version="1.0">package.info</function> <function version="1.0">package.getDownloadURL</function> <function version="1.1">package.getDownloadURL</function> <function version="1.0">package.getDepDownloadURL</function> <function version="1.1">package.getDepDownloadURL</function> <function version="1.0">package.search</function> <function version="1.0">channel.listAll</function> </xmlrpc> <rest> <baseurl type="REST1.0">http://pear.example.org/rest/</baseurl> <baseurl type="REST1.1">http://pear.example.org/rest/</baseurl> <baseurl type="REST1.2">http://pear.example.org/rest/</baseurl> <baseurl type="REST1.3">http://pear.example.org/rest/</baseurl> </rest> </primary> <mirror host="us.pear.example.org"> <rest> <baseurl type="REST1.0">http://us.pear.example.org/rest/</baseurl> <baseurl type="REST1.1">http://us.pear.example.org/rest/</baseurl> <baseurl type="REST1.2">http://us.pear.example.org/rest/</baseurl> <baseurl type="REST1.3">http://us.pear.example.org/rest/</baseurl> </rest> </mirror> <mirror host="de.pear.example.org" ssl="yes" port="3452"> <rest> <baseurl type="REST1.0">https://de.pear.example.org:3452/rest/</baseurl> <baseurl type="REST1.1">https://de.pear.example.org:3452/rest/</baseurl> <baseurl type="REST1.2">https://de.pear.example.org:3452/rest/</baseurl> <baseurl type="REST1.3">https://de.pear.example.org:3452/rest/</baseurl> </rest> </mirror> </servers> </channel> |
全カテゴリの一覧 |
サーバ上の全カテゴリの名前とリンクを記述します。 リンクは URL エンコードします。
注意 他のファイルとは異なり、チャネル名は <c> タグではなく <ch> タグで囲まれます。
c/categories.xml
<?xml version="1.0" encoding="utf-8" ?> <a xmlns="http://pear.php.net/dtd/rest.allcategories" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.allcategories http://pear.php.net/dtd/rest.allcategories.xsd" > <ch>pear.example.org</ch> <c xlink:href="/rest/c/Tools/info.xml">Tools</c> <c xlink:href="/rest/c/Garbage%2Band%2BStuff/info.xml">Garbage and Stuff</c> </a> |
カテゴリについての情報 |
ここで、カテゴリの詳細を説明します。このファイルにはカテゴリ名 (<n>)、 チャネルサーバ (<c>)、 エイリアス (<a>) そしてカテゴリについての長い説明 (<d>) を記述します。
<?xml version="1.0" encoding="utf-8" ?> <c xmlns="http://pear.php.net/dtd/rest.category" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.category http://pear.php.net/dtd/rest.category.xsd" > <n>Tools</n> <c>pear.example.org</c> <a>Tools and Utilities</a> <d>This category holds all sorts of packages that might help you when trying to dominate the world.</d> </c> |
カテゴリ内の全パッケージの一覧 |
このファイルには、そのカテゴリ内の各パッケージの 名前とリンクの一覧が含まれます。
c/${categoryname}/packages.xml
注意 カテゴリ名には空白や特殊文字が含まれる可能性があります。 したがって (x)links は URL エンコードする必要があります。
<?xml version="1.0" encoding="utf-8" ?> <l xmlns="http://pear.php.net/dtd/rest.categorypackages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.categorypackages http://pear.php.net/dtd/rest.categorypackages.xsd" > <p xlink:href="/rest/p/earth">Earth</p> <p xlink:href="/rest/p/worlddominator">WorldDominator</p> </l> |
すべてのパッケージについての情報 |
packagesinfo.xml は、 カテゴリ内のパッケージについての情報を集めたものです。 パッケージの info.xml の内容は allreleases.xml からのリリース情報、そして各バージョンの依存性情報などが含まれます。
すべてのパッケージ情報は、それぞれ <pi> タグで囲みます。
c/${categoryname}/packagesinfo.xml
注意 カテゴリ名には空白や特殊文字が含まれる可能性があります。 したがって (x)links は URL エンコードする必要があります。
list-all コマンドで表示される "サマリ" 情報を記述します。
<?xml version="1.0" encoding="utf-8" ?> <f xmlns="http://pear.php.net/dtd/rest.categorypackageinfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.categorypackageinfo http://pear.php.net/dtd/rest.categorypackageinfo.xsd" > <pi> <?xml version="1.0" encoding="UTF-8" ?> <p xmlns="http://pear.php.net/dtd/rest.package" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.package http://pear.php.net/dtd/rest.package.xsd" > <n>WorldDominator</n> <c>pear.example.org</c> <!-- Full contents of p/${packagename}/info.xml follow --> </p> <a> <r><v>1.1.2</v><s>stable</s></r> <r><v>0.1.2</v><s>beta</s></r> <r><v>0.0.1</v><s>devel</s></r> </a> <deps> <v>0.1.2</v> <d><!-- serialized dependency information like deps.0.1.2.txt --></d> </deps> <deps> <v>0.0.1</v> <d><!-- serialized dependency information like deps.0.1.2.txt --></d> </deps> </pi> </f> |
全メンテナの一覧 |
サーバ上のパッケージの全開発者の名前とリンクを記述します。
FIXME: full names or just nicks? FIXME: lowercased nicks?
m/allmaintainers.xml
<?xml version="1.0" encoding="utf-8" ?> <m xmlns="http://pear.php.net/dtd/rest.allmaintainers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.allmaintainers http://pear.php.net/dtd/rest.allmaintainers.xsd" > <h xlink:href="/rest/m/pinky">pinky</h> <h xlink:href="/rest/m/thebrain">the brain</h> </m> |
メンテナの情報 |
メンテナの情報、たとえばハンドル (ニックネーム、<h>)、 フルネーム (<n>) ホームページの URL (<u>) などを記述します。
<?xml version="1.0" encoding="utf-8" ?> <m xmlns="http://pear.php.net/dtd/rest.maintainer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.maintainer http://pear.php.net/dtd/rest.maintainer.xsd" > <h>thebrain</h> <n>The Brain</n> <u>http://pinkyandthebrain.example.org</u> </m> |
全パッケージの一覧 |
このパッケージは、チャネル内のすべてのパッケージの一覧と チャネルサーバ名そのものを記述します。
パッケージ名に空白文字を含めることはできません。 空白文字を含めた場合、インストーラの挙動は未定義となります。
<?xml version="1.0" encoding="utf-8" ?> <a xmlns="http://pear.php.net/dtd/rest.allpackages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.allpackages http://pear.php.net/dtd/rest.allpackages.xsd" > <c>pear.example.org</c> <p>Earth</p> <p>WorldDominator</p> </a> |
パッケージについての情報 |
このファイルには、そのパッケージの バージョンに依存しない一般的な情報を記述します。 たとえばライセンス、カテゴリ、サマリ、説明、 リリースディレクトリへのリンクなどです。
remote-info は、このファイルを取得して情報を表示します。
<?xml version="1.0" encoding="utf-8" ?> <p xmlns="http://pear.php.net/dtd/rest.package" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.package http://pear.php.net/dtd/rest.package.xsd" > <n>WorldDomination</n> <c>pear.example.org</c> <ca xlink:href="/rest/c/Tools">Tools</ca> <l>Dictatoric License</l> <s>Tool to dominate the world</s> <d> Helps you dominating the world by fulfilling various tasks: - Feed the cats - Lock the doors after 23:42 </d> <r xlink:href="/rest/r/worlddomination"/> </p> |
パッケージのすべての開発者の一覧 |
アクティブか否かにかかわらず、 すべての開発者をこのファイルに記述します。
各開発者のハンドル (<h>) および活動状況 (<a>、0 が非アクティブで 1 がアクティブ) を記述します。
<?xml version="1.0" encoding="utf-8" ?> <m xmlns="http://pear.php.net/dtd/rest.packagemaintainers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.packagemaintainers http://pear.php.net/dtd/rest.packagemaintainers.xsd" > <p>WorldDominator</p> <c>pear.example.org</c> <m> <h>pinky</h> <a>1</a> </m> <m> <h>thebrain</h> <a>1</a> </m> <m> <h>deadcow</h> <a>0</a> </m> </m> |
パッケージの開発者の一覧 |
maintainers.xml と同じですが、さらに開発者のロールも含まれています。
ロール名 として使用できるのは lead、developer、 contributor および helper です。
<?xml version="1.0" encoding="utf-8" ?> <m xmlns="http://pear.php.net/dtd/rest.packagemaintainers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.packagemaintainers http://pear.php.net/dtd/rest.packagemaintainers.xsd" > <p>WorldDominator</p> <c>pear.example.org</c> <m> <h>pinky</h> <a>1</a> <r>developer</r> </m> <m> <h>thebrain</h> <a>1</a> <r>lead</r> </m> <m> <h>deadcow</h> <a>0</a> <r>helper</r> </m> </m> |
全パッケージのバージョンの一覧 |
このファイルには全パッケージのバージョンと安定性が記述されています。
複数のリリースがある場合、このファイルでは最新のバージョンが先頭にくるようにします。
<?xml version="1.0" encoding="utf-8" ?> <a xmlns="http://pear.php.net/dtd/rest.allreleases" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.allreleases http://pear.php.net/dtd/rest.allreleases.xsd" > <p>WorldDominator</p> <c>pear.example.org</c> <r><v>0.8.1</v><s>beta</s></r> <r><v>0.0.2</v><s>alpha</s></r> </a> |
全パッケージのバージョンと PHP のバージョンの一覧 |
allreleases.xml と同じですが、 さらに、必要となる PHP の最小バージョンについての情報が追加されています。
<?xml version="1.0" encoding="utf-8" ?> <a xmlns="http://pear.php.net/dtd/rest.allreleases2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.allreleases2 http://pear.php.net/dtd/rest.allreleases2.xsd" > <p>WorldDominator</p> <c>pear.example.org</c> <r><v>0.8.1</v><s>beta</s><m>4.4.2</m></r> <r><v>0.0.2</v><s>alpha</s><m>5.2.3</m></r> </a> |
最新のパッケージのバージョン |
このファイルの唯一の中身は、 最新版のバージョン番号をプレーンテキストで書いたものです。 安定性は関係なしに、もっとも新しいバージョン番号をここに書きます。
このパッケージには安定版のバージョン 1.0.0 のほかに 0.9.8 と 1.0.9 のふたつのベータ版、 そして開発版の 1.0.1 が存在すると仮定しましょう。 最新のバージョン番号はこの場合 1.0.9 なので、これを latest.txt に記述します。
1.0.9 |
そのリリースに関する短い xml ファイル |
このファイルは、完全版の package.xml から必要最小限の情報に絞り込んでサイズを最適化したファイルです。
package.xml と同様タグの順序が重要であり、 入れ替えてはいけません。
<?xml version="1.0" encoding="utf-8" ?> <r xmlns="http://pear.php.net/dtd/rest.release" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.release http://pear.php.net/dtd/rest.release.xsd" > <p xlink:href="/rest/p/worlddominator">WorldDominator</p> <c>pear.example.org</c> <v>0.1.2</v> <st>beta</st> <l>Dictatoric License</l> <m>thebrain</m> <s>Tool to dominate the world</s> <d>Helps you dominating the world by fulfilling various tasks: - Feed the cats - Lock the doors after 23:42</d> <da>2007-12-24 23:42:00</da> <n>* Fix atomic X-mas bug [thebrain]</n> <f>19588</f> <g>http://pear.example/get/WorldDominator-0.1.2</g> <x xlink:href="package.0.1.2.xml"/> </r> |
表 33-2タグの説明
タグ名 | 説明 |
---|---|
<p> | パッケージのディレクトリへの絶対パスを含めたパッケージ名 |
<c> | チャネルサーバ名 |
<v> | リリースバージョン |
<st> | 安定性 (stable、beta など) |
<l> | ライセンス名 |
<m> | リリース担当開発者のハンドル/ニックネーム |
<s> | サマリ |
<d> | 複数行の説明 |
<da> | リリース日時 |
<n> | リリースノート |
<f> | バイト単位の tgz のサイズ |
<g> | リリースアーカイブへの完全な URL |
<x> | そのバージョンの package.xml ファイルへのリンク |
そのリリースに関する短い xml ファイルのバージョン 2 |
0.1.2.xml と同じですが、追加の API と最小 PHP バージョンが増えています。
<?xml version="1.0" encoding="utf-8" ?> <r xmlns="http://pear.php.net/dtd/rest.release2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://pear.php.net/dtd/rest.release2 http://pear.php.net/dtd/rest.release2.xsd" > <p xlink:href="/rest/p/worlddominator">WorldDominator</p> <c>pear.example.org</c> <v>0.1.2</v> <a>0.1.2</a> <mp>5.2.3</mp> <st>beta</st> <l>Dictatoric License</l> <m>thebrain</m> <s>Tool to dominate the world</s> <d>Helps you dominating the world by fulfilling various tasks: - Feed the cats - Lock the doors after 23:42</d> <da>2007-12-24 23:42:00</da> <n>* Fix atomic X-mas bug [thebrain]</n> <f>19588</f> <g>http://pear.example/get/WorldDominator-0.1.2</g> <x xlink:href="package.0.1.2.xml"/> </r> |
完全な package.xml |
このリリースの完全な package.xml です。 バージョン 1 あるいはバージョン 2 の package.xml 形式となります。 そのパッケージに両方が含まれている場合はバージョン 2 のほうを使用します。
シリアライズした依存性情報 |
このファイルには、依存性情報の配列を PHP の serialize() 関数でシリアライズしたものが保存されます。
array(2) { ["required"]=> array(2) { ["php"]=> array(1) { ["min"]=> string(5) "5.2.3" } ["pearinstaller"]=> array(1) { ["min"]=> string(7) "1.7.1" } } ["optional"]=> array(1) { ["package"]=> array(2) { ["name"]=> string(4) "Toolbox" ["channel"]=> string(12) "pear.example.org" ["min"] => string(7) "1.3.0" } } } |
<dependencies> <required> <php> <min>5.2.3</min> </php> <pearinstaller> <min>1.7.1</min> </pearinstaller> </required> <optional> <package> <name>Toolbox</name> <channel>pear.example.org</channel> <min>1.3.0</min> </package> </optional> </dependencies> |