Thanks for the replies, Danek and Shawn. Below is what I have included
in the doc I am preparing. A few things to highlight:
- this all relates to how a pkg FMRI would formally be written as
an nvlist and should just reflect how pkg FMRI strings are already
used in practice while conforming to the protocol spec
- I defined SVR4 pkg scheme as scheme version 0, and that for IPS
as scheme version 1. Scheme version is required in the protocol.
- While it is just an IPS publisher that constitutes the authority
information, this is embedded within the 'authority' nvlist
in the FMRI definition; that just to match existing FMRI schemes.
Other authority members in use in the protocol are server-id
(the hostname), {chassis,product,domain,host}-id and product-sn.
While you'd never render this in a pkg FMRI string on the cmdline
they do have their standard used - eg if we transmit the FMRI
to a fault manager in another domain then attaching the hostname
we started on is valuable (and required in the protocol).
- I have claimed that publisher is required for a full identification
of a package in a formal FMRI. My understanding is that where
publisher is absent that implies a search through known publishers,
but that's just a convenience semantic and to specify a package
in full you must include the publisher.
A.3.10 "pkg" FMRI scheme
Scheme version 0, defined in [1], corresponds to SVR4 packaging:
Member Name Data Type Stability
----------------------- --------------- --------------------
version (0) uint8 Committed
scheme ("pkg") string Committed
authority nvlist See A.3.1
pkg-basedir string Committed
pkg-inst string Committed
pkg-version string Committed
String form:
pkg://[authstr]/<pkg-name>/:version=<pkg-version>
Scheme version 1 corresponds to IPS packaging:
Member Name Data Type Stability
----------------------- --------------- --------------------
version (1) uint8 Committed
scheme ("pkg") string Committed
authority nvlist See below
pkg-name string Committed
[pkg-version] nvlist Committed
The 'authority' nvlist is supplemented to specify
the package publisher (see pkg(5)):
Member Name Data Type Stability
----------------------- --------------- --------------------
publisher string Committed
The 'pkg-version' is defined as follows:
Member Name Data Type Stability
----------------------- --------------- --------------------
release string Committed
[built-on] string Committed
[branch] string Committed
[timestamp] string Committed
While 'authority' also includes the publisher name we continue
to embed it within a separate 'authority' nvlist to match all
other FMRI definitions. While the publisher name is optional
on some command line sequences for pkg(5) (implying a search through
known publishers, for instance) it is not optional when fully
identifying a package in a formal FMRI.
The 'pkg-name' is the actual name (stem) of the package.
The 'release' is the primary version of the component, written
as a dotsequence string (an arbitrary-length, dot-separated series
of non-zero-leading decimal digits).
The 'built-on' value is the OS version on which the component was
built, again specified as a dotsequence.
The 'branch' specified the source branch version, as a dotsequence.
The 'timestamp' in an ISO8601 date string "YYYYMMDDTHHMMSSZ"
String form:
pkg://[pkgauthstr]/<pkg-name>
[@<release>[,<built-on>][-<branch>][:<timestamp>]
pkgauthstr = <publisher> authstr
(where earlier in the doc we have)
authstr = [:server-id=<server-id>]
[:chassis-id=<chassis-id>]
[:product-sn=<product-sn>]
[:product-id=<product-id>]
[:domain-id=<domain-id>]
[:host-id=<host-id>]
Thanks
Gavin
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss