この付録では、Oracle が IPS 機能を使用して Oracle Solaris OS をパッケージ化する方法、および依存関係のさまざまなタイプを使用してその OS 用の作業用パッケージセットを定義する方法について説明します。
この付録には、IPS を使用して複雑なソフトウェアセットを管理する具体的な例も記載されています。
パッケージ識別子: FMRIでは、バージョンフィールドを使用してさまざまなソフトウェア開発モデルをサポートする方法など、pkg.fmri 属性とバージョンフィールドの各種コンポーネントについて説明しました。このセクションでは、Oracle Solaris OS によるバージョンフィールドの使用方法について説明し、きめの細かいバージョン管理スキームが役立つことがある理由を明らかにします。パッケージでは、Oracle Solaris OS が使用するのと同じバージョン管理スキームに従う必要はありません。
次のサンプルパッケージ FMRI のバージョン文字列の各部の意味は下記のとおりです。
pkg://solaris/system/library@0.5.11,5.11-0.175.1.0.0.2.1:20120919T082311Z
コンポーネントバージョン。Oracle Solaris OS の一部であるパッケージの場合、これは OS major.minor バージョンです。ほかのパッケージでは、これはアップストリームバージョンです。たとえば、次の Apache Web サーバーパッケージのコンポーネントバージョンは 2.2.22 です。
pkg:/web/server/apache-22@2.2.22,5.11-0.175.1.0.0.2.1:20120919T122323Z
ビルドバージョン。これは、このパッケージが構築される OS リリースを定義するために使用されます。Oracle Solaris 11 用に作成されたパッケージのビルドバージョンは必ず 5.11 になります。
ブランチバージョン。Oracle Solaris パッケージでは、パッケージ FMRI のバージョン文字列のブランチバージョン部分に次の情報が示されます。
メジャーリリース番号。メジャーまたはマーケティング開発リリースのビルド番号。この例では、0.175 は Oracle Solaris 11 を示します。
更新リリース番号。この Oracle Solaris リリースの更新リリース番号。更新値は、Oracle Solaris リリースの FCS (First Customer Shipment) では 0、そのリリースの最初の更新では 1、そのリリースの 2 回目の更新では 2 というようになります。この例では、1 は Oracle Solaris 11.1 を示します。
SRU 番号。この更新リリースのサポート・リポジトリの更新 (SRU) 番号。SRU にはバグ修正のみが入っており、新しい機能は含まれていません。Oracle サポート・リポジトリはサポート契約下のシステムでのみ使用できます。
予約済み。このフィールドは現在 Oracle Solaris パッケージには使用されていません。
SRU ビルド番号。SRU のビルド番号、またはメジャーリリースの更新番号。
ナイトリービルド番号。個々のナイトリービルドのビルド番号。
タイムスタンプ。このタイムスタンプは、パッケージが発行されたときに定義されたものです。
Oracle Solaris は一連のパッケージによって配布され、パッケージの各グループは結合の制約を受けます。
それぞれの結合はパッケージの各グループを開発した組織を大まかに表しますが、パッケージそのものの内部にはいくつかの結合間依存関係があります。Oracle Solaris には次の結合パッケージがあります (pkg list *incorporation)。
pkg:/consolidation/SunVTS/SunVTS-incorporation pkg:/consolidation/X/X-incorporation pkg:/consolidation/admin/admin-incorporation pkg:/consolidation/cacao/cacao-incorporation pkg:/consolidation/cde/cde-incorporation pkg:/consolidation/cns/cns-incorporation pkg:/consolidation/dbtg/dbtg-incorporation pkg:/consolidation/desktop/desktop-incorporation pkg:/consolidation/desktop/gnome-incorporation pkg:/consolidation/gfx/gfx-incorporation pkg:/consolidation/install/install-incorporation pkg:/consolidation/ips/ips-incorporation pkg:/consolidation/java/java-incorporation pkg:/consolidation/jdmk/jdmk-incorporation pkg:/consolidation/l10n/l10n-incorporation pkg:/consolidation/ldoms/ldoms-incorporation pkg:/consolidation/man/man-incorporation pkg:/consolidation/nspg/nspg-incorporation pkg:/consolidation/nvidia/nvidia-incorporation pkg:/consolidation/osnet/osnet-incorporation pkg:/consolidation/sfw/sfw-incorporation pkg:/consolidation/sic_team/sic_team-incorporation pkg:/consolidation/solaris_re/solaris_re-incorporation pkg:/consolidation/sunpro/sunpro-incorporation pkg:/consolidation/ub_javavm/ub_javavm-incorporation pkg:/consolidation/userland/userland-incorporation pkg:/consolidation/vpanels/vpanels-incorporation pkg:/consolidation/xvm/xvm-incorporation
これらの各結合には次の情報が含まれています。
パッケージのメタデータ。
incorporate タイプの依存関係。ある特定のアーキテクチャーに固有の依存関係を示す variant.arch バリアントが含まれることがあります。incorporate 依存関係と variant.arch バリアントの詳細は、incorporate 依存関係および 相互に排他的なソフトウェアコンポーネントを参照してください。
結合がインストールされるときにライセンスが表示されるようにする license アクション。license アクションの詳細は、ライセンスアクションを参照してください。
システムに配布された各パッケージには、これらのいずれかの結合への require 依存関係が含まれています。詳細は、require 依存関係を参照してください。
Oracle Solaris には entire という名前の特別な結合も含まれています。entire 結合は、各結合パッケージへの require と incorporate の両方の依存関係を含めることにより、ほかのすべての結合を同じビルドに制限します。このようにして、entire 結合はすべてのパッケージが 1 つのグループとしてアップグレードされるようにソフトウェアサーフェスを定義します。
上記に示した結合の中には、facet.version-lock.* ファセットを使用して、管理者が pkg change-facet コマンドを使って指定のパッケージの結合に対する制約を緩和できるようにするものがあります。詳細は、インストール可能なパッケージバージョンに対する制約の緩和を参照してください。
たとえば、pkg:/consolidation/userland/userland-incorporation パッケージには次の facet.version-lock.* 定義が含まれています。
.. depend type=incorporate \ fmri=pkg:/library/python-2/subversion@1.6.16-0.175.0.0.0.2.537 \ facet.version-lock.library/python-2/subversion=true depend type=incorporate \ fmri=pkg:/library/security/libassuan@2.0.1-0.175.0.0.0.2.537 \ facet.version-lock.library/security/libassuan=true depend type=incorporate \ fmri=pkg:/library/security/openssl/openssl-fips-140@1.2-0.175.0.0.0.2.537 \ facet.version-lock.library/security/openssl/openssl-fips-140=true depend type=incorporate fmri=pkg:/mail/fetchmail@6.3.21-0.175.0.0.0.2.537 \ facet.version-lock.mail/fetchmail=true depend type=incorporate \ fmri=pkg:/network/chat/ircii@0.2006.7.25-0.175.0.0.0.2.537 \ facet.version-lock.network/chat/ircii=true depend type=incorporate \ fmri=pkg:/print/cups/filter/foomatic-db-engine@0.20080903-0.175.0.0.0.2.537 \ facet.version-lock.print/cups/filter/foomatic-db-engine=true depend type=incorporate \ fmri=pkg:/print/filter/gutenprint@5.2.4-0.175.0.0.0.2.537 \ facet.version-lock.print/filter/gutenprint=true depend type=incorporate fmri=pkg:/runtime/erlang@12.2.5-0.175.0.0.0.2.537 \ facet.version-lock.runtime/erlang=true ..
entire パッケージには version-lock ファセットも含まれています。この場合、それらのファセットによって指定の結合を entire 結合から削除できるようになります。ただし、これによってサポートの対象とならないシステムになる可能性があります。そのようなパッケージは、Oracle サポート担当者からのアドバイスを受けてロック解除するしかありません。
Oracle Solaris では、group 依存関係を含むいくつかのグループパッケージを定義しています。group 依存関係の詳細は、group 依存関係を参照してください。これらのグループパッケージを使用すると、共通のパッケージセットをインストールするときに便利です。
Oracle Solaris で提供されるグループパッケージを次に示します。
$ pkg list -Has 'pkg:/group/*' group/feature/amp AMP (Apache, MySQL, PHP) Deployment Kit for Oracle Solaris group/feature/developer-gnu GNU Development Tools for Oracle Solaris group/feature/multi-user-desktop Oracle Solaris Multi User Desktop group/feature/storage-avs Sun StorageTek Availability Suite group/feature/storage-nas Network attached storage group package group/feature/storage-server Multi protocol storage server group package group/feature/trusted-desktop Oracle Solaris Trusted Desktop group/system/management/rad/rad-client-interfaces RAD client bindings group package group/system/management/rad/rad-server-interfaces RAD server modules group package group/system/solaris-auto-install Oracle Solaris Automated Installer Client group/system/solaris-core-platform Oracle Solaris Core Platform group/system/solaris-desktop Oracle Solaris Desktop group/system/solaris-large-server Oracle Solaris Large Server group/system/solaris-minimal-server Oracle Solaris Minimal Server group/system/solaris-small-server Oracle Solaris Small Server
solaris-small-server グループパッケージは、非大域ゾーン (/usr/share/auto_install/manifest/zone_default.xml ) のインストールに使用されるデフォルトの AI マニフェストによってインストールされます。詳細は、solaris(5) を参照してください。
このセクションでは、一般的な属性、Oracle Solaris アクション属性、および Oracle Solaris 属性タグについて説明します。
次の属性は正しいパッケージインストールに不可欠ではありませんが、取り決めを共有すると、パブリッシャーとユーザーの間で起きる混乱が少なくなります。
info.classification 属性については、設定アクションを参照してください。Appendix A, パッケージの分類の分類のリストを参照してください。
検索によってこのパッケージが返される追加の用語のリスト。
パッケージを提供するエンティティーについて説明する、人間が読める文字列。この文字列は、個人の名前、個人の名前と電子メール、または組織の名前にします。
パッケージを提供するエンティティーに関連付けられた URL。
ソフトウェアを作成するエンティティーについて説明する、人間が読める文字列。この文字列は、個人の名前、個人の名前と電子メール、または組織の名前にします。
パッケージで配布されるソフトウェアを作成するエンティティーに関連付けられた URL。
パッケージのソースコードバンドルへの URL (該当する場合)。
パッケージのソースコードリポジトリへの URL (該当する場合)。
info.repository-url に含まれるソースコードのバージョンのチェンジセット ID。
ARC ケース (Architecture Review Committee)、またはパッケージによって配布されたコンポーネントに関連付けられたケースに関連付けられた 1 つ以上のケース識別子 (PSARC/2008/190 など)。
このパッケージによって配布された SMF サービスを表す 1 つ以上の FMRI。これらの属性は、SMF サービスマニフェストを含むパッケージの pkgdepend によって自動的に生成されます。pkgdepend(1) のマニュアルページを参照してください。
パッケージに追加のメタデータを提供するには、属性名に組織固有の接頭辞を使用します。組織はこの方法を使用して、その組織で開発されたパッケージに追加のメタデータを提供したり、既存のパッケージのメタデータを変更したりできます。既存のパッケージのメタデータを変更するには、そのパッケージが発行されるリポジトリを制御する必要があります。たとえば、サービス組織は service.example.com,support-level または com.example.service,support-level という名前の属性を導入して、パッケージとその内容のサポートのレベルを記述できます。
非大域ゾーン、大域ゾーン、または非大域ゾーンと大域ゾーンのどちらかにインストールできるパッケージ内のアクションを指定します。詳細は、Chapter 10, 非大域ゾーンの処理を参照してください。