47N/A Each collection of installed package instances is some kind of
47N/A image. We envision three kinds:
47N/A An entire image contains (and can contain) all appropriate
47N/A packages from a repository. It has a machine type and release.
47N/A A partial image contains (and can contain) all appropriate
47N/A packages from a repository. An partial image is tied to an
47N/A entire image and has an identified list of non-writeable
47N/A directory paths. It inherits its machine type and release.
47N/A A user image consists entirely of relocatable packages. It is
47N/A tied to an entire image for dependency satisfaction of
47N/A non-relocatable packages. It inherits its machine type and
47N/A2.2. Image configuration
47N/A2.2.1. Configuration inheritance
47N/A Some aspects of configuration can be shared between all images. For
47N/A instance, a user image may specify authorities beyond those encoded
47N/A into the system defaults. So, a user image must have authoritative
47N/A configuration, but be able to draw on the parent image's state for
47N/A Operations on partial images and non-live entire images may need to
47N/A access image configuration data when smf(5) for that image is
47N/A unavailable. So images of these kinds must have cached
47N/A configuration state.
47N/A Roughly, these aspects are sufficient to constrain our configuration
47N/A behaviour for user and entire images:
47N/A look up local configuration
47N/A if unavailable, examine parent's configuration cache
47N/A if undefined or unavailable, use hard-coded default
47N/A if unavailable, examine configuration cache
47N/A if undefined or unavailable, use hard-coded default
47N/A Partial images could have differing behaviour depending on whether
47N/A the operation is invoked from within the partial image's "packaging
47N/A context" (as it would be for an operation issued from within the
47N/A zone), or outside it (operations on the entire image and its
47N/A associated partial images).
47N/A For the first case, the configuration strategy is the same as that
47N/A for an entire image. For the second case, we could do
47N/A [partial image, external context]
47N/A examine partial image configuration cache
47N/A if undefined or unavailable, examine entire image configuration
47N/A if undefined, use hard-coded default
47N/A For certain properties (or even certain packages), it may be
47N/A inappropriate to let the partial image configurations drift from
47N/A that of the entire image.
47N/A2.2.2. Configuration components
47N/A List of authorities. For each authority, we have a prefix, an
47N/A origin URL, a list of mirror URLs, and annotations.
47N/A /prefix pkg: authority
47N/A /origin http:, https:, or ftp: URL
47N/A /mirrors list of URLs
47N/A Image attributes. The image has a collection of simple attributes,
47N/A /preferred_auth preferred authority for unknown package
47N/A Entire images have a property group for each tied partial image.
47N/A /path Filesystem path
47N/A /vdomainname Defined if this image is a virtual
47N/A domain controlled on this system.
47N/A /vdomaintype "xen", "zone", ...
47N/A (XXX Should we instead assume that each of Zones and Xen will