TITLE

Synopsis 22: Package Format [ DRAFT ]

AUTHORS

Jos Boumans <kane@cpan.org>
Audrey Tang <audreyt@audreyt.org>
Florian Ragwitz <rafl@debian.org>
Tim Nelson <wayland@wayland.id.au>
 

VERSION

Created: 3 Nov 2005

Last Modified: 19 Dec 2008
Version: 2
 

OVERVIEW

Terminology と有効範囲

私は、少数の項とこのドキュメントがそれらをカバーするはずかどうかリストすることによって、始めるだろう。

* .jib がファイルする;これは転送元実装構成であって、そしてこのドキュメントで指定される
* CPAN6 ;(CPAN のような)保存回線網を管理することに対して、これは1つのソフトウェアだ。 このではないはこのドキュメントで指定した; http://cpan6.org/ を見ろ
* PAUSE6 ;これは cpan6 ソフトウェア(above 参照)に基づいて実際の回線網だ。 それが同じくであるここで文書化する.
* CPAN6.pm ;これはそれが PAUSE6 の上に手に入れることができるもので始まる1つのソフトウェアであって、そしてあなたにインストールされた perl モジュール(これは CPANPLUS / cpan2dist で置換だ)を与えようと試みる

インスピレーション

次のことは有用なインスピレーションであり得る:

* Debian Policy : http://www.us.debian.org/doc/debian-policy
* Software ::包装業者:: Metadata : http://perlsoftpackmet.svn.sourceforge.net/viewvc/perlsoftpackmet/main/doc/ (Overview の隣りに Rev. 列にリンクの(人たち・もの)をクリックしろ)

LAYOUT をパッケージしろ

プロジェクトディレクトリ

一般的なフローのステップ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 詳細な情報のために。

.jib がファイルする

これらファイルがステップ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 、バージョン、シグネチャー、何でも送ることを可能にする。

METADATA SPEC

- 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>
 

フィールド[3]を示唆した

- 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
 

DEPENDENCIES

属国 Notation

属国表記法があなたが次のコンセプトを表現することを可能にする:

OR

代替物を指定する

AND

累積的な要求事項を指定する

パートナー VERSION 要件

バージョン要件で標準を指定する

群化

これは上の展開式をネストすることを許す

基本的な表記法:

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'
 

直列化 Examples

# a, b -- AND
- a
- b

# [a, b] -- OR
-
  - a
  - b

# { a => "> 2" } -- VERSIONED
a: > 2

# { a => 1 } -- VERSIONED
a: 1




# \[ ... ]  -- GROUPING
- !perl/ref:
  =:
    - ...