Synopsis 22: Package Format [ DRAFT ]
Jos Boumans <kane@cpan.org> Audrey Tang <audreyt@audreyt.org> Florian Ragwitz <rafl@debian.org> Tim Nelson <wayland@wayland.id.au>
Created: 3 Nov 2005 Last Modified: 19 Dec 2008 Version: 2
私は、少数の項とこのドキュメントがそれらをカバーするはずかどうかリストすることによって、始めるだろう。
次のことは有用なインスピレーションであり得る:
一般的なフローのステップ1が理想的に、 p5 の最新の Module のように:自動ツールによってされるべきだ:スタータあるいは somesuch 。 それが幾分これらのライン(メモ、これはただ例に過ぎない)に沿っての配置を作り出すべきであると言えば十分だ:
p5-Foo-Bar/
lib/
Foo/
Bar.pm
t/
00_load.t
_jib/
META.info
ファイルで - ジブ dir が実装メタデータの一部である. ファイルがステップ2で理想的に言葉で表現されるものによって(主として)満たされる実装についてすべての集められたメタデータを持つ META.info ファイルである最も重要なものGeneral Flow. Any プリ / posthook ファイルが同じくこのディレクトリに入るべきだ。
このディレクトリは拡張可能であるべきだ、それで新規ファイルが相関性を延長するために付け加えられることができる。
上に項を見ろ Metadata Spec 詳細な情報のために。
これらファイルがステップ3で作成されて存在するのGeneral Flow
JIB 単純な3はまだ周知の機能拡張がであると「思われない」文字結合か。 周りにある何もない(とき・から・につれて・ように)、それは故意に perl に特定されていないJIB それを perl のみに制限している指定。
# 30 - 同じくpackage ネームスペースと転送元分配両方として P6 で二重の意味を振る舞っている。 我々が意味して前者を取り去って、そしてとしてそれらを参照する容器module そしてnamespace 今から?
.jib ファイルは、 installable パッケージではなく、転送元パッケージを配布するために設計されたアーカイブだ。 我々がクライアントサイドに関するもの(Cビットあるいは同等物を持っているもの)をコンパイルする必要があるであろう(とき・から・につれて・ように)、そして我々が手の前にインストール経路を知ることができないから、転送元実装は明白な選出だ。
installable 実装のようで、バイナリ.deb そのために選択肢じゃない。
これら.jib そうするためのメタデータと非常に同様の installable コード化を含んでいる.deb 我々が、メタデータが同じくそうするために使われること以外、知っているパッケージcompile (もっと良い項の欠如のためにこれまでのところ)ユーザ側の上のコード化。
名前“の.jib ファイルが次のように決定される:
<prefix>-<package-name>-<version>-<authority>.<extension>
実践で、これはこれらのラインに沿って名前を産み出すだろう:
p5-Foo-Bar-1.1-cpan+kane.jib
Internal 配置は次の通りだ:
- control.tgz
* contains the data in the _jib directory
- data.tgz
* contains the following directories the other directories.
This may be limited in the future, by say, a manifest.skip
like functionality, or by dictating a list of directories/
files that will be included
2冊の上に言及されたアーカイブと並んでもっと多くのファイルを出荷するスペースがある。 これは我々が超過の md5sum 、バージョン、シグネチャー、何でも送ることを可能にする。
- Define no more than needed to get started for now
- Allow for future extensions
- Use YAML as metadata format as it's portable and available standard
in perl6
- Prefix Package prefix category (p5)
- Name Perl module name (Foo-Bar)
- Version Perl module version (1.2.3)
- Authority From S11 (cpan+KANE)
- Package Full package name (p5-Foo-Bar-1.2.3-cpan+kane)
- Description Description of function (This is what it does)
- Author CPAN author id (KANE)
- Depends Packages it depends on[1][2](p5-Foo)
- Provides Packages this one provides (p5-Foo-Bar,
p5-Foo-Bar-cpan+kane)
<Prefix> - <名前> - <Version> - <Authority>組合せが < 上がって Package をする > 名として、多分、我々は前のアウトを残しておくことができる。
上昇傾向はすべてのフィールドがユニークな情報を含んでいることを確認するはずだ。
悪い面は第三者パーサーが理解する必要があるであろうということであるPackage 構文。
多分、 Again Author そしてAuthority フィールドが重なり合う、そしてAuthority 両方のケースを持たせられることができる。
[1] This is packages, *not* modules. If we need a module -> package
mapping, this needs to be done when extracting the data from the
compiler, and queried against the available packages cache.
[2] See the section on L<Dependencies>
- Build-Depends Packages needed to build this package
- Suggests Packages suggested by this package
- Recommends Packages recommended by this package
- Enhances Packages that are enhanced by this package
- Conflicts Packages this one conflicts with
- Replaces Packages this one replaces
- Tags Arbitrary metadata about the package,
like flickr and debtags
- Contains List of modules (and scripts?) contained
in the package
[3] Steal more tags from debian policy
属国表記法があなたが次のコンセプトを表現することを可能にする:
代替物を指定する
累積的な要求事項を指定する
バージョン要件で標準を指定する
これは上の展開式をネストすることを許す
a, b # a AND b
[a, b] # a OR b
{ a => "> 2" } # a greater than 2
{ a => 1 } # shorthand for a greater or equal to 1
\[ ... ] # grouping
a, [b,c] # a AND (b OR c)
{ a => 1 }, { a => '< 2' } # a greater or equal to 1 AND smaller than 2
[a, \[ b, c ] ] # a OR (b AND c) [1]
[1] This is possibly not portable to other languages. Options seem
thin as we don't have some /other/ grouping mechanism than [ ], { }
and \[ ]; ( ) gets flattened and \( ) == [ ].
We could abuse { } to create { OR => [ ] } and { AND => [ ] }
groups, but it would not read very intuitively. It would also mean
that the version requirements would have to be in the package naming,
ie. 'a > 2' rather than a => '> 2'
# a, b -- AND
- a
- b
# [a, b] -- OR
-
- a
- b
# { a => "> 2" } -- VERSIONED
a: > 2
# { a => 1 } -- VERSIONED
a: 1
# \[ ... ] -- GROUPING
- !perl/ref:
=:
- ...