2573N/A.. CDDL HEADER START
2525N/A
2573N/A.. The contents of this file are subject to the terms of the
2573N/A Common Development and Distribution License (the "License").
2573N/A You may not use this file except in compliance with the License.
2573N/A
2573N/A.. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2573N/A or http://www.opensolaris.org/os/licensing.
2573N/A See the License for the specific language governing permissions
2573N/A and limitations under the License.
2573N/A
2573N/A.. When distributing Covered Code, include this CDDL HEADER in each
2573N/A file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2573N/A If applicable, add the following below this CDDL HEADER, with the
2573N/A fields enclosed by brackets "[]" replaced with your own identifying
2573N/A information: Portions Copyright [yyyy] [name of copyright owner]
2573N/A
2573N/A.. CDDL HEADER END
2573N/A
2573N/A.. Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
2573N/A
2573N/AChapter 13
2573N/A----------
2573N/A
2585N/AHow IPS Features Are Used when Packaging the Oracle Solaris OS
2585N/A..............................................................
2585N/A
2585N/AThis chapter describes how Oracle uses IPS to package Oracle Solaris, and how
2585N/Athe various dependency types are used to define working package sets for the OS.
2585N/A
2585N/AWe include this chapter to give another concrete example of how IPS can be used
2585N/Ato manage a complex set of software, and talk about some of the IPS features
2585N/Athat were used.
2585N/A
2585N/AVersioning
2585N/A~~~~~~~~~~
2585N/A
2585N/AIn *Chapter 3* we discussed the ``pkg.fmri`` attribute, and talked about the
2585N/Adifferent components of the version field, describing how the version field can
2585N/Abe used to support different models of software development.
2585N/A
2585N/AThis section explains how Oracle Solaris uses the version field, and is provided
2585N/Ato give an insight into the reasons why a fine-grained versioning scheme can be
2585N/Auseful. Developers **do not** have to follow the same versioning scheme as
2585N/AOracle Solaris.
2585N/A
2585N/AGiven a sample package::
2585N/A
2585N/A pkg://solaris/system/core-os@0.5.11,5.11-0.175.0.0.0.2.1:20111019T070457Z
2585N/A
2585N/AThis is how the version field ``0.5.11,5.11-0.175.0.0.0.2.1:20111019T070457Z``
2585N/Ais broken down:
2585N/A
2585N/A 0.5.11
2585N/A The component version. For packages that are parts of Oracle Solaris,
2585N/A this is the OS major.minor version. For packages developed outside,
2585N/A this is the upstream version. For example, the Apache Web Server in the
2585N/A package:
2573N/A
2585N/A ``pkg:/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.2.537:20111019T122323Z``
2585N/A
2585N/A has the component version 2.2.20.
2585N/A
2585N/A 5.11
2585N/A This is the build version. This is used to define the OS release that
2585N/A this package was built for and should always be 5.11 for packages created
2585N/A for Oracle Solaris 11.
2585N/A
2585N/A 0.175.0.0.0.2.1
2585N/A This is the branch version. Oracle Solaris uses the following notation
2585N/A for the branch version in this release:
2585N/A
2585N/A * 0.175: Trunk identifier
2585N/A * 0: Which Oracle Solaris Update this package is part of
2585N/A * 0: The SRU (suppport repository update) number
2585N/A * 0: The platform number, unused at present, but reserved for future use
2585N/A * 2: The build ID, used to indicate the build or respin
2585N/A * 1: The nightly ID
2585N/A
2585N/A 20111019T070457Z
2585N/A This is the timestamp, defined when the package was published.
2585N/A
2585N/A
2585N/AIncorporations
2585N/A~~~~~~~~~~~~~~
2585N/A
2585N/AOracle Solaris is delivered by a set of packages, with each group of packages
2585N/Aconstrained by an incorporation.
2585N/A
2585N/AEach incorporation roughly represents the organization that developed each
2585N/Agroup of packages, though there are some cross-incorporation dependencies
2585N/Awithin the packages themselves. The following is a list of the incorporation
2585N/Apackages in Oracle Solaris:
2573N/A
2585N/A * ``pkg:/consolidation/SunVTS/SunVTS-incorporation``
2585N/A * ``pkg:/consolidation/X/X-incorporation``
2585N/A * ``pkg:/consolidation/admin/admin-incorporation``
2585N/A * ``pkg:/consolidation/cacao/cacao-incorporation``
2585N/A * ``pkg:/consolidation/cde/cde-incorporation``
2585N/A * ``pkg:/consolidation/cns/cns-incorporation``
2585N/A * ``pkg:/consolidation/dbtg/dbtg-incorporation``
2585N/A * ``pkg:/consolidation/desktop/desktop-incorporation``
2585N/A * ``pkg:/consolidation/desktop/gnome-incorporation``
2585N/A * ``pkg:/consolidation/gfx/gfx-incorporation``
2585N/A * ``pkg:/consolidation/install/install-incorporation``
2585N/A * ``pkg:/consolidation/ips/ips-incorporation``
2585N/A * ``pkg:/consolidation/java/java-incorporation``
2585N/A * ``pkg:/consolidation/jdmk/jdmk-incorporation``
2585N/A * ``pkg:/consolidation/l10n/l10n-incorporation``
2585N/A * ``pkg:/consolidation/ldoms/ldoms-incorporation``
2585N/A * ``pkg:/consolidation/man/man-incorporation``
2585N/A * ``pkg:/consolidation/nspg/nspg-incorporation``
2585N/A * ``pkg:/consolidation/nvidia/nvidia-incorporation``
2585N/A * ``pkg:/consolidation/osnet/osnet-incorporation``
2585N/A * ``pkg:/consolidation/sfw/sfw-incorporation``
2585N/A * ``pkg:/consolidation/sic_team/sic_team-incorporation``
2585N/A * ``pkg:/consolidation/solaris_re/solaris_re-incorporation``
2585N/A * ``pkg:/consolidation/sunpro/sunpro-incorporation``
2585N/A * ``pkg:/consolidation/ub_javavm/ub_javavm-incorporation``
2585N/A * ``pkg:/consolidation/userland/userland-incorporation``
2585N/A * ``pkg:/consolidation/vpanels/vpanels-incorporation``
2585N/A * ``pkg:/consolidation/xvm/xvm-incorporation``
2585N/A
2585N/AEach of these incorporations includes:
2585N/A
2585N/A * general package metadata
2585N/A * ``incorporate`` dependencies, sometimes with ``variant.arch`` variants
2585N/A to denote dependencies that are specific to a given architecture
2585N/A * a ``license`` action that ensures that when the incorporation is
2585N/A installed, a license is displayed
2585N/A
2585N/AEach of the packages delivered on the system contains a ``require`` dependency
2585N/Aon one of these incorporations.
2585N/A
2585N/AOracle Solaris also includes a special incorporation called ``entire``.
2585N/A
2585N/AThe ``entire`` incorporation constrains all of the individual incorporations
2585N/Atogether to the same build, by including both ``require`` and ``incorporate``
2585N/Adependencies on each incorporation package, effectively defining a
2585N/A*software surface*, such that all packages of Oracle Solaris get upgraded as a
2585N/Asingle group, or not at all.
2585N/A
2585N/A
2585N/Afacet.version-lock.*
2585N/A~~~~~~~~~~~~~~~~~~~~
2585N/A
2585N/ASome of the incorporations, listed above use ``facet.version-lock.*`` facets,
2585N/Awhich were discussed in *Chapter 6*.
2585N/A
2585N/AFor example, looking at the ``pkg:/consolidation/userland/userland-incorporation``
2585N/Apackage, we see::
2573N/A
2585N/A .
2585N/A .
2585N/A depend type=incorporate \
2585N/A fmri=pkg:/library/python-2/subversion@1.6.16-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.library/python-2/subversion=true
2585N/A depend type=incorporate \
2585N/A fmri=pkg:/library/security/libassuan@2.0.1-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.library/security/libassuan=true
2585N/A depend type=incorporate \
2585N/A fmri=pkg:/library/security/openssl/openssl-fips-140@1.2-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.library/security/openssl/openssl-fips-140=true
2585N/A depend type=incorporate fmri=pkg:/mail/fetchmail@6.3.21-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.mail/fetchmail=true
2585N/A depend type=incorporate \
2585N/A fmri=pkg:/network/chat/ircii@0.2006.7.25-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.network/chat/ircii=true
2585N/A depend type=incorporate \
2585N/A fmri=pkg:/print/cups/filter/foomatic-db-engine@0.20080903-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.print/cups/filter/foomatic-db-engine=true
2585N/A depend type=incorporate \
2585N/A fmri=pkg:/print/filter/gutenprint@5.2.4-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.print/filter/gutenprint=true
2585N/A depend type=incorporate fmri=pkg:/runtime/erlang@12.2.5-0.175.0.0.0.2.537 \
2585N/A facet.version-lock.runtime/erlang=true
2585N/A .
2585N/A .
2585N/A etc.
2585N/A
2585N/Aenabling the administrator to allow certain packages to float free from the
2585N/Aconstraints of the incorporation package.
2573N/A
2585N/ANotably, the ``entire`` package also contains version-lock facets, allowing
2585N/Aspecific incorporations to be removed. However, this can result in a system
2585N/Awhich is not covered by support, and those packages should only be unlocked
2585N/Aon advice from Oracle support personnel.
2585N/A
2585N/A.. raw:: pdf
2585N/A
2585N/A PageBreak
2585N/A
2585N/AGroup Packages
2585N/A~~~~~~~~~~~~~~
2585N/A
2585N/AOracle Solaris defines several *group packages* which contain a series
2585N/Aof ``group`` dependencies (discussed in *Chapter 6*) enabling convenient
2585N/Ainstallation of common sets of packages.
2585N/A
2585N/AThe following is a list of the group packages in Oracle Solaris:
2585N/A
2585N/A * ``pkg:/group/feature/amp``
2585N/A * ``pkg:/group/feature/developer-gnu``
2585N/A * ``pkg:/group/feature/multi-user-desktop``
2585N/A * ``pkg:/group/feature/storage-avs``
2585N/A * ``pkg:/group/feature/storage-nas``
2585N/A * ``pkg:/group/feature/storage-server``
2585N/A * ``pkg:/group/feature/trusted-desktop``
2585N/A * ``pkg:/group/system/solaris-auto-install``
2585N/A * ``pkg:/group/system/solaris-desktop``
2585N/A * ``pkg:/group/system/solaris-large-server``
2585N/A * ``pkg:/group/system/solaris-small-server``
2585N/A
2585N/AOne group package in particular is interesting, ``solaris-small-server``, as
2585N/Ait is used in the default AI manifest
2585N/A(``/usr/share/auto_install/manifest/zone_default.xml``) used to install
2585N/A``solaris(5)`` zones.
2573N/A
2573N/A
2573N/AInformational attributes
2573N/A~~~~~~~~~~~~~~~~~~~~~~~~
2573N/A
2573N/AThe following attributes are not necessary for correct package installation,
2573N/Abut having a shared convention lowers confusion between publishers and
2573N/Ausers.
2573N/A
2573N/A info.classification
2585N/A See *Chapter 3* under "Set actions", and *Appendix A*.
2573N/A
2573N/A info.keyword
2573N/A A list of additional terms that should cause this package to be
2573N/A returned by a search.
2573N/A
2573N/A info.maintainer
2573N/A A human readable string describing the entity providing the
2573N/A package. For an individual, this string is expected to be their
2573N/A name, or name and email.
2573N/A
2573N/A info.maintainer-url
2573N/A A URL associated with the entity providing the package.
2573N/A
2573N/A info.upstream
2573N/A A human readable string describing the entity that creates the
2573N/A software. For an individual, this string is expected to be
2573N/A their name, or name and email.
2573N/A
2573N/A info.upstream-url
2573N/A A URL associated with the entity that creates the
2573N/A software delivered within the package.
2573N/A
2573N/A info.source-url
2573N/A A URL to the source code bundle, if appropriate, for the package.
2573N/A
2573N/A info.repository-url
2573N/A A URL to the source code repository, if appropriate, for the
2573N/A package.
2573N/A
2573N/A info.repository-changeset
2573N/A A changeset ID for the version of the source code contained in
2573N/A info.repository-url.
2573N/A
2585N/AOracle Solaris Attributes
2585N/A~~~~~~~~~~~~~~~~~~~~~~~~~
2573N/A
2573N/A org.opensolaris.arc-caseid
2573N/A One or more case identifiers (e.g., PSARC/2008/190) associated with
2585N/A the ARC case (Architecture Review Committee) or cases associated with the
2585N/A component delivered by the package.
2573N/A
2573N/A org.opensolaris.smf.fmri
2585N/A One or more FMRIs representing SMF services delivered by this
2585N/A package. These attributes are automatically generated by |pkgdepend|
2585N/A for packages containing SMF service manifests.
2573N/A
2585N/AOracle Solaris Tags
2585N/A~~~~~~~~~~~~~~~~~~~
2573N/A
2573N/A variant.opensolaris.zone
2573N/A See *Chapter 12*
2573N/A
2585N/AOrganization Specific Attributes
2573N/A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2573N/A
2585N/A Organizations wanting to provide a package with additional metadata
2573N/A or to amend an existing package's metadata (in a repository that
2573N/A they have control over) must use an organization-specific prefix.
2573N/A For example, a service organization might introduce
2585N/A ``service.example.com,support-level`` or
2585N/A ``com.example.service,support-level`` to describe a level of support
2573N/A for a package and its contents.
2573N/A