doc/on-disk-format.txt
author Edward Pilatowicz <edward.pilatowicz@oracle.com>
Mon, 16 Sep 2013 21:26:31 -0700
changeset 2945 24196b483cc6
parent 2219 60ad60f7592c
permissions -rw-r--r--
17461187 packagemanager displays unexpected error message
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     1
pkg(5): image packaging system
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     2
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     3
This information is Copyright (c) 2010, Oracle and/or its affiliates.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     4
All rights reserved.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     5
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     6
ON-DISK FORMAT PROPOSAL
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     7
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     8
1.  Introduction
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
     9
    1.1. Date of This Document:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    10
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    11
        06/02/2010
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    12
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    13
    1.2. Name of Document Author/Supplier:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    14
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    15
        Shawn Walker, Oracle,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    16
          on behalf of the pkg(5) project team
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    17
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    18
    1.3. Acknowledgements:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    19
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    20
        This document is largely based on comments from the following
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    21
        individuals to whom the author is exceedingly indebted to:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    22
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    23
        - Danek Duvall
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    24
        - Mike Gerdts
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    25
        - Stephen Hahn
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    26
        - Krister Johansen
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    27
        - Dan Price
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    28
        - Brock Pytlik
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    29
        - Bart Smaalders
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    30
        - Peter Tribble
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    31
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    32
2. Project Summary
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    33
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    34
    2.1. Project Description:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    35
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    36
        "...the repository can be archived up, put on a CD, memory
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    37
        stick, 2D barcode, and protected by the Black Knight, fire
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    38
        moats, komodo dragons, etc." - Danek Duvall
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    39
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    40
        pkg(5) is primarily a network-oriented binary packaging system.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    41
        Although some of the tools it provides support filesystem-based
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    42
        operations for publication, the primary expected use for package
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    43
        operations (such as install, update, search, etc.) is between an
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    44
        intelligent client and one or more servers that provide access
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    45
        to a package repository and/or other interactive services.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    46
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    47
        This project seeks to define and establish an on-disk format
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    48
        (and corresponding container format), for the pkg(5) system,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    49
        with the intent that it can enable the ubiquitous, transparent
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    50
        use of package data from filesystem-based resources.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    51
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    52
        The changes proposed by this project are evolutionary, not
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    53
        revolutionary, in nature.  In particular, this project seeks
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    54
        to refine and adopt the existing repository format used by the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    55
        pkg(5) depot server as the on-disk format.  Supplementary to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    56
        that, it also seeks the addition of a container format to ease
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    57
        provisioning of the on-disk format, and the unification of the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    58
        scheme used by the client and server to store package data.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    59
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    60
    2.2. Problem Area:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    61
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    62
        For some deployments, network-based package data access is not
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    63
        possible or is undesirable.  Concerns often cited in this area
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    64
        include:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    65
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    66
        - lack of access control or ability to easily integrate with
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    67
          existing access control systems,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    68
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    69
        - inability to rely on alternative (or existing) provisioning
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    70
          arrangements (such as NFS-based file servers),
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    71
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    72
        - environmental or procedural requirements that prohibit the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    73
          ability to or use of a network-based service,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    74
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    75
        - characteristics of network protocols (such as HTTP, etc.) that
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    76
          artificially limit functionality or performance (as opposed to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    77
          iSCSI or other alternatives),
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    78
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    79
        - ease of administration of filesystem-based resources, and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    80
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    81
        - ease of transferring package data.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    82
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    83
3. Project Technical Description:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    84
    3.1. Details:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    85
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    86
        This project defines an on-disk format (and corresponding con-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    87
        tainer format) that is intended for the supplemental or complete
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    88
        provisioning of package data at all stages of the package life-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    89
        cycle.  That is, when package data is published, stored by the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    90
        client or server, or otherwise used during package operations.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    91
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    92
        The on-disk format (defined in detail later in this document)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    93
        is intended to be distributable in its raw form (a pre-defined
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    94
        structure of directories and files) or within a container format
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    95
        (such as a zip file, etc.).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    96
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    97
        Out of necessity, the use of filesystem-based resources (such as
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    98
        those provided by the on-disk format) will sometimes limit the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
    99
        operations that can be performed to a subset of those normally
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   100
        available when interacting with a network-based repository.  For
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   101
        example, search and publisher configuration may not be possible,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   102
        and purely interactive services such as the BUI (Browser UI)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   103
        offered by the depot server for a repository, RSS feeds, and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   104
        others will not be available.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   105
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   106
        Because of the wide-ranging impact of the changes required to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   107
        implement this functionality, it is intended that the project
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   108
        be implemented in the following sequence:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   109
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   110
        - Client Support for filesystem-based Repository Access
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   111
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   112
        - Depot Storage, Client Transport and Publication Tool Update
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   113
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   114
        - Client Storage and Image Format Update
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   115
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   116
        - Client and Depot Support for On-Disk Archive Format
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   117
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   118
    3.2. Bug/RFE Number(s):
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   119
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   120
        As an example of the kinds of defects and RFEs intended to be
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   121
        resolved by this project, see the following selection of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   122
        defect.opensolaris.org bug IDs:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   123
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   124
2152 standalone package support needed (on-disk format)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   125
166 depot doesn't set directory mode when creating directories
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   126
2086 validate that a repository is really a repository in pkg.depotd
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   127
6335 publisher repo with invalid certificate information shouldn't
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   128
    prevent querying other repos
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   129
6576 pkg install/update support for temporary publisher origins desired
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   130
6940 depot support for file:// URI desired
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   131
7213 ability to remove published packages
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   132
7273 manifests should be arranged in a hierarchy by publisher
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   133
7276 /var/pkg metadata needs reorg (looks busy)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   134
8433 client and pull need to refer to refer to "repository" instead of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   135
    "server"
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   136
8722 advanced repository metadata store needed
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   137
8725 versioning information for depot and repository metadata needed
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   138
9571 CachedManifest should be named FactoredManifest
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   139
9572 CachedManifest should allow consumers to specify cache location
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   140
9872 publication api should use new transport subsystem
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   141
9933 ability to control repository creation behaviour or removal of it
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   142
10244 caching dictionaries as a class variable prevents multi-image and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   143
    repo search
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   144
11362 Image update dying when trying to talk to a disabled and offline
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   145
    publisher
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   146
11740 publishers with installed packages should not be removable
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   147
12814 publisher prefixes should be forcibly lower-cased or case
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   148
    insensitive
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   149
14802 ability to have separate read / write download caches
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   150
15320 pkgsend will traceback if unable to parse server error response
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   151
15371 repository property defaults opensolaris.org-specific
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   152
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   153
    3.3. In Scope:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   154
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   155
        Filesystem-based data resourcing for package operations.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   156
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   157
    3.4. Out of Scope:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   158
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   159
        Package signing and fine-grained access control for package
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   160
        repositories.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   161
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   162
4. On-Disk Format Technical Description:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   163
    4.1. Overview:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   164
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   165
        The on-disk format is intended to exist both in a raw format as
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   166
        a pre-defined structure of directories and files, and in an
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   167
        archive format which is primarily a simple container for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   168
        the raw format.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   169
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   170
    4.2. Raw Format:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   171
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   172
        4.2.1. Goals:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   173
            The goals for the raw on-disk format include:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   174
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   175
            - unification of client and server package data storage
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   176
              for data common to both,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   177
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   178
            - transparent usage of package data regardless of operation
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   179
              or use by client or server,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   180
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   181
            - ease in composition and decomposition of package data
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   182
              stored within by publisher or package,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   183
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   184
            - re-use of existing publication tools for on-disk format,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   185
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   186
            - enablement of future publication tools to automatically
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   187
              be able to manipulate or use on-disk format, and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   188
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   189
            - ease of provisioning.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   190
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   191
        4.2.2. Raw Format specification:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   192
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   193
            The pkg(5) repository format is a set of directories and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   194
            files that conform to a pre-defined structure.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   195
            
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   196
            For a version 3 repository (the current format), the
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   197
            structure is as follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   198
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   199
            <REPO_ROOT>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   200
                catalog/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   201
                    <catalog v1 files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   202
                index/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   203
                    <index files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   204
                file/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   205
                    <first two letters of file hash>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   206
                        <file-named-by-hash>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   207
                pkg/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   208
                    <stem>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   209
                        <manifest-file>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   210
                trans/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   211
                    <in-flight transaction files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   212
                cfg_cache (optional repository configuration file)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   213
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   214
            Version 4 of the repository format eliminates the potential
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   215
            for unintended collisions between package metadata from
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   216
            different publishers and simplifies composition and decomp-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   217
            osition of repository content.  The top-level is an optional
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   218
            shared storage space for data common to all publishers in
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   219
            the repository, while the publisher subdirectory contains
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   220
            data specific to a publisher.  It is essentially a nested
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   221
            repository format, and can be defined as follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   222
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   223
            <REPO_ROOT>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   224
                file/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   225
                publisher/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   226
                    <prefix>/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   227
                        catalog/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   228
                            <catalog v1 files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   229
                        file/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   230
                            <first two letters of file hash>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   231
                                <file-named-by-hash>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   232
                        index/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   233
                        pkg/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   234
                            <stem>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   235
                                <manifest-file-for-pkg-version>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   236
                        trans/ (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   237
                            <in-flight transaction files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   238
                        pub.p5i (optional)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   239
                pkg5.repository (required)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   240
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   241
            By default, repository operations will store data in the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   242
            publisher-specific location found under publisher/<prefix>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   243
            for new repositories.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   244
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   245
            In the case that the top-level file/ directory is used,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   246
            automatic decomposition of contents into its publisher-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   247
            specific components will not be possible unless
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   248
            corresponding package manifests are also available. 
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   249
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   250
            To support easy composition, filtering, and creation of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   251
            package archives, directories above marked with the text
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   252
            '(optional)' must not be required.  The behaviour of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   253
            consumers accessing the contents of the repository should
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   254
            be as follows based on the directory accessed:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   255
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   256
            - file/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   257
                This optional directory serves as a place to store file
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   258
                data for more than one publisher.  Package files are
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   259
                stored in gzip format using a sha1sum of the file as the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   260
                filename, and then the first two letters of the filename
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   261
                as the parent directory's name.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   262
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   263
            - publisher/<prefix>/catalog/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   264
                If absent, consumers should determine the list of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   265
                packages available based on the manifest files present
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   266
                in the publisher/ subdirectory.  If present, consumers
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   267
                should expect v1 (or newer) catalog files, or none at
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   268
                all, to be contained within.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   269
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   270
            - publisher/<prefix>/file/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   271
                Consumers should always check this subdirectory first
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   272
                (if present) when retrieving package file data if the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   273
                publisher is known.  Package files are stored in gzip
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   274
                format using a sha1sum of the file as the filename, and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   275
                then the first two letters of the filename as the parent
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   276
                directory's name.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   277
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   278
            - publisher/<prefix>/index/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   279
                If absent, search functionality should be disabled for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   280
                this publisher, or a fallback to 'slow manifest-based
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   281
                search' performed.  If present, consumers should expect
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   282
                v1 (or newer) search files, or none at all, to be con-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   283
                tained within.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   284
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   285
            - publisher/<prefix>/pkg/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   286
                If absent, search must be disabled for this publisher
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   287
                even if index is present.  If present, manifests are
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   288
                stored in pkg(5) manifest format using the uri-encoded
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   289
                version of the package FMRI as the filename, and using
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   290
                the uri-encoded package FMRI stem (name) as the parent
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   291
                directory's name.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   292
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   293
            - publisher/<prefix>/trans/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   294
                If absent, this directory will be created during
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   295
                publication operations.  If present, in progress
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   296
                transaction data is stored in a directory named
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   297
                by the open time of the transaction as a UTC UNIX
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   298
                timestamp plus an '_' and the URI-encoded package
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   299
                FRMI.  As an example:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   300
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   301
                  1245176111_pkg%3A%2FBRCMbnx%400.5.11%2C5.11-0.116
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   302
                  %3A20090616T181511Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   303
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   304
            - publisher/<prefix>/pub.p5i
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   305
                This pkg(5) information (p5i) file should contain
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   306
                suggested configuration information for clients such as
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   307
                origins, mirrors, alias, etc.  Consumers can use this to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   308
                provide clients with initial or suggested configuration
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   309
                information for a given publisher.  If not present, the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   310
                publisher's identity should be assumed based on the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   311
                directory structure, while the refresh interval should
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   312
                be assumed to be 4 hours.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   313
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   314
            - pkg5.repository
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   315
                This file serves as an identifier and a place to store
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   316
                configuration information specific to the repository.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   317
                It *is not* an equivalent to the existing cfg_cache
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   318
                file which will no longer be used.  Its format and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   319
                structure are as follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   320
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   321
                [repository]
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   322
                version = <integer>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   323
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   324
            Any information found in the cfg_cache used in the previous
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   325
            repository format related to a publisher is now stored in
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   326
            the pub.p5i file for the related publisher.  (Examples of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   327
            information include origins, mirrors, maintainer info,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   328
            etc.)  As a result, the cfg_cache file is no longer used.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   329
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   330
            Any depot-specific properties, such as the feed icon, logo,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   331
            etc. are now completely managed using SMF or a user-provided
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   332
            configuration file.  This change was made not only to sim-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   333
            plify configuration, but to separate depot configuration
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   334
            from repsitory configuration.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   335
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   336
            An example version 4 repository might be structured as
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   337
            follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   338
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   339
            <REPO_ROOT>/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   340
              publisher/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   341
                example.com/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   342
                  catalog/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   343
                    catalog.attrs
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   344
                    catalog.base.C
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   345
                  file/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   346
                    ff/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   347
                      fffff277f5a8fb63e57670afc178415c2c5e706d
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   348
                  index/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   349
                    __at_depend
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   350
                    ...
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   351
                  pkg/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   352
                    package%2Fpkg/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   353
                      0.5.11%2C5.11-0.136%3A20100327T063139Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   354
                  trans/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   355
                    1245176111_pkg%3A%2FBRCMbnx%400.5.11%2C5.11-0.116
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   356
                    %3A20090616T181511Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   357
                  pub.p5i
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   358
                example.net/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   359
                  catalog/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   360
                    catalog.attrs
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   361
                    catalog.base.C
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   362
                  file/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   363
                    af/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   364
                      affff277f5a8fb63e57670afc178415c2c5e706d
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   365
                  index/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   366
                    __at_depend
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   367
                    ...
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   368
                  pkg/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   369
                    package%2Fpkg/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   370
                      0.5.11%2C5.11-0.133%3A20090327T062137Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   371
                  trans/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   372
                    1245176111_pkg%3A%2FFAAMbnx%400.5.11%2C5.11-0.139
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   373
                    %3A20100616T181511Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   374
                  pub.p5i
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   375
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   376
              pkg5.repository:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   377
                [repository]
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   378
                version = 4
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   379
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   380
    4.3. Archive Format:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   381
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   382
        4.3.1. Requirements:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   383
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   384
            The requirements for the on-disk archive format include:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   385
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   386
            - support for archives greater than 8GB in size,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   387
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   388
            - support for files in archive greater than 4GB in size,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   389
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   390
            - support for efficient storage of hard links,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   391
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   392
            - support for pathnames sigificantly greater than > 255
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   393
              characters in length,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   394
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   395
            - core Python bindings exist or can be easily created using
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   396
              an existing library,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   397
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   398
            - can be a container of compressed files, as opposed to a
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   399
              compressed container of uncompressed files,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   400
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   401
            - open, royalty-free, well-documented format with wide
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   402
              platform support and acceptance,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   403
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   404
            - multi-threaded decompression and compression possible,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   405
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   406
            - creation and basic manipulation of package archives
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   407
              possible using widely-available tools,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   408
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   409
            - simple composition and filtering of its content should be
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   410
              possible, and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   411
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   412
            - random access to the archive contents must be possible
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   413
              without reading the entire archive file.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   414
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   415
        4.3.2. Candidates:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   416
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   417
            A number of potential archive formats have been considered
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   418
            for use, including:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   419
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   420
            - 7z (7-Zip)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   421
            - cpio
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   422
            - pax (portable archive exchange format)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   423
            - ZIP
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   424
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   425
            The evaluations provided for each format here are not in-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   426
            tended to be exhaustive; rather they focus on the specific
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   427
            requirements of this project.  For more information about
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   428
            these formats, and the documents used to evaluate them,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   429
            please refer to section 6 of this proposal.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   430
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   431
        4.3.3. 7z Evaluation:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   432
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   433
            The 7z format was rejected for the following reasons:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   434
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   435
            - Does not permit random access to archive contents or
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   436
              requires the entire archive file to access the contents
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   437
              and adding this would require a custom variation of 7z.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   438
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   439
            - Although the 7z format supports compression methods other
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   440
              than LZMA, a primary motivator for using 7z would be the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   441
              ability to use LZMA natively as part of the conatiner
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   442
              format.  However, the tradeoffs in terms of CPU and memory
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   443
              footprint currently make LZMA unsuitable for pkg(5) when
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   444
              compared to other compression algorithms such as those
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   445
              used by gzip(1).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   446
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   447
            - Use of the 7z format would require integration of the LZMA
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   448
              SDK (which also provides a basic 7z API in C) and the cre-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   449
              ation of python bindings or the integration of a third
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   450
              party's (such as pylzma).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   451
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   452
            - No native support for extended attributes or UNIX owner/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   453
              group permissions.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   454
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   455
        4.3.4. cpio Evaluation:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   456
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   457
            The cpio format doesn't natively support random access to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   458
            archive contents, but the format itself doesn't prevent
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   459
            this.  An index could be added first file in the archive
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   460
            with the information needed to provide fast, random access
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   461
            to the archive contents.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   462
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   463
            The cpio format was rejected for the following reasons:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   464
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   465
            - The length of pathnames in cpio archives is limited to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   466
              256 characters for the portable format.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   467
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   468
            - Available tools vary significantly in maximum archive size
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   469
              support.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   470
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   471
            - The portable cpio format stores a copy of the file data
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   472
              with every hard link in an archive instead of simply
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   473
              storing a pointer to the source file in the archive.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   474
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   475
        4.3.4. PAX Evaluation:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   476
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   477
            The PAX format meets all of the requirements except that of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   478
            random access to archive contents.  However, the format
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   479
            itself doesn't prevent this.  A table of contents file could
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   480
            be supplied as the first file in the archive with the info-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   481
            rmation needed to provide fast, random access to the con-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   482
            tainer contents.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   483
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   484
        4.3.5. ZIP Evaluation:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   485
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   486
            The ZIP format meets all of the requirements listed above
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   487
            (assuming that ZIP64 extensions are used), with the ex-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   488
            ceptions listed below for which it was rejected:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   489
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   490
            - The use or implementation of some of the functionality
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   491
              documented in the .ZIP file format requires a license from
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   492
              PKWARE.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   493
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   494
            - While random archive content access is possible, the ZIP
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   495
              file format stores the index for the archive at the end of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   496
              the archive (as opposed to the beginning).  This increases
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   497
              the number of round trips that would be required for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   498
              potential remote random content access.  It also means
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   499
              that extraction requires multiple seeks to the end of the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   500
              file before any content can be extracted from the archive,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   501
              which can be detrimental to performance for some media
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   502
              types (optical, etc.).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   503
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   504
        4.3.6. Evaluation Conclusion:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   505
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   506
            Based on the requirements set forth in section 4.3.1, the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   507
            PAX format was selected as the on-disk archive format
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   508
            for pkg(5) packages.  However, to enable efficient access
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   509
            to the archive contents, an index file needs to be present
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   510
            as the first file in the archive.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   511
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   512
            Early evaluations of an unoptimised prototype were performed
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   513
            using a repository containing all packages for build 136 and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   514
            unbundleds.  The on-disk size of the repository was appox-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   515
            imately 4.98G.  The resulting archive was 5.0G in size, with
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   516
            an archive index file 9.7M in size (when the index was comp-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   517
            ressed using gzip).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   518
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   519
            First time access to the prototype archive for extraction of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   520
            a single file after creation yielded a total time of approx-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   521
            imately 5 seconds compared to approximately 36-42 seconds
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   522
            for utilities such as pax(1), tar(1), or gtar(1).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   523
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   524
            Creation of the archive took 7 minutes, 35 seconds on a
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   525
            custom-built Intel Core 2 DUO E8400, with 8GB Memory,
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   526
            and a 1TB 10000 RPM SATA Drive w/ 64MB Cache.
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   527
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   528
        4.3.7. Package Archive Specification:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   529
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   530
            pkg(5) archive files will have an extension of 'p5p' which
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   531
            will stand for 'pkg(5) package'.  The format of these
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   532
            archives matches that defined by IEEE Std 1003.1, 2004 for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   533
            the pax Interchange Format, with the exception that the
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   534
            first archive entry is tagged with an extended pax archive
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   535
            header that specifies the archive version and the version
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   536
            of the pkg(5) API that was used to write it.  In addition,
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   537
            the file for the first archive entry must be the index
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   538
            file file for the package archive.  The layout can be
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   539
            visualised as follows:
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   540
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   541
            .--------------------------------------------------------.
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   542
            | ustar header for pax header global archive data        |
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   543
            .--------------------------------------------------------.
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   544
            | pax global extended header data for archive            |
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   545
            .--------------------------------------------------------.
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   546
            | ustar header for pax header for archive index file     |
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   547
            .--------------------------------------------------------.
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   548
            | pax extended header data for archive index file        |
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   549
            .--------------------------------------------------------.
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   550
            | ustar header for package archive index file            |
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   551
            .--------------------------------------------------------.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   552
            | file data for package archive index file               |
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   553
            .--------------------------------------------------------.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   554
            | remaining archive data                                 |
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   555
            .________________________________________________________.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   556
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   557
            The archive and API version is stored in the header of the
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   558
            index file instead of the global header for two reasons:
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   559
            first, any headers in the global header are treated as
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   560
            though they apply to every entry in the archive, and
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   561
            secondly, the pax specification states that global headers
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   562
            should not be used with interchange media that could suffer
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   563
            partial data loss during transport.  Since the archive
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   564
            version primarily serves as a way for clients to reliably
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   565
            determine if a "standard" pax archive versus one with an
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   566
            index is being read, this approach seems reasonable.
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   567
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   568
            The reason for this limitation is to ensure that clients
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   569
            performing selective archive extraction can be guaranteed
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   570
            to find the location and size of the package archive index
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   571
            file without knowing the size of the header for the index
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   572
            file in advance (this layout ensures that clients can
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   573
            find the archive index and/or identify the archive in
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   574
            the first 2048 bytes).
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   575
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   576
            In addition, pkg(5) archives in this format make remote,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   577
            selective archive access possible.  For example, a client
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   578
            could request the first 2048 bytes of a pkg(5) archive file
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   579
            from a remote repository, identify the offsets of the index
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   580
            and then retrieve it using a HTTP/1.1 byte-ranges request.
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   581
            Once it has the archive index file, it can then perform
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   582
            additional byte-range requests to selectively transfer the
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   583
            the data for a set of specific files from the archive.  This
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   584
            convention also optimises access to the archive for sources
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   585
            that are heavily biased towards sequential reads.
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   586
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   587
            The index file must be named using the following template
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   588
            and be compressed using the gzip format described by RFCs
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   589
            1951 and 1952, and formatted according to section 4.3.8:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   590
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   591
                p5p.index.<index_file_number>.v<index_version>.gz
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   592
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   593
                <index_file_number> is an integer in string form that
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   594
                indicates which index file this is.  The number only
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   595
                exists so that each index file can remain unique in
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   596
                the archive.  An archive may contain multiple index
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   597
                files to support fast archive additions.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   598
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   599
                <index_version> is an integer in string form that
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   600
                indicates the version of the index file.  The initial
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   601
                version for this proposal will be '0'.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   602
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   603
            However, if the first file in the archive is found to not
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   604
            use the layout or format shown above, or any of the index
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   605
            files in the archive are not in a format supported by the
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   606
            client (version too old or too new), the archive must be
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   607
            treated as a standard pax archive and some operations may
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   608
            not be possible or experience degraded performance.  The
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   609
            same is also true if the index file is found to not match
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   610
            the archive contents.
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   611
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   612
            All entries in the archive (excluding any archive index
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   613
            files) must conform to the repository layout specified in
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   614
            section 4.2.2 of this proposal.
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   615
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   616
            Since a pkg(5) repository can contain one or more packages,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   617
            pkg(5) archive files can also contain the data for one or
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   618
            more packages.  This allows easy redistribution of a single
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   619
            package and all of its dependencies in a single file.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   620
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   621
            Finally, it should be noted that only ascii character path-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   622
            names are expected in the archive as the raw repository
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   623
            format does not use or support unicode pathnames.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   624
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   625
        4.3.8. Package Archive Index Specification:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   626
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   627
            The pkg(5) archive index file enables fast, efficient access
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   628
            to the contents of an archive.  It contains an entry for all
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   629
            files in the archive excluding the index file itself in the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   630
            following format (also referred to as index format version
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   631
            0):
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   632
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   633
                <name>NUL<offset>NUL<entry_size>NUL<size>NUL<typeflag>
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   634
                NULNL
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   635
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   636
                <name> is a string containing the pathname of the file
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   637
                in the archive using only ascii characters.  It can be
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   638
                up to 65,535 bytes in length.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   639
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   640
                <offset> is an unsigned long long integer in string form
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   641
                containing the relative offset in bytes of the first
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   642
                header block for the file in the archive.  The offset is
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   643
                relative to the end of the last block of the index file
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   644
                in the archive they are listed in.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   645
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   646
                <entry_size> is an unsigned long long integer in string
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   647
                form containing the size of the file's entry in bytes
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   648
                in the archive (including archive headers and trailers
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   649
                for the entry).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   650
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   651
                <size> is an unsigned long long integer in string form
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   652
                containing the size of the file in bytes in the archive.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   653
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   654
                <typeflag> is a single character representing the type
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   655
                of the file in the archive.  Possible values are:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   656
                    0 Regular File
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   657
                    1 Hard Link
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   658
                    2 Symbolic Link
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   659
                    5 Directory or subdirectory
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   660
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   661
                All values not listed above are reserved for future
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   662
                use.  Unrecognised values should be treated as a
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   663
                regular file.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   664
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   665
            An example set of entries would appear as follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   666
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   667
                pkg5.repositoryNUL0NUL546NUL2560NUL0NUL
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   668
                pkgNUL2560NUL0NUL1536NUL5NUL
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   669
                pkg/service%2Ffault-managementNUL4096NUL0NUL1536NUL5NUL
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   670
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   671
            It should be noted that other possible formats were
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   672
            evaluated for the index file, including those based
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   673
            on: JSON, XDR, and python's pack.  However, all other
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   674
            formats were found to be deficient for one or more
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   675
            of the following reasons:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   676
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   677
            - larger in size
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   678
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   679
            - no streaming support (required entire index file be
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   680
              loaded into memory)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   681
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   682
            - significantly greater parsing times using currently
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   683
              available Python libraries
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   684
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   685
            - required developing an envelope format that could
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   686
              contain the encoded data
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   687
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   688
5. Proposed Changes:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   689
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   690
    5.1. Client Support for filesystem-based Repository Access:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   691
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   692
        The pkg.client.api provided by pkg(5) will be updated to allow
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   693
        access to repositories via the filesystem.  All functionality
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   694
        normally offered by pkg.depotd will be supported.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   695
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   696
        pkg(1) and packagemanager(1) will be modified to support the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   697
        use of URIs using the 'file' scheme.  No user visible changes
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   698
        will be made to any existing subcommands or options except
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   699
        that URIs using the 'file' scheme will be allowed.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   700
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   701
        When accessing repositories using the 'file' scheme, clients
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   702
        by default will not copy package file data into the client's
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   703
        cache (e.g. /var/pkg/download).  Instead, the transport system
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   704
        will treat configured repositories as an additional read-only
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   705
        cache.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   706
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   707
    5.2. Depot Storage, Client Transport and Publication Tool Update:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   708
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   709
        The pkg.server.repository module will be updated to support
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   710
        the new repository format outlined in section 4.2.2.  Existing
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   711
        repositories will not automatically be upgraded, while new
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   712
        repositories will use the new format.  A new administrative
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   713
        command detailed below has been introduced to allow upgrading
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   714
        existing repositories to the new format.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   715
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   716
        These changes will automatically allow the client to access
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   717
        repositories in the new format when using filesystem-based
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   718
        access.  Older clients will remain unable to access repo-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   719
        sitories in the new format.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   720
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   721
        The client transport system will be updated to support all
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   722
        publication operations and the publication tools and project
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   723
        private APIs will be changed to use the client transport
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   724
        system.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   725
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   726
        The '-d' option of pkgrecv(1) will be changed such that if
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   727
        the name of a file with a '.p5p' extension is specified,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   728
        and that file does not already exist, a pkg(5) archive
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   729
        file will be created containing the specified packages.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   730
        If the file already exists, it will exit with an error.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   731
        When pkgrecv(1) creates pkg(5) archive files, it will omit
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   732
        catalog and index data.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   733
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   734
        Due to the transport changes above, pkgrecv(1) will also
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   735
        be able to use pkg(5) archive files as a source of package
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   736
        data.  pkgsend(1) will not support the use of pkg(5)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   737
        archive files as a destination due to the publication
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   738
        model it currently uses.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   739
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   740
        To support the expanded multiple publisher version 4 format
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   741
        of repositories, the depot server will be updated to respond
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   742
        to requests as follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   743
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   744
        - If clients include the publisher prefix as part of the request
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   745
          path, then responses will be for that specific publisher's
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   746
          data.  For example:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   747
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   748
                http://localhost/dev/opensolaris.org/manifest/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   749
                0/opensolaris.org/backup%2Fareca/7.1%2C5.11-0.134
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   750
                %3A20100302T005731Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   751
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   752
                http://localhost/dev/file/0/opensolaris.org/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   753
                2ce6c746c85cd7ac44571d094b53c5fe1bfc32c8
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   754
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   755
        - The default publisher specified in the depot configuration
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   756
          will be used when responding to requests for operations that
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   757
          do not include the publisher prefix.  For example:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   758
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   759
                http://localhost/dev/manifest/0/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   760
                backup%2Fareca/7.1%2C5.11-0.134%3A20100302T005731Z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   761
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   762
          ...provides a response identical to the first case where the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   763
          publisher prefix was provided as part of the request.  Those
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   764
          expecting to maintain a large population of older clients
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   765
          should reassign publisher URLs down a level, to include the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   766
          publisher explicitly although this is not required for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   767
          correct operation.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   768
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   769
        A new utility named pkgrepo will be added to facilitate the
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   770
        creation and management of pkg(5) repositories.  It will have
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   771
        the following global options:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   772
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   773
        -s repo_uri_or_path
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   774
            A URI or path specifying the location of a pkg(5)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   775
            package repository.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   776
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   777
        -? / --help
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   778
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   779
        It will have the following subcommands:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   780
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   781
        create <uri_or_path>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   782
            Creates a pkg(5) repository at the specified location.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   783
            Can only be used with filesystem-based repositories.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   784
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   785
        publisher [<pub_prefix> ...]
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   786
            Lists the publishers of packages in the repository:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   787
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   788
            PUBLISHER PACKAGES        VERSIONS       UPDATED
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   789
            <pub_1>   <num_uniq_pkgs> <num_pkg_vers> <cat_last_modified>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   790
            <pub_2>   <num_uniq_pkgs> <num_pkg_vers> <cat_last_modified>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   791
            ...
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   792
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   793
        rebuild
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   794
            Discards any catalog, search or other cached informaqtion
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   795
            found in the repository and then re-creates it based on
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   796
            the current contents of the repository.  Can only be used
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   797
            with filesystem-based repositories.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   798
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   799
        refresh
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   800
            By default, catalogs any new packages found in the repo-
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   801
            sitory and updates search indices.  This is intended for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   802
            use with deferred publication (--no-catalog or --no-index
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   803
            options of pkgsend).  Can only be used with filesystem-based
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   804
            repositories.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   805
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   806
            Options:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   807
                --no-catalog - doesn't add new packages
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   808
                --no-index - doesn't refresh search indices
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   809
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   810
        remove fmri_pattern ...
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   811
            Removes the specified package(s) from the repository.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   812
            If more than one match is found for any given pattern,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   813
            the exact FMRI must be provided.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   814
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   815
        upgrade
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   816
            Can only be used with filesystem-based repositories.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   817
            Upgrades the repository to the most current format if
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   818
            possible.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   819
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   820
            Has these options:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   821
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   822
            -n determine whether the upgrade could be formed and exit
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   823
            
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   824
            -v show a summary of what will be done, the current format
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   825
               of the repository and what it will be upgraded to
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   826
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   827
    5.3. Client Storage and Image Format Update:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   828
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   829
        To simplify and unify the storage format used by the client,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   830
        and pkg(5) repositories, the format of the client image
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   831
        will be changed to use the structure described below.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   832
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   833
        For a version 3 image (the current format), the structure is as
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   834
        follows:
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   835
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   836
        <IMG_ROOT>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   837
            download/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   838
                <first two letters of file hash>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   839
                    <file-named-by-hash>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   840
            file/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   841
            gui_cache/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   842
            history/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   843
            index/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   844
            lost+found/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   845
            pkg/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   846
                <stem>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   847
                    <version>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   848
                        manifest
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   849
                        manifest.<cachefiles>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   850
            publisher/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   851
                <prefix>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   852
                    catalog/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   853
                    certs/ (optional)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   854
                    last_refreshed (optional)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   855
            state/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   856
               installed/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   857
                    <image catalog files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   858
               known/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   859
                    <image catalog files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   860
            tmp/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   861
            cfg_cache
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   862
            lock
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   863
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   864
        For a version 4 image (the proposed format), the structure is
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   865
        as follows:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   866
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   867
        <IMG_ROOT>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   868
            cache/
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   869
                index/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   870
                    <api search index files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   871
                publisher/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   872
                    <publisher_prefix>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   873
                        catalog/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   874
                            <repository composition cache files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   875
                        pkg/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   876
                            <stem>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   877
                                <version>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   878
                                    <manifest-cache-files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   879
                tmp/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   880
                    <api temporary files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   881
            gui_cache/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   882
                <package manager data files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   883
            history/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   884
                <client history files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   885
            license/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   886
                <stem>/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   887
                    <license files>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   888
            lost+found/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   889
                <salvaged filesystem objects>
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   890
            publisher/
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   891
                <prefix>/
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   892
                    certs/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   893
                        <publisher signing certificates>
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   894
                    <otherwise as described in section 4.2.2>
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   895
            ssl/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   896
                client ssl certificates>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   897
            state/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   898
               installed/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   899
                    <image catalog files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   900
               known/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   901
                    <image catalog files>
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   902
            pkg5.image (client configuration file; was cfg_cache)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   903
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   904
        A new property named 'version' will be added to the image
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   905
        and will be readonly (cannot be set using the set-property
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   906
        subcommand of pkg(1)).
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   907
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   908
        Existing images will not automatically be upgraded to the new
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   909
        format.  To enable the upgrading of existing images to newer
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   910
        formats, the following subcommands will be added:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   911
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 1968
diff changeset
   912
        update-format
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   913
            Updates the format of the client's image to the current
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   914
            format if possible.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   915
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   916
    5.4. Client and Depot Support for On-Disk Archive Format:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   917
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   918
        The pkg.server.repository module will be updated to support
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   919
        the serving of a repository in readonly mode using a pkg(5)
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   920
        archive file.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   921
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   922
        The pkg.client.api transport system will be updated to support
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   923
        the usage of a pkg(5) archive file as an origin for package
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   924
        data.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   925
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   926
        To support the specification of temporary origins, the install
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   927
        and update subcommands will be modified by adding a '-g' option
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   928
        to specify additional temporary package origin URIs or
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   929
        the path to a pkg(5) archive file or pkg(5) info file.  The
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   930
        '-g' option may be specified multiple times.  As an example:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   931
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   932
            $ pkg install -g /path/to/foo.p5p \
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   933
                -g http://mytemprepo:10000/ \
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   934
                -g file:/path/to/bar.p5p \
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   935
                foo bar localpkg
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   936
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   937
        pkg(5) archive files used as a source of package data during an
2219
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   938
        install or update operation will have their content cached by
60ad60f7592c 2152 standalone package support needed (on-disk format)
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   939
        the client before the operation begins.  Any publishers found
1968
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   940
        in the archive will be temporarily added to the image if they do
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   941
        not already exist.  Publishers that were temporarily added but
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   942
        not used during the operation will be removed after operation
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   943
        completion or failure.  Any package FMRIs or patterns provided
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   944
        will be matched using only the sources provided using '-g'.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   945
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   946
        The pkg list and pkg info commands will also be updated by
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   947
        adding the '-g' option described above, with the exception
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   948
        that the '-g' option may only be specified once, and only
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   949
        the source named will be used for the operation.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   950
        
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   951
        Using '-g' with the pkg list subcommand implies '-n' by default,
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   952
        unless '-f' is specified; it also implies '-a'.  To list all
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   953
        versions, the '-f' option must be used.  As an example:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   954
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   955
            $ pkg list -g /path/to/foo.p5p
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   956
            NAME (PUBLISHER)  VERSION         STATE      UFOXI
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   957
            bar (example.com) 1.0-0.133       known      -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   958
            foo (example.com) 1.0-0.133       installed  -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   959
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   960
            $ pkg list -g file:/path/to/foo.p5p
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   961
            NAME (PUBLISHER)  VERSION         STATE      UFOXI
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   962
            bar (example.com) 1.0-0.133       known      -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   963
            foo (example.com) 1.0-0.133       installed  -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   964
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   965
            $ pkg list -f -g http://example.com/multi_foo.p5p
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   966
            NAME (PUBLISHER)  VERSION         STATE      UFOXI
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   967
            foo (example.com) 1.0-0.133       installed  u----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   968
            foo (example.com) 2.0-0.133       known      u----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   969
            foo (example.com) 3.0-0.133       known      -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   970
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   971
            $ pkg list -g file:/path/to/repo
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   972
            NAME (PUBLISHER)      VERSION     STATE      UFOXI
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   973
            repopkg (example.com) 2.0-0.133   known      -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   974
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   975
            $ pkg list -g http://myrepo:10000
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   976
            NAME (PUBLISHER)       VERSION    STATE      UFOXI
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   977
            localpkg (example.org) 3.0-0.133  known      -----
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   978
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   979
        Using '-g' with the pkg info subcommand implies '-r'.  The '-l'
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   980
        option cannot be used in combination with '-g'.  As an example:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   981
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   982
        $ pkg info -g /path/to/bundle.p5p
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   983
                  Name: bar
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   984
               Summary: A useful complement to foo.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   985
                 State: Not Installed
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   986
        ...
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   987
                  Name: foo
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   988
               Summary: Provides useful utilities.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   989
                 State: Installed
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   990
        ...
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   991
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   992
        '-g' was chosen for the option usage described above to match
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   993
        the '-g' already used by set-publisher and image-create for
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   994
        origins, and due to the unfortunate existing usage of '-s'
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   995
        by the 'pkg list' subcommand.
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   996
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   997
6. Reference Documents:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   998
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
   999
    Project team members and community members have provided a number of
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1000
    informal comments that served as the basis for the goals of this
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1001
    project:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1002
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1003
    - "new on-disk format?", 18 Jan. 2008:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1004
        http://markmail.org/thread/2kg6w5bfwp4x3knc
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1005
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1006
    - "reorganising the repository and client metadata", 23. Sep. 2009:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1007
        http://markmail.org/thread/stfrosvx3v6if2fi
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1008
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1009
    - "ZAP - Zip Archive Packaging", Sep. 2007:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1010
        http://markmail.org/thread/ijyq3mlrhaofccgx
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1011
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1012
    In addition, the following materials were referenced when writing
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1013
    this proposal:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1014
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1015
    - "7z", 12 Apr. 2010:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1016
        http://en.wikipedia.org/wiki/7z
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1017
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1018
    - "RFC2616: HTTP/1.1 Header Field Definitions", 01 Sep. 2004:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1019
        http://www.w3.org/Protocols/rfc2616/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1020
        rfc2616-sec14.html#sec14.35.1
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1021
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1022
    - "cpio", 21 Mar. 2010:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1023
        http://en.wikipedia.org/wiki/Cpio
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1024
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1025
    - "copy file archives in and out", 26 Mar. 2007:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1026
        http://heirloom.sourceforge.net/man/cpio.1.html
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1027
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1028
    - "The gzip file format", Date Unknown:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1029
        http://www.gzip.org/format.txt
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1030
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1031
    - "DragonFly File Formats Manual, cpio -- format of cpio archive
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1032
      files"
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1033
        http://leaf.dragonflybsd.org/cgi/web-man?command=cpio&section=5
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1034
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1035
    - "A Quick Benchmark: Gzip vs. Bzip2 vs. LZMA", 31 May. 2005:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1036
        http://tukaani.org/lzma/benchmarks.html
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1037
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1038
    - "Lempel Ziv Markov Algorithm and 7-Zip", 7 Feb. 2008:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1039
        http://blogs.sun.com/clayb/entry/lempel_ziv_markov_algorithm_and
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1040
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1041
    - "The Open Group Base Specifications Issue 6: pax Interchange
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1042
      Format, IEEE Std 1003.1, 2004 Edition"
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1043
        http://www.opengroup.org/onlinepubs/009695399/utilities/
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1044
        pax.html#tag_04_100_13_01
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1045
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1046
    - ".ZIP File Format Specification", 28 Sep. 2007:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1047
        http://www.pkware.com/documents/casestudies/APPNOTE.TXT
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1048
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1049
    - "ZIP (file format)", 17 Apr. 2010:
c0540b1e4f7e 8722 advanced repository metadata store needed
Shawn Walker <shawn.walker@oracle.com>
parents:
diff changeset
  1050
        http://en.wikipedia.org/wiki/ZIP_%28file_format%29