マニュアルページセク ション 5: 標準、環境、マクロ

印刷ビューの終了

更新: 2014 年 7 月
 
 

pkg(5)

名前

pkg - Image Packaging System

説明

Image Packaging System、pkg(5) は、ソフトウェアのライフサイクル管理 (インストール、アップグレード、および削除) のために提供されるフレームワークです。Image Packaging System は、一連のキーと値のペアおよび (場合によっては) データペイロードで定義されたアクションのコレクションである、パッケージの単位でソフトウェアを管理します。多くの場合、アクションはファイルシステム内に存在するファイルですが、ドライバ、サービス、ユーザーなどのその他のインストール可能オブジェクトも表します。

パッケージの FMRI とバージョン

パッケージの FMRI とバージョン

各パッケージは、スキーム pkg: を使用して、障害管理リソース識別子 (FMRI) によって表されます。パッケージの完全な FMRI は、次の形式のスキーム、パブリッシャー、パッケージ名、およびバージョン文字列で構成されます。

pkg://solaris/system/library/c++-runtime@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190358Z

solaris は発行元です。system/library/c++-runtime はパッケージ名です。名前空間は階層的であり、その深さは任意ですが、適用される包含関係は存在しません。名前は基本的に任意です。発行元情報はオプションですが、存在する場合は pkg:// を前に付ける必要があります。パブリッシャーを含む FMRI は、しばしば「完全修飾」されていると言われます。パブリッシャー情報が存在しない場合、通常はパッケージ名の前に pkg:/ が付けられます。

クライアントをパッケージ化すると、通常、FMRI にパブリッシャー情報が含まれていない場合に FMRI のスキームを省略できます。たとえば、pkg:/system/library/c++-runtimesystem/library/c++-runtime と書くことができます。スキームが省略される場合、クライアントは照合の目的で、パッケージ名の最後のコンポーネントを除くすべてのコンポーネントを省略することもできます。たとえば、system/library/c++-runtimelibrary/c++-runtime または c++-runtime と書くことができ、これらは c++-runtime という名前のパッケージまたは /c++-runtime で終わるパッケージ名に一致します。

パブリッシャーの名前によって、人、人のグループ、または組織が 1 つ以上のパッケージのソースとして識別されます。パブリッシャーの名前の競合を避け、パブリッシャーを識別しやすくするために、パッケージを公開するエンティティーを表すドメイン名をパブリッシャーの名前として使用することがベストプラクティスです。

パッケージ名のあとに、アットマーク記号 (@) で区切られたバージョンが続きます。バージョンは、句読文字で区切られた 4 つの数字の並びで構成されます。最初の 3 つの並びに含まれる要素はドットで区切られ、これらの並びの長さは任意です。バージョンコンポーネント内の先頭のゼロ (たとえば、01.1 または 1.01) は許可されません。末尾のゼロ (たとえば、1.10) は許可されます。

バージョンの最初の部分はコンポーネントバージョンです。オペレーティングシステムに緊密に結合されたコンポーネントの場合、これは通常、そのバージョンのオペレーティングシステムでの uname -r の値です。独自の開発ライフサイクルを持つコンポーネントの場合、この並びはドットで区切られたリリース番号 (2.4.10 など) です。

バージョンの 2 番目の部分 (存在する場合はコンマ (,) に続いている必要があります) はビルドバージョンです。ビルドバージョンは、パッケージの内容が構築されたオペレーティングシステムのバージョンを指定し、その内容が正常に実行されることを予測できるオペレーティングシステムのバージョンに関する最小の境界が提供されます。

バージョンの 3 番目の部分 (存在する場合はハイフン (-) に続いている必要があります) はブランチバージョンです。ブランチバージョンは、ベンダー固有の情報を提供するバージョン管理コンポーネントです。ブランチバージョンは、コンポーネントバージョンとは独立に、パッケージ化のメタデータが変更されたときに 1 増やすことができます。ブランチバージョンには、ビルド番号やその他の情報が含まれていることがあります。

バージョンの 4 番目の部分 (存在する場合はコロン (:) に続いている必要があります) はタイムスタンプです。タイムスタンプは、そのパッケージがいつ公開されたかを表します。

バージョン間の比較を実行する場合、その左側にあるコンポーネントが同じでないかぎり、バージョン全体のコンポーネントは考慮されません。したがって、4.34.2 より大きいため、4.3-14.2-7 より大きく、31 より大きいため、4.3-34.3-1 より大きくなります。

pkg.human-version 属性は、人間が読むことのできるバージョンの文字列を表示するために使用できます。pkg.human-version 属性の値は、パッケージ FMRI の前述のパッケージバージョンに追加して指定できますが、パッケージ FMRI バージョンを置き換えることはできません。人間が読むことのできるバージョンの文字列は、表示目的でのみ使用されます。詳細は、「設定アクション」を参照してください。

システムの多くの部分では、表示される情報量や必要な情報量を減らすために、必要に応じて FMRI を表示するときには短縮し、入力も短い形式を受け入れます。通常、スキーム、パブリッシャー、ビルドバージョン、およびタイムスタンプは省略できます。すべてのバージョン管理情報を省略できることもあります。

アクション

アクション

アクションはシステム上のインストール可能オブジェクトを表します。アクションはパッケージのマニフェストに記述されます。すべてのアクションは、最初に名前とキー属性を含みます。また、これらはバージョン履歴をたどる過程で一意のオブジェクトを参照します。アクションには、このほかの属性も含まれます。一部の属性は、パッケージシステムによって直接解釈されます。その他の属性は、システム管理者またはエンドユーザーにのみ役立つ可能性があります。

アクションには、次の単純なテキスト表現があります。

action_name attribute1=
value1 attribute2=value2 ...

属性の名前に、空白、引用符、または等号 (=) を含めることはできません。最初の等号のあとの文字はすべて、値に属します。値にはすべての文字を含めることができますが、スペースは単一引用符または二重引用符で囲む必要があります。二重引用符で囲まれている文字列の内部で単一引用符をエスケープする必要はなく、単一引用符で囲まれている文字列の内部で二重引用符をエスケープする必要はありません。引用符の前にバックスラッシュ (\) 文字を付けて、引用文字列が終了しないようにすることができます。バックスラッシュは、バックスラッシュでエスケープできます。

アクションは複数の属性を含むことができます。一部の属性は、単一のアクションに対して異なる値を使用して、複数回名前を付けることができます。同じ名前を持つ複数の属性は、順序付けされていないリストとして扱われます。

多くの属性を持つアクションによって、マニフェストファイル内に長い行が作成されることがあります。このような行は、不完全な各行をバックスラッシュで終了することにより折り返すことができます。この継続文字は、属性と値のペアの間に置く必要があることに注意してください。属性も、その値も、さらにその組み合わせも分割することはできません。

下に示されている属性セットは、これがすべてではありません。実際、アクションに付加できる属性は任意であるため、標準の属性セットは、将来の開発を実装するために容易に拡張できます。

一部の属性によって、パッケージングコンテキストの外部で追加の操作が実行されます。これらの属性は、下の「アクチュエータ」のセクションで説明されています。

ファイルアクション

file アクションは、通常ファイルを表します。file アクションはペイロードを参照し、次の 4 つの標準属性があります。

path

ファイルがインストールされているファイルシステムのパス。これは file アクションのキー属性です。

mode

ファイルのアクセス権 (数値形式)。これらは ACL ではなく、単純なアクセス権のみです。

owner

ファイルを所有するユーザーの名前。

group

ファイルを所有するグループの名前。

ペイロードは、名前が付けられないという点で位置属性です。これは、アクション名のあとの最初の単語です。公開されたマニフェストでは、これはファイルの内容の SHA-1 ハッシュです。これから公開する必要のあるマニフェスト内に存在する場合は、ペイロードを見つけることのできるパスを表します。pkgsend(1) を参照してください。値に等号が含まれている場合は、位置属性の代わりにハッシュ属性を使用できます。この両方を同じアクションで使用できます。ただし、ハッシュは同じである必要があります。

preserve 属性および overlay 属性は、file アクションがインストールされるかどうか、およびその方法に影響を及ぼします。

preserve

パッケージ操作中にファイルを保持する時期と方法を指定します。

パッケージが最初にインストールされるとき、パッケージによって提供されるファイルが持つ preserve 属性が何らかの値で定義されており、ファイルがイメージ内にすでに存在する場合、既存のファイルが /var/pkg/lost+found に格納され、パッケージされたファイルはインストールされます。

パッケージが最初にインストールされるとき、パッケージによって提供されるファイルの preserve 属性が定義済みで、ファイルがイメージ内に存在しない場合、ファイルがインストールされるかどうかは preserve 属性の値によって決まります。

  • preserve の値が legacy である場合、パッケージされたファイルはインストールされません。

  • preserve の値が legacy でない場合、パッケージされたファイルはインストールされます。

パッケージがダウングレードされるとき、ダウングレードされるバージョンのパッケージによって提供されるファイルの preserve 属性が何らかの値で定義されており、次のすべての条件が真の場合、イメージ内に現在存在するファイルは拡張子 .update で名前変更され、ダウングレードされたパッケージからのファイルがインストールされます。

  • ファイルがイメージ内に存在する。

  • ダウングレードされるバージョンのパッケージによって提供されるファイルの内容が、現在インストールされているバージョンのパッケージによって提供されるファイルの内容と異なる。

  • ダウングレードされるバージョンのパッケージによって提供されるファイルの内容が、イメージ内に存在するファイルの内容と異なる。

上の条件のいずれかが真でない場合、このファイルは、パッケージがダウングレードでなくアップグレードされる場合と同様に処理されます。

パッケージがアップグレードされるとき、アップグレードされるバージョンのパッケージによって提供される file アクションの preserve 属性が何らかの値で定義されており、file アクションが、現在インストールされているバージョンのパッケージによって提供される file アクションと同じである場合、ファイルはインストールされず、イメージ内に存在するファイルは変更されません。以前のバージョンをインストールしたあとに加えられたすべての変更が保持されます。

パッケージがアップグレードされるとき、アップグレードされるバージョンのパッケージによって提供される file アクションの preserve 属性が定義済みで、file アクションが新しいか、現在インストールされているバージョンのパッケージによって提供される file アクションとは異なる場合、アップグレードは次の方法で実行されます。

  • イメージ内にファイルが存在しない場合は、新しいファイルがインストールされます。

  • アップグレードされるバージョンのパッケージによって提供されるファイルがイメージ内に存在し、現在インストール済みのバージョンのパッケージ内に存在せず、original_name 属性 (以下を参照) を使用した名前変更または移動を行わなかった場合、既存のファイルは /var/pkg/lost+found に格納され、アップグレードされたバージョンのパッケージによって提供されるファイルがインストールされます。

  • アップグレードされるバージョンのパッケージによって提供されるファイルがイメージ内に存在し、現在インストール済みのバージョンのパッケージによって提供されるファイルと内容が異なる場合、アップグレードは preserve 属性の値に従って実行されます。

    • アップグレードされるバージョンのパッケージによって提供されるファイルの preserve 値が renameold の場合、既存のファイルは拡張子 .old を使用して名前変更され、新しいファイルは更新されたアクセス権およびタイムスタンプ (存在する場合) を使用してインストールされます。下の timestamp 属性の説明を参照してください。

    • アップグレードされるバージョンのパッケージによって提供されるファイルの preserve 値が renamenew の場合、新しいファイルは拡張子 .new を使用してインストールされ、既存のファイルは変更されません。

    • アップグレードされるバージョンのパッケージによって提供されるファイルの preserve 値が true の場合、新しいファイルはインストールされませんが、既存のファイルのアクセス権およびタイムスタンプ (存在する場合) がリセットされます。

  • アップグレードされるバージョンのパッケージによって提供されるファイルがイメージ内に存在し、現在インストール済みのバージョンのパッケージによって提供されるファイルと同じ内容を持ち、preserve 値が renameold または renamenew の場合、既存のファイルはアップグレードされたバージョンのパッケージによって提供されるファイルによって置き換えられ、アクセス権およびタイムスタンプ (存在する場合) も置き換えられます。

  • アップグレードされるバージョンのパッケージによって提供されるファイルがイメージ内に存在し、アップグレードされるパッケージ内の preserve 値が legacy で、現在インストール済みのバージョンのパッケージとは preserve 値が異なる場合、既存のファイルは拡張子 .legacy を使用して名前変更され、新しいファイルは、更新されたアクセス権およびタイムスタンプ (存在する場合) を使用してインストールされます。

  • アップグレードされるバージョンのパッケージによって提供されるファイルがイメージ内に存在し、アップグレードされるパッケージと、現在インストール済みのバージョンのパッケージの両方で preserve 値が legacy の場合、既存のファイルのアクセス権およびタイムスタンプ (存在する場合) がリセットされます。

overlay

このアクションによってほかのパッケージが同じ場所にファイルを提供できるか、またはそれによって別のファイルをオーバーレイすることを目的にしたファイルが提供されるかを指定します。この機能は、どの自己アセンブリにも参加しておらず (たとえば、/etc/motd)、かつ安全に上書きできる構成ファイルで使用されることを目的にしています。

overlay が指定されていない場合は、複数のパッケージが同じ場所にファイルを提供することはできません。

overlay 属性は、次のいずれかの値を持ちます。

allow

もう 1 つのパッケージが同じ場所にファイルを配布できるようになります。preserve 属性も同時に設定されていないかぎり、この値は意味を持ちません。

true

このアクションによって配布されたファイルは、allow を指定したほかのすべてのアクションを上書きします。

インストールされたファイルへの変更は、オーバーレイしているファイルの preserve 属性の値に基づいて保持されます。削除時、ファイルの内容は、preserve 属性が指定されたかどうかには関係なく、オーバーレイされているアクションがまだインストールされている場合は保持されます。別のファイルをオーバーレイできるのは 1 つのアクションだけであり、modeowner、および group 属性が一致している必要があります。

ELF ファイルの場合、次の属性が認識されます。

elfarch

ELF ファイルのアーキテクチャー。これは、そのファイルが構築されたアーキテクチャー上での uname -p の出力です。

elfbits

これは 32 または 64 です。

elfhash

これは、そのファイル内の「興味深い」ELF セクションのハッシュです。これらは、バイナリがロードされるときにメモリーにマップされるセクションです。これらは、2 つのバイナリの実行可能ファイルの動作が異なるかどうかを判定するときに考慮する必要のある唯一のセクションです。

file アクションの場合、次の追加属性が認識されます。

original_name

この属性は、パッケージからパッケージに、または場所から場所に、あるいはその両方で移動している編集可能なファイルを処理するために使用されます。この形式は、元のパッケージの名前のあとに、コロンとこのファイルの元のパスが続きます。削除されているファイルはすべて、そのパッケージとパス、または original_name 属性の値 (指定されている場合) のどちらかを使用して記録されます。original_name 属性が設定された、インストールされている編集可能なファイルはすべて、それが同じパッケージ化の操作の一部として削除されている場合は、その名前のファイルを使用します。

release-note

この属性は、このファイルにリリースノートテキストが含まれていることを示すために使用されます。この属性の値は、パッケージ FMRI です。元のイメージに存在し、元のイメージ内のパッケージよりも新しいバージョンのパッケージ名が FMRI で指定されている場合、このファイルはリリースノートに含まれます。特別な FMRI (feature/pkg/self) は、含まれるパッケージを指します。feature/pkg/self のバージョンが 0 の場合、このファイルは初期インストールのリリースノートにのみ含まれます。

revert-tag

この属性は、セットとして元に戻すべき編集可能なファイルをタグ付けするために使用されます。revert-tag 属性の値は tagname です。単一の file アクションに対して複数の revert-tag 属性を指定できます。これらのいずれかのタグを指定して pkg revert が呼び出されると、ファイルはマニフェストで定義された状態に戻ります。pkg revert コマンドの詳細については、pkg(1) マニュアルページを参照してください。

revert-tag 属性は、ディレクトリレベルでも指定できます。後述の「ディレクトリアクション」を参照してください。

sysattr

この属性は、このファイルに設定する必要があるシステム属性を指定するために使用されます。sysattr 属性の値は、次の例に示すように、詳細システム属性のカンマ区切りリストまたはコンパクトシステム属性オプションの文字列シーケンスの場合があります。サポートされるシステム属性は、chmod(1) マニュアルページで説明されています。マニフェストに指定されるシステム属性は、オペレーティングシステムのほかのサブシステムによって設定される場合があるシステム属性に追加で設定されます。

file path=opt/secret_file sysattr=hidden,sensitive
file path=opt/secret_file sysattr=HT
timestamp

この属性は、ファイルに対するアクセスおよび変更時間を設定するために使用します。timestamp 属性値は、コロンおよびハイフンを省略した、ISO-8601 形式の UTC で表現する必要があります。

timestamp 属性は、Python 用の .pyc または .pyo ファイルをパッケージングする場合に不可欠です。.pyc または .pyo ファイルに関連する .py ファイルは、次の例で示すように、これらのファイル内に埋め込まれたタイムスタンプを使用してマーク付けする必要があります。

file path=usr/lib/python2.6/vendor-packages/pkg/__init__.pyc ...
file path=usr/lib/python2.6/vendor-packages/pkg/__init__.py \
     timestamp=20130311T221521Z ...

file アクションに対する次の属性はシステムによって自動的に生成されるため、パッケージ開発者によって指定しないでください。

hash

非圧縮ファイルの SHA-1 ハッシュ。

chash

圧縮ファイルの SHA-1 ハッシュ。

pkg.size

非圧縮ファイルのバイト単位のサイズ。

pkg.csize

圧縮ファイルのバイト単位のサイズ。

ディレクトリアクション

dir アクションは、ファイルシステムオブジェクトを表すという点で file アクションに似ています。dir アクションは、通常ファイルの代わりにディレクトリを表します。dir アクションには、file アクションが持つのと同じ pathmodeowner、および group 属性があり、path がキー属性です。dir アクションは revert-tag 属性も受け入れます。revert-tag 属性の値は、file アクションと dir アクションで異なります。

ディレクトリは、IPS でカウントされる参照です。あるディレクトリを明示的または暗黙的に参照している最後のパッケージが参照を行わなくなると、そのディレクトリは削除されます。そのディレクトリにパッケージ解除されたファイルシステムオブジェクトが含まれている場合、それらの項目は $IMAGE_META/lost+found に移動されます。$IMAGE_META についての詳細は、「ファイル」のセクションを参照してください。

revert-tag

この属性は、セットとして削除する必要があるパッケージ解除されたファイルを識別するために使用します。file アクションに対してこの属性を指定する方法についての説明は、上記の「ファイルアクション」を参照してください。ディレクトリの場合、revert-tag 属性の値は tagname=pattern です。単一の dir アクションに対して複数の revert-tag 属性を指定できます。マッチングする tagname を指定して pkg revert が呼び出されると、pattern に一致する (シェルグロビング文字を使用)、この dir ディレクトリの下にあるパッケージ解除されたファイルまたはディレクトリが削除されます。pkg revert コマンドの詳細については、pkg(1) マニュアルページを参照してください。

salvage-from

この属性は、パッケージ解除された内容を新しいディレクトリに移動する場合に使用できます。この属性の値は、回収された項目のディレクトリの名前です。salvage-from 属性を持つディレクトリは、作成時に、salvage-from 属性の値に指定されたディレクトリのすべての内容を継承します。

リンクアクション

link アクションはシンボリックリンクを表します。link アクションには、次の標準属性があります。

path

シンボリックリンクがインストールされるファイルシステムのパス。これは link アクションのキー属性です。

target

シンボリックリンクのターゲット。リンクの解決先のファイルシステムオブジェクト。

mediator

特定のメディエーショングループ (たとえば、python) に参加しているすべてのパス名によって共有されているメディエーション名前空間内のエントリを指定します。mediator-version または mediator-implementation、あるいはその両方に基づいてリンクメディエーションを実行できます。特定のパス名に対してメディエートされたリンクはすべて、同じメディエータを指定する必要があります。ただし、すべてのメディエータバージョンおよび実装が、特定のパスでリンクを提供する必要はありません。メディエーションがリンクを提供していない場合は、そのメディエーションが選択されたときにリンクが削除されます。特定のバージョンまたは実装、あるいはその両方と組み合わせた mediator は、パッケージシステムで使用するために選択できるメディエーションを表します。

mediator-version

mediator 属性で記述されたインタフェースの (負にならない整数のドットで区切られた並びとして表された) バージョンを指定します。この属性は、mediator が指定され、mediator-implementation は指定されていない場合に必要です。ローカルシステム管理者は、使用するバージョンを明示的に設定できます。指定された値は一般に、リンクを提供しているパッケージのバージョンに一致するようにしてください (たとえば、runtime/python-26mediator-version=2.6 を使用します)。ただし、これは必須ではありません。

mediator-implementation

mediator-version に加えて、またはこの代わりに使用するメディエータの実装を指定します。実装の文字列は順序付けられているとは見なされず、システム管理者によって明示的に指定されていない場合は、pkg (5) によって文字列が任意に選択されます。

この値は、英数字とスペースで構成された任意の長さの文字列にすることができます。実装自体をバージョン管理できるか、または実際にバージョン管理されている場合は、文字列の最後の @ のあとに (負にならない整数のドットで区切られた並びとして表された) バージョンを指定します。実装の複数のバージョンが存在する場合、デフォルトの動作では、最大のバージョンを持つ実装が選択されます。

特定のパスにある実装メディエーションリンクの 1 つのインスタンスだけがシステムにインストールされている場合は、その 1 つのインスタンスが自動的に選択されます。このパスにある将来のリンクがインストールされても、ベンダー、サイト、またはローカルのオーバーライドが適用されないかぎり、またはいずれかのリンクのバージョンがメディエートされた場合、このリンクは切り替えられません。

mediator-priority

メディエートされたリンクの競合を解決する場合、pkg(5) は通常、mediator-version の最大の値を持つリンクを選択するか、またはそれが不可能な場合は mediator-implementation に基づいて選択します。この属性は、正常な競合解決処理のためのオーバーライドを指定するために使用されます。

この属性が指定されていない場合は、デフォルトのメディエータ選択ロジックが適用されます。

この値が vendor である場合は、このリンクが、mediator-priority が指定されていないリンクより優先されます。

この値が site である場合は、このリンクが、vendor の値を持つリンクや、mediator-priority が指定されていないリンクより優先されます。

ローカルシステム管理者は、上で説明した選択ロジックをオーバーライドできます。

ハードリンクアクション

hardlink アクションは、ハードリンクを表します。このアクションは link アクションと同じ属性を持ち、そのキー属性も同じく path です。

ドライバアクション

driver アクションはデバイスドライバを表します。driver アクションはペイロードを参照しません。ドライバファイル自体を file アクションとしてインストールする必要があります。次の属性が認識されます (詳細は add_drv(1M) を参照)。

name

ドライバの名前。多くの場合はドライババイナリのファイル名ですが、必ずしもそうとは限りません。これは driver アクションのキー属性です。

alias

これはドライバの別名を表します。特定のドライバが複数の alias 属性を持つことができます。特殊な引用符の規則は必要ありません。

class

これはドライバクラスを表します。特定のドライバが複数の class 属性を持つことができます。

perms

これは、ドライバのデバイスノードのファイルシステムアクセス権を表します。

clone_perms

これは、このドライバに対する複製ドライバのマイナーノードのファイルシステムアクセス権を表します。

policy

これは、デバイスのための追加のセキュリティーポリシーを指定します。特定のドライバが複数の policy 属性を持つことができますが、マイナーデバイスの指定が複数の属性に存在することはできません。

privs

これは、ドライバで使用される特権を指定します。特定のドライバが複数の privs 属性を持つことができます。

devlink

これは /etc/devlink.tab 内のエントリを指定します。この値はファイルに書き込まれる行そのものであり、タブは \t で示されます。詳細は、devlinks(1M) を参照してください。特定のドライバが複数の devlink 属性を持つことができます。

依存アクション

depend アクションは、パッケージ間の依存関係を表します。あるパッケージが別のパッケージに依存することがあります。たとえば、最初のパッケージの機能を有効にする (場合によってはインストールする) ために、2 番目のパッケージの機能が必要な場合があります。依存関係はオプションです。インストール時に依存関係が満たされない場合、パッケージシステムはほかの制約に応じて、依存パッケージをインストールするか、または十分に新しいバージョンに更新しようとします。

次の属性が認識されます。

fmri

依存パッケージを表す FMRI。これは dependency アクションのキー属性です。fmri 値にパブリッシャーを含めることはできません。パッケージ名は完全であると見なされます。タイプ require-any の依存関係は、複数の fmri 属性を持つことができます。fmri 値でバージョンはオプションですが、依存関係のタイプによっては、バージョンのない fmri は無意味である場合があります。

type

依存関係のタイプ。

require

依存関係が必要であり、かつ fmri 属性で指定されたバージョン以上のバージョンを持っている必要があります。バージョンが指定されていない場合は、任意のバージョンが依存関係を満たします。パッケージの必要な依存関係のいずれかを満たすことができない場合、そのパッケージはインストールできません。

optional

依存関係が存在する場合は、指定されたバージョンレベル以上である必要があります。

exclude

指定されたバージョンレベル以上という依存関係が存在する場合は、含んでいるパッケージをインストールできません。バージョンが指定されていない場合、依存パッケージは、依存関係を指定しているパッケージと同時にインストールできません。

incorporate

依存関係はオプションですが、依存するパッケージのバージョンは制約されます。以下の「制約と凍結」を参照してください。

require-any

複数の fmri 属性で指定された複数の依存パッケージのうちのいずれか 1 つが、依存関係のタイプ require と同じ規則に従って依存関係を満たすことができます。

conditional

依存関係は、predicate 属性で定義されたパッケージがシステム上に存在する場合にのみ必要です。

origin

このパッケージのインストールの前に、依存関係のターゲット (存在する場合) は変更されるイメージ上の指定された値以上である必要があります。root-image 属性の値が true である場合、このパッケージをインストールするには、/ をルートとするイメージ上にターゲットが存在する必要があります。root-image 属性の値が true で、fmri 属性の値が pkg:/feature/firmware/ で始まる場合、fmri 値の残りの部分は、ファームウェアの依存関係を評価する /usr/lib/fwenum 内のコマンドとして扱われます。例については、「Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.2」を参照してください。

group

依存関係は、パッケージがイメージ回避リスト上にないかぎり必要です。廃止されたパッケージは、暗黙のうちにグループの依存関係を満たすことに注意してください。pkg(1) の avoid サブコマンドを参照してください。

parent

依存関係は、イメージが子イメージでない場合は無視されます。このイメージが子イメージである場合は、親イメージ内に依存関係が存在する必要があります。parent 依存関係でのパッケージバージョンの照合は、incorporate 依存関係で使用されるものと同じです。

predicate

conditional 依存関係の述語を表す FMRI。

root-image

先に説明した origin 依存関係に対してのみ有効です。

ライセンスアクション

license アクションは、パッケージの内容に関連したライセンスやその他の情報ファイルを表します。パッケージは license アクションの使用を通して、ライセンス、免責条項、またはその他のガイダンスをパッケージインストーラに提供できます。

license アクションのペイロードは、パッケージに関連したイメージメタデータディレクトリに提供され、人間が読める形式のテキストデータのみが含まれているべきです。HTML やその他の形式のマークアップが含まれていてはいけません。license アクションは、属性を通して、関連するペイロードが表示または同意、あるいはその両方を必要としていることをクライアントに示すことができます。表示または同意、あるいはその両方の方法は、クライアントに任されています。

次の属性が認識されます。

license

これは license アクションのキー属性です。この属性は、ユーザーがライセンスのテキスト自体を読まなくてもその内容を判断できるように支援するための、ライセンスの意味のある説明を提供します。この値のいくつかの例を次に示します。

  • ABC Co. Copyright Notice

  • ABC Co. Custom License

  • Common Development and Distribution License 1.0 (CDDL)

  • GNU General Public License 2.0 (GPL)

  • GNU General Public License 2.0 (GPL) Only

  • MIT License

  • Mozilla Public License 1.1 (MPL)

  • Simplified BSD License

license 値は、パッケージ内で一意である必要があります。上のいくつかの例に示すように、説明にライセンスのバージョンを含めることをお勧めします。パッケージに複数のライセンスに基づくコードが含まれる場合、複数の license アクションを使用します。ライセンス属性値の長さは、64 文字以下にしてください。

must-accept

true の場合は、関連するパッケージをインストールまたは更新するには、ユーザーがこのライセンスに同意する必要があります。この属性を省略すると、false と同等になります。同意の方法 (たとえば、対話型または構成ベース) は、クライアントに任されています。パッケージの更新については、ライセンスアクションまたはペイロードが変更されていない場合、この属性は無視されます。

must-display

true の場合は、パッケージ化の操作中に、クライアントがこのアクションのペイロードを表示する必要があります。この値を省略すると、false と同等になります。この属性は、コピーライト表示に使用しないでください。この属性は、操作中に表示する必要のある実際のライセンスまたはその他の素材にのみ使用してください。表示の方法は、クライアントに任されています。パッケージの更新については、ライセンスアクションまたはペイロードが変更されていない場合、この属性は無視されます。

レガシーアクション

legacy アクションは、従来のパッケージシステムで使用されるパッケージデータを表します。このアクションに関連付けられた属性は、従来のシステムのデータベースに追加されます。そのため、これらのデータベースに問い合わせを行なっているツールは、従来のパッケージが実際にインストールされているかのように動作できます。特にこれにより、pkg 属性で指定されたパッケージがシステムにインストールされていることを従来のシステムに十分に確信させることができるため、このパッケージを、依存関係を満たすために使用できるようになります。

pkginfo(4) のパラメータに従って指定された次の属性が認識されます。

category

CATEGORY パラメータの値。デフォルト値は system です。

desc

DESC パラメータの値。

hotline

HOTLINE パラメータの値。

name

NAME パラメータの値。デフォルト値は none provided です。

pkg

インストールされるパッケージの略語。デフォルト値は、パッケージの FMRI の名前です。これは legacy アクションのキー属性です。

vendor

VENDOR パラメータの値。

version

VERSION パラメータの値。デフォルト値は、パッケージの FMRI のバージョンです。

設定アクション

set アクションは、パッケージの説明などの、パッケージレベルの属性 (またはメタデータ) を表します。

次の属性が認識されます。

name

属性の名前。

value

属性に与えられた値。

set アクションは、パッケージ作成者が選択した任意のメタデータを提供できます。ただし、パッケージシステムにとって特別な意味を持つ、適切に定義された属性名がいくつか存在します。

info.classification

pkg(5) クライアントがパッケージを分類するために使用できる 1 つ以上のトークン。この値には、スキーム (「org.opensolaris.category.2008」や「org.acm.class.1998」など) と実際の分類 (「アプリケーション/ゲーム」など) がコロン (:) で区切られて含まれています。

pkg.description

パッケージの内容と機能の詳細な説明。通常は、1 つの段落程度の長さです。

pkg.fmri

含まれるパッケージの名前とバージョン。「説明」セクションの「パッケージの FMRI とバージョン」を参照してください。

pkg.human-version

IPS によって使用されるバージョンスキームは厳格です。「説明」セクションの「パッケージの FMRI とバージョン」を参照してください。より柔軟性のあるバージョンを pkg.human-version 属性の値として指定できます。値は IPS ツール (pkg infopkg contentspkg search など) によって表示されます。pkg.human-version の値はバージョン比較のベースとして使用されず、pkg.fmri バージョンの代わりに使用することはできません。

pkg.obsolete

true の場合、パッケージは廃止としてマークされています。廃止されたパッケージには、ほかの設定アクション以外のアクションは存在せず、また名前変更としてマークすることはできません。

pkg.renamed

true の場合は、パッケージの名前が変更されました。このパッケージには、このパッケージの名前が変更された先のパッケージバージョンを指す 1 つ以上の depend アクションも存在する必要があります。パッケージを名前変更と廃止の両方としてマークすることはできませんが、それ以外は任意の数の設定アクションが存在できます。

pkg.summary

パッケージの短い、1 行の説明。

グループアクション

group アクションは、group(4) で定義されるのと同様の UNIX グループを定義します。グループパスワードのサポートはありません。このアクションで定義されたグループには最初、ユーザーリストがありません。ユーザーは、user アクションを使用して追加できます。次の属性が認識されます。

groupname

グループの名前の値。

gid

グループの一意の数値 ID。デフォルト値は、100 未満の最初に空いているグループです。

ユーザーアクション

user アクションは、/etc/passwd/etc/shadow/etc/group、および /etc/ftpd/ftpusers ファイルで定義されるのと同様の UNIX ユーザーを定義します。この user アクションで定義されたユーザーについて、エントリが適切なファイルに追加されます。

user アクションは、デーモンまたは使用するほかのソフトウェアのためにユーザーを定義することを目的としています。管理または対話アカウントを定義する目的で user アクションを使用しないでください。

次の属性が認識されます。

username

ユーザーの一意の名前。

password

ユーザーの暗号化パスワード。デフォルト値は *LK* です。shadow(4) を参照してください。

uid

ユーザーの一意の UID。デフォルト値は、100 未満の最初に空いている値です。

group

ユーザーのプライマリグループの名前。/etc/group に存在する必要があります。

gcos-field

/etc/passwd 内の gcos フィールドの値。デフォルト値は username です。

home-dir

ユーザーのホームディレクトリ。このディレクトリはシステムイメージディレクトリ内にある必要があり、/home などの別のマウントポイントの下であってはいけません。デフォルト値は / です。

login-shell

ユーザーのデフォルトのシェル。デフォルト値は空です。

group-list

ユーザーが属しているセカンダリグループ。group(4) を参照してください。

ftpuser

true または false に設定できます。true のデフォルト値は、ユーザーが FTP 経由のログインを許可されていることを示します。ftpusers(4) を参照してください。

lastchg

1970 年 1 月 1 日と、パスワードが最後に変更された日付の間の日数。デフォルト値は空です。shadow(4) を参照してください。

min

パスワード変更の間の必要な最小日数。パスワードの有効期限を有効にするには、このフィールドを 0 以上に設定する必要があります。デフォルト値は空です。shadow(4) を参照してください。

max

パスワードが有効な最大日数。デフォルト値は空です。shadow(4) を参照してください。

warn

パスワードの期限が切れる前にユーザーに警告が表示される日数。shadow(4) を参照してください。

inactive

そのユーザーに許可されている非活動の日数。これはマシンごとにカウントされます。最終ログインに関する情報は、そのマシンの lastlog ファイルから取得されます。shadow(4) を参照してください。

expire

UNIX エポック (1970 年 1 月 1 日) 以降の日数として表される絶対的な日付。この日数に達すると、ログインを使用できなくなります。たとえば、13514 の期限切れの値は、ログインの有効期限が 2007 年 1 月 1 日であることを指定します。shadow(4) を参照してください。

flag

空に設定されています。shadow(4) を参照してください。

アクチュエータ

アクチュエータ

コンテキストによっては、特定のアクションの準備として、またはその導入のあとに、追加の操作を実行することが適している場合があります。これらの追加の操作はオペレーティングシステムに固有のもので、一般にライブシステムイメージ上でのみ必要です。ライブイメージは、現在のゾーンのアクティブな実行中のブート環境の / にマウントされたイメージです。パッケージのインストールまたは削除に関与する複数のアクションのアクチュエータが同一である場合、アクチュエータの存在に対応する操作は、そのインストールまたは削除に対して 1 回実行されます。

アクチュエータを誤って指定すると、そのアクチュエータがインストールを安全に進めるための手段を決定できない場合、パッケージのインストールが失敗することがあります。

次のアクチュエータが定義されています。

reboot-needed

true または false に設定できます。このアクチュエータは、パッケージシステムがライブイメージ上で動作している場合、タグ付きアクションの更新または削除を新しいブート環境で実行する必要があることを宣言します。新しいブート環境の作成は、be-policy イメージプロパティーによって制御されます。be-policy プロパティーについての詳細は、pkg(1) のマニュアルページの「イメージプロパティー」セクションを参照してください。

disable_fmrirefresh_fmrirestart_fmrisuspend_fmri

これらの各アクチュエータは、パッケージのインストールまたは削除中に操作するサービスインスタンスの FMRI の値を取ります。disable_fmri を指定すると、svcadm(1M) の disable サブコマンドに従って、アクションの削除の前に特定の FMRI が無効になります。refresh_fmri および restart_fmri を指定すると、svcadm(1M) の対応するサブコマンドに従って、アクションのインストール、更新、または削除のあとに特定の FMRI が更新または再起動されます。最後に、suspend_fmri を指定すると、アクションのインストールフェーズの前に特定の FMRI が一時的に無効になり、そのフェーズが完了したあとに有効になります。

この値には、複数のサービスインスタンスに一致するパターンを含めることができます。ただし、それをインスタンスを示さずに暗黙的に行うのではなく、svcs(1) によって受け入れられた glob を使用して明示的に行う必要があります。

メディエーション

メディエーション

メディエータは、一連の関連するシンボリックリンクまたはハードリンクを表す名前です。2 つ以上のリンクアクションが同じパスとメディエータ名を持つ場合、ユーザーまたはパッケージシステムは、バージョン、実装、または優先度に基づいてリンクターゲットを選択します。メディエータ属性については、「リンクアクション」を参照してください。

次の例は、リンクがバージョンによって選択される、java という名前のメディエータの 2 つの異なるインスタンスを示しています。これらの 2 つの link アクションは 2 つの異なるパッケージに出現します。

link mediator=java mediator-version=1.6 path=usr/java target=jdk/jdk1.6.0_31
link mediator=java mediator-version=1.7 path=usr/java target=jdk/jdk1.7.0_02

このリンクパスのバージョンを選択する方法については、pkg(1) のマニュアルページの set-mediator サブコマンドを参照してください。バージョンを選択するには、両方のパッケージがインストールされている必要があります。

制約と凍結

制約と凍結

パッケージが新しいバージョンに移行される場合、またはシステムに追加されたり、システムから削除されたりする場合、選択されるバージョンや、削除が許可されるかどうかは、そのパッケージに対するさまざまな制約によって決定されます。これらの制約は、依存関係の形式でほかのパッケージが定義するか、または凍結の形式で管理者が定義できます。

制約のもっとも一般的な形式は、上の「依存アクション」で説明したように、require 依存関係によって提供されます。このような制約によって、パッケージがダウングレードまたは削除されることが回避されます。

オペレーティングシステムのほとんどの部分は、incorporation と呼ばれるパッケージによってカプセル化されています。これらのパッケージは主に、incorporate 依存関係によって表される制約を提供します。

上で説明したように、組み込まれたパッケージがシステム上に存在する必要はありませんが、存在する場合は、包括的な最小バージョンと排他的な最大バージョンの両方を指定します。たとえば、依存する FMRI のバージョンが 1.4.3 の場合、1.4.3 未満のバージョンは依存関係を満たさず、1.4.4 以上のバージョンでも依存関係を満たしません。ただし、1.4.3.7 など、単にドット形式の数列を拡張したバージョンは許可されます。

incorporation は、システムの各部の同期的なアップグレードを強制的に行うために使用されます。C ライブラリやカーネルなどの一部のコンポーネントでは、これは基本的な要件です。ほかには依存関係が存在しない単純なユーザーランドコンポーネントなどのその他のコンポーネントでは、incorporation の特定のバージョンから参照できるテストされた、既知の一連のパッケージバージョンを提供するためだけに、同期アップグレードが使用されます。

incorporation は単なるパッケージであるため、削除することができ、それが提供しているすべての制約がそれによって緩和されます。ただし、その緩和は安全ではないため、Oracle Solaris によって提供される多くの incorporation が、それらの incorporation によって組み込まれているパッケージには必要です。

パッケージを、インストール済みの incorporation によって許可されていないバージョンにアップグレードしようとしても、要求を満たすためにその incorporation の新しいバージョンを見つけようとする試みは行われず、そのアップグレードは失敗します。制約自体を移動する必要があるが、それを指定している incorporation を削除できない場合は、その incorporation を、制約の目的のバージョンを指定するバージョンにアップグレードする必要があります。incorporation をアップグレードすると、その新しいバージョンによって提供される制約を満たさない組み込まれたパッケージもすべてアップグレードされます。

システム管理者は、pkg freeze コマンドを使用してパッケージを制約できます。バージョンが指定されていない場合、指定されたパッケージは、システムにインストールされているバージョンに制約されます。バージョン管理されたパッケージが指定された場合、この管理上の制約 (つまり、凍結) は、fmri 属性が指定されたパッケージバージョンの値を持った状態で incorporate 依存関係がインストールされているかのように機能します。

凍結がパッケージシステムによって自動的に解除されることはありません。制約を緩和するには、pkg unfreeze コマンドを使用します。

発行元とリポジトリ

発行元とリポジトリ

上で詳細に説明したように、パブリッシャーとは単に、パッケージクライアントがパッケージのプロバイダを識別するために使用する名前です。パブリッシャーは、パッケージリポジトリまたはパッケージアーカイブ、あるいはその両方を使用してパッケージを配布できます。現在パッケージシステムでサポートされているリポジトリのタイプには、起点リポジトリとミラーリポジトリの 2 つがあります。

起点は、1 つ以上のパッケージのすべてのメタデータ (カタログ、マニフェスト、検索インデックスなど) と内容 (ファイル) を含むパッケージリポジトリです。イメージ内の特定のパブリッシャーに対して複数の起点が構成されている場合、パッケージクライアント API は、パッケージデータの取得元として最適な起点を選択しようとします。これはもっとも一般的なタイプのリポジトリであり、パッケージリポジトリ上で pkgsend または pkgrecv が使用された場合は常に、暗黙的に作成されます。

ミラーは、パッケージの内容 (ファイル) のみを含むパッケージリポジトリです。イメージ内の特定のパブリッシャーに対して 1 つ以上のミラーが構成されている場合、クライアント API はパッケージ内容の取得のためのミラーを優先し、パッケージの内容の取得元として最適なミラーを選択しようとします。ミラーが到達不可能か、必要な内容が含まれていないか、またはより低速な場合、クライアント API は、構成されているいずれかの起点リポジトリから内容を取得します。ミラーは、pkg.depotd(1M) の動的ミラー機能を使用している、信頼できる一連のクライアント間の内容共有に使用されることを目的にしています。ミラーはまた、パッケージのメタデータへのアクセスを認証するために使用されることも目的にしています。ただし、パッケージの内容は認証なしで配布します。たとえば、あるクライアントが、アクセスするには SSL キーと証明書のペアが必要な https 起点と、パッケージの内容を提供する http ミラーを使用して構成される可能性があります。このようにして、認可クライアントだけがパッケージをインストールまたは更新できるようにしながら、パッケージ内容の取得のための認証のオーバーヘッドが回避されます。ミラーは、file という名前のサブディレクトリとその親を除く、リポジトリのすべてのサブディレクトリを削除することによって作成できます。また、pkg.depotd(1M) のミラーモードを使用すると、起点リポジトリもミラーとしてプロビジョニングできます。

大域ゾーンと非大域ゾーンの更新

大域ゾーンと非大域ゾーンの更新

pkg システムは、非大域ゾーンを強制的に大域ゾーンと同期された状態に保持します。つまり、同じカーネルが確実に実行されるようにするために、特定のパッケージを大域ゾーンとすべての非大域ゾーンで同じバージョンにする必要があります。このために、pkgparent 依存関係を使用して、非大域ゾーンに特定の制約を課します。parent 依存関係についての詳細は、上の「依存アクション」を参照してください。

大域ゾーンが非大域ゾーンに課す制限のため、非大域ゾーンは大域ゾーンのパッケージにアクセスできる必要があり、かつ同様の発行元構成にする必要があります。これらの目的はどちらも、システムリポジトリ を使用して実現されます (pkg.sysrepo(1M) のマニュアルページを参照)。システムリポジトリは、大域ゾーン内で構成された発行元へのアクセスと、これらの発行元が構成されている方法に関する情報を提供します。インストールまたは更新中に非大域ゾーンで別のパッケージが選択されないようにするために、発行元の検索順序で、システム発行元には非大域ゾーン内で構成された発行元より高くランク付けされます。発行元の検索順序については、pkg(1) のマニュアルページの pkg set-publisher コマンドを参照してください。

システム上のすべての非大域ゾーンを更新するには、大域ゾーン内で pkg update コマンドを引数なしで使用します。このコマンドは大域ゾーンに対して、また各非大域ゾーンに対して再帰的に動作します。非大域ゾーンを大域ゾーン内で行われた変更と同期された状態にするために、非大域ゾーンに対して必要な最小の変更が加えられます。たとえば、パッケージ foo が大域ゾーンと非大域ゾーンの両方にバージョン 1 でインストールされており、システムリポジトリ内でバージョン 2 が使用可能であると想定します。foo に親の依存関係が存在する場合、parent 依存関係によってパッケージは強制的に同期された状態に保持されるため、pkg update foofoo を大域ゾーンと非大域ゾーンの両方でバージョン 2 に更新します。foo に親の依存関係が存在しない場合、foo は大域ゾーンでバージョン 2 に更新されますが、非大域ゾーンではバージョン 1 のままになります。

ファセットとバリアント

ファセットとバリアント

ソフトウェアには、省略可能なコンポーネントや、相互に排他的なコンポーネントが含まれることがあります。省略可能なコンポーネントの例には、ロケールやドキュメントがあります。相互に排他的なコンポーネントの例には、SPARC バイナリと x86 バイナリや、デバッグバイナリと非デバッグバイナリなどがあります。

IPS では、省略可能なコンポーネントをファセット、相互に排他的なコンポーネントをバリアントと呼びます。ファセットとバリアントはパッケージアクションのタグとして指定します。各ファセットタグおよびバリアントタグには名前と値があります。1 つのアクションに複数のファセットタグおよびバリアントタグを付けることができます。複数のファセットおよびバリアントタグのあるコンポーネントの例には、開発者によって使われるアーキテクチャー固有のヘッダーファイルや SPARC 大域ゾーン専用のコンポーネントなどがあります。

バリアントタグの例は variant.arch=sparc です。ファセットタグの例は facet.devel=true です。ファセットとバリアントは、facet. variant. を先頭に付けずに参照されることがよくあります。

ファセットとバリアントはイメージの特殊なプロパティーであり、個々のパッケージには設定できません。イメージに設定されたファセットおよびバリアントの現在の値を表示するには、pkg(1) のマニュアルページに示すように、pkg facet コマンドと pkg variant コマンドを使用します。イメージに設定されたファセットおよびバリアントの値を変更するには、pkg change-facet コマンドと pkg change-variant コマンドを使用します。

ファセットは、パッケージクライアントによってブール値として扱われ、ファセットは、イメージ内で true (有効) または false (無効) にのみ設定できます。デフォルトで、イメージ内のすべてのファセットは、true に設定されていると見なされます。

ファセットは、pkg change-facet コマンドを使用してイメージ内でローカルに設定するか、親イメージから継承することができます。たとえば、非大域ゾーンは大域ゾーンからファセットを継承できます。継承されたファセットは、ローカルで設定されたファセットよりも先に評価され、優先されます。同じファセットが、継承もローカル設定もされた場合、継承されたファセット値によって、ローカルで設定された値がマスクされます。マスクされたファセットは、ファセットの評価とパッケージアクションに影響しません。pkg change-facet コマンドを使用して行われるファセット変更は、ローカルで設定されたファセットにのみ影響します。継承されたファセットは、親イメージ内で変更を行うことによってのみ変更できます。デフォルトでは、pkg facet コマンドはマスクされたファセットを表示しません。

ファセットが設定されたアクションをクライアントがフィルタ処理する方法を制御するために、アクションのファセットタグの値を all または true に設定できます。all または true 以外のすべての値では、未定義の動作が発生します。ファセットタグを持つアクションをインストールするために、イメージ内に存在する必要のある条件の説明については以下を参照してください。

ファセットに対する all 値は、単一レベルを超えるフィルタリングが必要な場合に便利です。次の例で、doc ファセットと、locale ファセットの少なくとも 1 つが、イメージ内で true の場合のみ、foo.txt がインストールされます。これにより、管理者はドキュメントを除外しつつ、特定のロケールのサポートを有効化または無効化できます。さらに、doc ファセットと devel ファセットの両方がイメージ内で true の場合のみ、api.txt がインストールされます。

file path=usr/share/doc/foo/foo.txt facet.doc=all facet.locale.en_GB=true facet.locale.en_US=true
file path=usr/share/doc/foo/api.txt facet.doc=all facet.devel=all

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

# pkg change-facet locale.*=false
[output about packages being updated]
# pkg change-facet locale.en_US=true
[output about packages being updated]

ほとんどのバリアントは任意の数の値を設定できます。たとえば、arch バリアントには、i386sparcppcarm、またはディストリビューションでサポートされているどんなアーキテクチャーでも設定できます。(Oracle Solaris では i386sparc のみが使用されます。)例外は debug バリアントです。debug バリアントには、true または false のみを設定でき、ほかの値では動作が不確定になります。ファイルアクションに非デバッグバージョンとデバッグバージョンの両方がある場合、次の例に示すように、両方のバージョンに該当する debug バリアントが明示的に設定されている必要があります。

file group=sys mode=0644 overlay=allow owner=root \
  path=etc/motd pkg.csize=115 pkg.size=103 preserve=true \
  variant.debug.osnet=true

file group=sys mode=0644 overlay=allow owner=root \
  path=etc/motd pkg.csize=68 pkg.size=48 preserve=true \
  variant.debug.osnet=false

バリアントを使用するパッケージをインストールするために、バリアント値をイメージに設定する必要があります。arch および zone バリアントは、イメージを作成し、その初期コンテンツをインストールするプログラムによって設定されます。イメージ内の debug.* バリアントはデフォルトで false です。

    イメージに設定されたファセットとバリアントは、特定のアクションがインストールされるかどうかに影響します。

  • ファセットまたはバリアントタグのないアクションは常にインストールされます。

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

    • all 値を持つアクションのすべてのファセットタグが、イメージ内で true である (true がデフォルトです)。

    • アクションのいずれかのファセットタグが、true の値を持つ場合、イメージ内のこれらのファセットの少なくとも 1 つが true である。

  • バリアントタグのあるアクションは、すべてのバリアントタグの値がイメージに設定されている値と同じ場合にのみインストールされます。

  • ファセットタグとバリアントタグの両方があるアクションは、ファセットとバリアントの両方でアクションのインストールが許可されている場合にインストールされます。

カスタムのファセットタグと variant.debug.* バリアントタグを作成できます。詳細については、「Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.2」を参照してください。Oracle Solaris では、次のタグが一般に使用されます。

バリアント名
取り得る値
variant.arch
sparci386
variant.opensolaris.zone
globalnonglobal
variant.debug.*
truefalse

次のリストに、Oracle Solaris で使用される小さなファセットタグの例を示します。

facet.devel             facet.doc
facet.doc.html          facet.doc.info
facet.doc.man           facet.doc.pdf
facet.locale.de         facet.locale.en_GB
facet.locale.en_US      facet.locale.fr
facet.locale.ja_JP      facet.locale.zh_CN

イメージポリシー

イメージポリシー

イメージポリシーはブール値を持つイメージプロパティーによって定義されます。flush-content-cache-on-success および send-uuid プロパティーについてとそれらの値の表示および変更方法については、pkg(1) のマニュアルページのイメージプロパティーに関する項目を参照してください。

ファイル

pkg(5) イメージはより大きなファイルシステム内に任意に配置できるため、トークン $IMAGE_ROOT を使用して相対パスが区別されます。標準的なシステムインストールでは、$IMAGE_ROOT は / と同等です。

$IMAGE_ROOT/var/pkg

完全または部分的なイメージのメタデータディレクトリ。

$IMAGE_ROOT/.org.opensolaris,pkg

ユーザーイメージのメタデータディレクトリ。

特定のイメージのメタデータ内の特定のファイルおよびディレクトリに、修復や復旧中に役立つ情報を含めることができます。トークン $IMAGE_META は、メタデータが含まれる最上位ディレクトリを参照するために使用されます。通常、 $IMAGE_META は前述の 2 つのパスのいずれかです。

$IMAGE_META/lost+found

パッケージ操作中に移動された、競合するディレクトリおよびファイルの場所。

$IMAGE_META/publisher

パブリッシャーごとに 1 つのディレクトリが含まれます。各ディレクトリにはパブリッシャー固有のメタデータが格納されます。

$IMAGE_META ディレクトリ階層内のその他のパスは非公開であり、変更される可能性があります。

属性

次の属性については、attributes(5) を参照してください。

属性タイプ
属性値
使用条件
package/pkg
インタフェースの安定性
不確実

関連項目

pkg(1), pkgsend(1), pkg.depotd(1M), pkg.sysrepo(1M), svcs(1), svcadm(1M)

Adding and Updating Software in Oracle Solaris 11.2

Copying and Creating Package Repositories in Oracle Solaris 11.2

Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.2

https://java.net/projects/ips/pages/Home