Go to main content
Oracle® Solaris 11.3 ソフトウェアの追加と更新

印刷ビューの終了

更新: 2017 年 3 月
 
 

オプションのコンポーネントのインストールの制御

ソフトウェアには、オプションのコンポーネントや、相互に排他的なコンポーネントが含まれることがあります。オプションのコンポーネントの例には、ロケールやドキュメントがあります。相互に排他的なコンポーネントの例には、SPARC または x86 アーキテクチャーが含まれます。オプションのコンポーネントはファセットと呼ばれ、相互に排他的なコンポーネントはバリアントと呼ばれます。

ファセットおよびバリアントの値がパッケージのインストールに与える影響

ファセットとバリアントのどちらも次の 2 つのコンポーネントで構成されます。

  • イメージに設定されたプロパティー

  • パッケージマニフェスト内のアクションに設定されたタグ

パッケージマニフェスト内のアクションに設定されたファセットおよびバリアントタグの値と、イメージに設定されたファセットおよびバリアントプロパティーの値の比較により、そのアクションがインストール可能かどうかを判別します。

ファセットとバリアントのプロパティーとタグにはそれぞれ名前と値があります。1 つのパッケージアクションに複数のファセットタグおよびバリアントタグを付けることができます。

ファセットとバリアントのプロパティーとタグの値は明示的に設定する必要はありません。値はデフォルト値または継承された値を指定できます。たとえば、非大域ゾーンはその親の大域ゾーンから値を継承できます。一部のバリアントプロパティー値は、システムの初期インストール時にイメージに設定され、変更できません。

次のアルゴリズムは、イメージに設定されたファセットおよびバリアントのプロパティー値が、特定のアクションがインストールされるかどうかにどのように影響するかを示しています。値については、以降のセクションで詳しく説明します。

  • パッケージマニフェストにファセットタグまたはバリアントタグがないアクションは常にインストールされます。

  • パッケージマニフェストにファセットタグがあるアクションは、イメージに次の条件が存在する場合にインストールされます。

    • アクションのファセットタグのうち、値 all を持つものはすべて、デフォルトまたは明示的な設定によって、イメージ内で true のファセットプロパティー値を持ちます。

    • アクションのファセットタグのいずれかが値 true を持つ場合、それらのファセットプロパティー値の少なくとも 1 つは、デフォルトまたは明示的な設定によってイメージ内でも true です。

    次の例で、ファイル test.txt は、イメージ内で developtional.test両方true であり、イメージ内で doc.info または doc.helpいずれかtrue である場合にのみインストールされます。

    file path=usr/share/doc/test.txt facet.devel=all facet.optional.test=all
    facet.doc.info=true facet.doc.help=true
  • パッケージマニフェスト内にバリアントタグのあるアクションは、すべてのバリアントタグの値がイメージに設定されている対応するバリアントプロパティーの値と同じ場合にのみインストールされます。

    次の例では、ファイル x86test.txt はインストールされません。次のパッケージマニフェストの抜粋は、ファイル x86test.txt に 2 つのバリアントタグが設定されていることを示しています。

    file path=usr/share/doc/x86test.txt variant.arch=i386 variant.debug.osnet=true

    次のコマンドは、イメージ内のこれらのバリアントプロパティーの値を示しています。

    $ pkg variant arch debug.osnet
    VARIANT                   VALUE
    arch                      i386
    debug.osnet               false
  • ファセットタグとバリアントタグの両方があるアクションは、ファセットとバリアントの両方のプロパティー値でアクションのインストールが許可されている場合にインストールされます。

バリアント値の表示と変更

ほとんどのバリアントは説明的な値を持ちます。たとえば、variant.arch の値は、i386sparc などになります。アクションがインストールされるには、パッケージマニフェスト内のそのアクションのバリアントタグの値が、イメージ内の対応するバリアントプロパティーの値と一致している必要があります。arch および zone バリアントプロパティー値は、イメージを作成し、その初期コンテンツをインストールするプログラムによって設定されます。これらの値は変更できません。

variant.debug.* バリアントの値と不明なバリアントの値は true または false のみ指定でき、デフォルトでイメージ内で false です。不明なバリアントとは、パッケージマニフェスト内のアクションのバリアントタグとして導入され、イメージの作成時には不明だったバリアントです。

アクションのデバッグバージョンと非デバッグバージョンの両方を配布する場合、次の例に示すように、両方のバージョンに該当する debug バリアントタグが明示的に設定されている必要があります。この例では、debug.osnet がイメージ内で false の場合は、このファイルの非デバッグバージョンがインストールされ、debug.osnet がイメージ内で true の場合は、このファイルのデバッグバージョンがインストールされます。通常ファイルのデバッグバージョンは variant.arch タグも付けられます。

file payload chash=hash group=sys mode=0644 overlay=allow owner=root
path=etc/motd pkg.csize=116 pkg.size=106 preserve=true variant.debug.osnet=true
file payload chash=hash group=sys mode=0644 overlay=allow owner=root
path=etc/motd pkg.csize=70 pkg.size=50 preserve=true variant.debug.osnet=false

イメージに設定されているバリアントプロパティーの値を表示するには、pkg variant コマンドを使用します。

$ pkg variant
VARIANT                   VALUE
arch                      i386
opensolaris.zone          global

イメージに明示的に設定されたすべてのバリアントとインストール済みパッケージに設定されたすべてのバリアントの値を表示するには、-a オプションを使用します。

$ pkg variant -a
VARIANT                   VALUE
arch                      i386
debug.container           false
debug.osnet               false
opensolaris.zone          global

インストール済みパッケージに設定できるすべてのバリアント値を表示するには、-v オプションを使用します。

$ pkg variant -v
VARIANT                   VALUE
arch                      i386
arch                      sparc
debug.container           false
debug.container           true
debug.osnet               false
debug.osnet               true
opensolaris.zone          global
opensolaris.zone          nonglobal

バリアントプロパティーの値を変更するには、pkg change-variant コマンドを使用します。設定する値を選択するには、pkg variant -v コマンドを使用します。


注 -  バリアントプロパティー値を変更すると、多数のパッケージが更新され、新しい BE が必要になることがあります。変更する前に、どのような変更が行われるかを確認するには、-nv オプションを使用します。

次のコマンドでは、新しい BE が作成されます。BE が作成される状況については、Boot Environment Policy Image Propertiesを参照してください。新しい BE が作成されても、現在の BE は変更されません。この例ではデバッグファイルを使用するように、新しい BE でブートします。-n オプションを使用すると、この操作を -n なしで実行した場合に何が変更されるかが表示されますが、コマンドによって実際の変更は行われません。この例では新しい BE は作成されていません。

$ pkg change-variant -nv variant.debug.osnet=true
            Packages to change:       232
     Variants/Facets to change:         1
     Estimated space available: 306.74 GB
Estimated space to be consumed:   1.49 GB
       Create boot environment:       Yes
     Activate boot environment:       Yes
Create backup boot environment:        No
          Rebuild boot archive:       Yes

Changed variants/facets:
  variant debug.osnet: true

Changed packages:
solaris
  ...

Editable files to change:
  Update:
    etc/motd

ファセット値の表示と変更

ファセットプロパティーは、イメージにデフォルト値があり、明示的に設定する必要はありません。facet.debug または facet.optional で始まる名前を持つファセットプロパティーは、デフォルトで false の値を持ちます。ほかのすべてのファセットプロパティーは、デフォルトで true の値を持ちます。

パッケージマニフェスト内のアクションのファセットタグは、true または all の値のみ指定できます。説明と例については、How Facet and Variant Values Affect Package Installationを参照してください。facet.debug または facet.optional で始まる名前を持つファセットでタグ付けされたアクションは、デフォルトでインストールされません。そのようなアクションをインストールするには、イメージ内のファセットプロパティー値を true に変更する必要があります。ほかのすべてのファセットでタグ付けされたアクションは、デフォルトでインストールされます。そのようなアクションのインストールを避けるには、イメージ内のファセットプロパティー値を false に変更する必要があります。

version-lock ファセットの値 (version-lock.package-name) を変更しても、アクションはインストールまたはアンインストールされません。代わりに、version-lock ファセットは、incorporate タイプの depend アクションを有効または無効にします。Updating a Package Constrained by a Constraint Packageを参照してください。

ファセットプロパティー値には、次の 3 つのいずれかのソースがあります。これらのソース名は、pkg facet コマンド出力の SRC 列に表示されます。

  • system – システムによって割り当てられた値。これらの値は、通常システムパッケージに指定されたファセットタグの値です。

  • localpkg change-facet コマンドを使用するか、IPS API を使用して設定された値。

  • parent – 親イメージから継承された値。たとえば、非大域ゾーンは大域ゾーンからのファセット設定を継承します。

このイメージにローカルで設定されたか、親イメージから継承されたすべてのファセットプロパティーの現在の値とその値のソースを表示するには、pkg facet コマンドを使用します。

イメージに明示的に設定されたすべてのファセットとインストール済みパッケージに設定されたすべてのファセットの値を表示するには、pkg facet -a コマンドを使用します。

次の pkg facet コマンドは、ローカルに設定されているか継承された doc. ファセットプロパティーがないことを示しています。

$ pkg facet doc.*
FACET                     VALUE SRC
pkg facet: no matching facets found
$ pkg facet -a doc.*
FACET                     VALUE SRC
doc.help                  True  system
doc.html                  True  system
doc.info                  True  system
doc.man                   True  system
doc.pdf                   True  system
doc.ps                    True  system

ファセットプロパティーの値を変更するには、pkg change-facet コマンドを使用します。ファセットプロパティー値には、truefalse、または none を設定できます。ファセットプロパティーを none に設定すると、そのファセットにシステムデフォルト値 (true または false のいずれか) が適用され、ソースは system として表示されます。


注 -  ファセットプロパティー値を変更すると、多数のパッケージが更新され、新しい BE が必要になることがあります。変更する前に、どのような変更が行われるかを確認するには、-nv オプションを使用します。

イメージに設定されるファセットは、doc.man などの完全なファセットか、locale.* などのパターンになります。この柔軟性は、ファセット名前空間の一部を無効にし、その名前空間内の個々のファセットのみを有効にする場合に役立ちます。たとえば、次の例に示すように、すべてのロケールを無効にしてから、1 つか 2 つの特定のロケールのみを有効にすることができます。

$ pkg change-facet locale.*=false locale.en_US=true

次の pkg change-facet コマンドでは、新しい BE が作成されませんでしたが、バックアップ BE が作成されています。BE が作成される状況については、Boot Environment Policy Image Propertiesを参照してください。バックアップ BE が作成されると、元のイメージがバックアップに保存され、現在の BE が変更されます。「Changed variants/facets」の下の None の元の値は、前述の pkg facet コマンドによって示されるように、このコマンドの実行前にローカル設定が存在せず、システム設定しか存在していなかったことを示します。

$ pkg change-facet -v doc.*=false doc.man=true
            Packages to change:        97
     Variants/Facets to change:         2
            Services to change:         1
     Estimated space available: 306.34 GB
Estimated space to be consumed: 936.87 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed variants/facets:
    facet doc.* (local): None -> False
    facet doc.man (local): None -> True

Changed packages:
solaris
  ...

Services:
  restart_fmri:
    svc:/application/texinfo-update:default

PHASE                                          ITEMS
...

次の pkg facet コマンドは、pkg change-facet コマンドの結果の doc. ファセットプロパティーの変更を示しています。

$ pkg facet doc.*
FACET                     VALUE SRC
doc.*                     False local
doc.man                   True  local
$ pkg facet -a doc.*
FACET                     VALUE SRC
doc.*                     False local
doc.help                  False local
doc.html                  False local
doc.info                  False local
doc.man                   True  local
doc.pdf                   False local
doc.ps                    False local