Go to main content

マニュアルページ セクション 7: 標準、環境、マクロ、文字セット、その他

印刷ビューの終了

更新: 2022年7月27日
 
 

pkg(7)

名前

pkg - Image Packaging System

説明

The Image Packaging System, pkg(7), is a framework that provides for software lifecycle management (installation, upgrade, and removal).Image Packaging System は、一連のキーと値のペアおよび (場合によっては) データペイロードで定義されたアクションのコレクションである、パッケージの単位でソフトウェアを管理します。多くの場合、アクションはファイルシステム内に存在するファイルですが、ドライバ、サービス、ユーザーなどのその他のインストール可能オブジェクトも表します。

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

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

pkg://solaris/system/library/c++-runtime@11.4-11.4.0.0.1.1.2:20170919T184404Z

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 つ以上のパッケージのソースとして識別されます。パブリッシャーの名前の競合を避け、パブリッシャーを識別しやすくするために、パッケージを公開するエンティティーを表すドメイン名をパブリッシャーの名前として使用することがベストプラクティスです。

パッケージ名のあとに、アットマーク (@) 記号で区切られたバージョンが続きます。バージョンは、コンポーネントバージョン、ブランチバージョン、およびタイムスタンプで構成されます。コンポーネントバージョンとブランチバージョンは、ハイフン (-) で区切ります。ブランチバージョンとタイムスタンプは、コロン (:) で区切ります。コンポーネントバージョンまたはブランチバージョンの要素には、先頭のゼロ (たとえば、01.1 または 1.01) は許可されません。末尾のゼロ (たとえば、1.10) は許可されます。

コンポーネントバージョン: 11.4オペレーティングシステムに緊密に結合されたコンポーネントの場合、コンポーネントバージョン番号は minor.update です。独自の開発ライフサイクルを持つコンポーネント (FOSS コンポーネントなど) には、独自のバージョン番号 (2.4.10 など) があります。コンポーネントバージョンの長さは任意です。

ブランチバージョン: 11.4.0.0.1.1.2ブランチバージョン (存在する場合) は、ハイフン (-) のあとに続ける必要があります。ブランチバージョン文字列は、pkg info の出力の「Branch」と同じです。

Oracle Solaris パッケージでは、パッケージ FMRI のバージョン文字列のブランチバージョン部分に次の情報が示されます。

minor.update.sru.order.platform.build.rev
マイナーリリース番号: 11

uname -r で出力される major.minorminor 部分。

更新リリース番号: 4

この Oracle Solaris リリースの更新リリース番号。

SRU 番号: 0

この更新リリースのサポート・リポジトリの更新 (SRU) 番号。SRU はほぼ 1 か月に 1 回、更新され、バグを修正したり、セキュリティーの問題を修正したり、新しいハードウェアに対するサポートを提供します。Oracle サポート・リポジトリはサポート契約下のシステムでのみ使用できます。

Order: 0

この値は内部で使用されます。

プラットフォーム: 1

この値は内部で使用されます。

リリースまたは SRU ビルド番号: 1

SRU のビルド番号、またはリリースの更新番号。

リビジョンまたはナイトリービルド番号: 2

個々のナイトリービルドのビルド番号。

パッケージが IDR (Interim Diagnostic or Relief) 更新である場合、パッケージ FMRI のブランチバージョンには次の 2 つの追加フィールドが含まれます。IDR は、正式なパッケージ更新が発行されるまで、顧客の問題の診断を支援したり、問題の一時的な解決策を提供したりするためのパッケージ更新です。次の例は idr824 (FMRI pkg://solaris/idr824@4,5.11:20131114T034951Z を含む) についてのもので、pkg://solaris/system/library@11.4-11.4.0.0.1.1.2.824.4 などのパッケージを含んでいます。

IDR: 824

IDR の名前。

IDR ID: 4

IDR のバージョン。

タイムスタンプ: 20170919T184404Zタイムスタンプはコロン (:) のあとに続ける必要があります。タイムスタンプは、ISO-8601 基本形式 (YYYYMMDDTHHMMSSZ) のパッケージが発行された日時です。

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

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

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

アクション

アクションはシステム上のインストール可能オブジェクトを表します。アクションはパッケージのマニフェストに記述されます。

ファイルまたはその他のインストール可能オブジェクトをイメージから削除するには、関連するアクションをパッケージマニフェストから削除します。そのオブジェクトは、pkg update コマンドを使用してパッケージが更新されたときにイメージから削除されます。詳細は、Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.4を参照してください。

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

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

action_name attribute1=value1 attribute2=value2 ...

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

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

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

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

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

パスにインストールされるアクションは、次のすべてのパスに内容を提供しないでください。

/system/volatile
/tmp
/var/share
/var/tmp

また、次のディレクトリはシステム用に予約されており、これらもアクションで使用するべきではありません。

/var/pkg

ファイルアクション

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

path

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

mode

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

owner

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

group

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

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

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

preserve

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

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

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

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

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

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

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

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

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

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

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

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

  • アップグレードされるバージョンのパッケージによって提供されるファイルの preserve 値が、アップグレードされるパッケージ内で abandon または install-only の場合、新しいファイルはインストールされず、既存のファイルは変更されません。

  • If the file delivered by the package has a preserve value of abandon then any attempt to revert the file will not restore the file.Any revert-tag associated with the file will be ignored.

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

  • アップグレードされるバージョンのパッケージによって提供されるファイルがイメージ内に存在し、現在インストール済みのバージョンのパッケージ内に存在せず、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 の場合、既存のファイルのアクセス権およびタイムスタンプ (存在する場合) がリセットされます。

上記で特に指定されていないかぎり、パッケージによって以前提供されていた file アクションは、新しいパッケージバージョンのリストに示されていない場合システムから削除されます。また、パッケージがアンインストールされるとき、パッケージによって提供される file アクションは削除されます。

パッケージがアンインストールされるとき、現在インストール済みのバージョンのパッケージによって提供される file アクションの持つ preserve 値が abandon で、ファイルがイメージ内に存在する場合、ファイルは削除されません。ただし、削除されるそのパッケージによって提供されているその他の file アクションのうち、preserve 属性が指定されていて、最初のインストール以降に変更されているものは、/var/pkg/lost+found に移動されます。

overlay

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

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

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

allow

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

true

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

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

overlay-attributes

インストールや更新などのイメージ変更操作で、オーバーレイするアクションとオーバーレイされるアクションとで ownergroupmode、または sysattr が異なっている場合に、エラーを報告するべきかどうかを指定します。overlay-attributes は通常、overlayallow または deny に等しいアクションで使用されます。オーバーレイするアクションとオーバーレイされるアクションのどちらかで overlay-attributes の値が deny である場合は、イメージ変更操作時にエラーが生成されます。また、オーバーレイするアクションとオーバーレイされるアクションのペアの overlaydeny に等しい場合は、検証操作でも ownergroup、および mode 属性の不一致でエラーが生成されます。それ以外の場合は、ペアで上記の属性が一致していないと情報メッセージが生成されます。overlay-attributes の値に関係なく、ファイルの属性をディスク上とパッケージ内とで比較したときに、一致していない属性は常にエラーとして報告されます。

dehydrate

パッケージパブリッシャーのパッケージがデハイドレートされるとき、またはデハイドレートされたパブリッシャーのパッケージが変更されるときに、このアクションを削除するかどうかを指定します。dehydrate 属性の値は true または false です。dehydrate 属性の値が false の場合、デハイドレート操作中にアクションは削除されません。それ以外の場合、アクションは削除されます。preserve または overlay 属性がタグ付けされているファイルアクションは、デハイドレート操作から暗黙的に除外されるため、この属性を必要としません。

file path=etc/zones/SYSdefault.xml dehydrate=false ...

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 が呼び出されると、ファイルはマニフェストで定義された状態に戻ります。See the pkg(1) man page for information about the pkg revert command.

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

sysattr

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

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.7/vendor-packages/pkg/__init__.pyc ...
file path=usr/lib/python2.7/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 ディレクトリの下にあるパッケージ解除されたファイルまたはディレクトリが削除されます。See the pkg(1) man page for information about the pkg revert command.

salvage-from

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

Link Actions

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

path

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

target

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

mediator

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

mediator-version

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

mediator-implementation

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

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

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

mediator-priority

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

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

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

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

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

Hardlink Actions

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

Driver Actions

driver アクションはデバイスドライバを表します。driver アクションはペイロードを参照しません。ドライバファイル自体を file アクションとしてインストールする必要があります。The following attributes are recognized (see add_drv(8) for more information):

name

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

alias

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

class

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

perms

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

clone_perms

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

policy

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

privs

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

devlink

これは /etc/devlink.tab 内のエントリを指定します。この値はファイルに書き込まれる行そのものであり、タブは \t で示されます。See devlinks(8) for more information.特定のドライバが複数の devlink 属性を持つことができます。

Depend Actions

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

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

fmri

依存パッケージを表す FMRI。これは dependency アクションのキー属性です。fmri 値にパブリッシャーを含めることはできません。パッケージ名は完全であると見なされます。タイプ group-any および 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.4を参照してください。

group

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

group-any

廃止されていないパッケージの語幹が廃止されたパッケージの語幹よりも優先されるという点を除き、依存関係のタイプ group と同じ規則に従って、複数の fmri 属性で指定された複数の依存パッケージのうちのいずれか 1 つが、依存関係を満たすことができます。

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 Actions

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

The following attributes, named in accordance with the parameters on pkginfo(5), are recognized:

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(7) クライアントがパッケージを分類するために使用できる 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.legacy

When true, the package is marked legacy, meaning that it will be removed in the future.

pkg.summary

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

Group Actions

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

groupname

グループの名前の値。

gid

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

User Actions

The user action defines a local account as defined in /etc/passwd, /etc/shadow, /etc/group, and /etc/ftpd/ftpusers files.この user アクションで定義されたユーザーについて、エントリが適切なファイルに追加されます。

The user action is intended to define a user or role account for use by a system commonent or application.The user action should not be used for end user or administrator accounts.

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

username

ユーザーの一意の名前。

password

ユーザーの暗号化パスワード。デフォルト値は *LK* です。See shadow(5).

The special value "UP" can be used to indicate that the passwd(1) command may be used to set a login password for the user/role account.When the value of "UP" is listed in the manifest a pkg verify will not report an unexpected change and pkg fix will not change the value back to that of the manifest.

Best practice is to deliver role accounts with password="NP" and deliver a user_attr(5) file that sets roleauth=user.

uid

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

group

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

gcos-field

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

home-dir

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

login-shell

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

group-list

ユーザーが属しているセカンダリグループ。See group(5).

ftpuser

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

lastchg

1970 年 1 月 1 日と、パスワードが最後に変更された日付の間の日数。デフォルト値は空です。See shadow(5).

min

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

max

パスワードが有効な最大日数。デフォルト値は空です。See shadow(5).

warn

パスワードの期限が切れる前にユーザーに警告が表示される日数。See shadow(5).

inactive

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

expire

UNIX エポック (1970 年 1 月 1 日) 以降の日数として表される絶対的な日付。この日数に達すると、ログインを使用できなくなります。For example, an expire value of 17410 specifies a login expiration of September 1, 2017.See shadow(5).

flag

Set to empty.See shadow(5).

Actuators

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

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

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

reboot-needed

true または false に設定できます。このアクチュエータは、パッケージシステムがライブイメージ上で動作している場合、タグ付きアクションの更新または削除を新しいブート環境で実行する必要があることを宣言します。新しいブート環境の作成は、be-policy イメージプロパティーによって制御されます。See the “Image Properties” section in the pkg(1) man page for more information about the be-policy property.

disable_fmrirefresh_fmrirestart_fmrisuspend_fmri

これらの各アクチュエータは、パッケージのインストールまたは削除中に操作するサービスインスタンスの FMRI の値を取ります。あいまいさをなくすために、サービスインスタンスは完全に指定してください。

disable_fmrirefresh_fmri、および restart_fmri の FMRI 値には、複数のサービスインスタンスに一致するパターンを含めることができます。照合するパターンの指定は、インスタンスを示さずに暗黙的に行うのではなく、svcs コマンドで受け入れられる glob を使用して明示的に行う必要があります。

複数のアクション (複数のパッケージに含まれている場合もある) が同じサービス FMRI にタグ付けしている場合、そのアクチュエータによって指定された操作は 1 回だけ実行されます。たとえば、複数の restart_fmri アクチュエータが同じ FMRI を指定している場合、そのサービスはその pkg 操作で 1 回だけ再起動されます。

次の SMF アクチュエータのリストには、指定された各アクチュエータの値である、サービス FMRI への影響が説明されています。これらの説明では、「パッケージのアンインストール」は、サービスを別のパッケージに提供する file アクションの移動も含みます。

disable_fmri

パッケージをアンインストールする前に、指定されたサービスを無効にします (svcadm disable)。

refresh_fmri

パッケージのインストール、更新、またはアンインストール後に、指定されたサービスをリフレッシュします (svcadm refresh)。

restart_fmri

パッケージのインストール、更新、またはアンインストール後に、指定されたサービスを再起動します (svcadm restart)。

suspend_fmri

パッケージを更新する前に指定されたサービスを一時的に無効化し (svcadm disable -t)、パッケージを更新したあとでサービスを有効化します (svcadm enable)。指定するサービスの値は、完全指定のサービスインスタンス FMRI である必要があり (たとえば、svc:/site/mysvc ではなく svc:/site/mysvc:default)、グロブ文字を含むことはできません。suspend_fmri は、有効になっているサービスに対してのみ実行でき、パッケージ更新操作にのみ適用されます。

SMF アクチュエータは次のような場合は実行されません。

  • 代替ルートで実行されているとき (pkg -R /path/to/BE)。

  • 大域ゾーンから再帰呼び出しするとき (pkg subcommand -r)。

Mediations

メディエータは、一連の関連するシンボリックリンクまたはハードリンクを表す名前です。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

See the set-mediator subcommand in the pkg(1) man page for information about how to select the version you want for this link path.バージョンを選択するには、両方のパッケージがインストールされている必要があります。

Constraints and Freezing

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

制約のもっとも一般的な形式は、上の「依存アクション」で説明したように、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 コマンドを使用します。

Publishers and Repositories

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

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

ミラーは、パッケージの内容 (ファイル) のみを含むパッケージリポジトリです。イメージ内の特定のパブリッシャーに対して 1 つ以上のミラーが構成されている場合、クライアント API はパッケージ内容の取得のためのミラーを優先し、パッケージの内容の取得元として最適なミラーを選択しようとします。ミラーが到達不可能か、必要な内容が含まれていないか、またはより低速な場合、クライアント API は、構成されているいずれかの起点リポジトリから内容を取得します。Mirrors are intended for content sharing among a trusted set of clients using the dynamic mirror functionality of pkg.depotd(8).ミラーはまた、パッケージのメタデータへのアクセスを認証するために使用されることも目的にしています。ただし、パッケージの内容は認証なしで配布します。たとえば、あるクライアントが、アクセスするには SSL キーと証明書のペアが必要な https 起点と、パッケージの内容を提供する http ミラーを使用して構成される可能性があります。このようにして、認可クライアントだけがパッケージをインストールまたは更新できるようにしながら、パッケージ内容の取得のための認証のオーバーヘッドが回避されます。ミラーは、file という名前のサブディレクトリとその親を除く、リポジトリのすべてのサブディレクトリを削除することによって作成できます。An origin repository can be also be provisioned as a mirror by using the mirror mode of pkg.depotd(8).

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

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

大域ゾーンが非大域ゾーンに課す制限のため、非大域ゾーンは大域ゾーンのパッケージにアクセスできる必要があり、かつ同様の発行元構成にする必要があります。Both of these objectives are achieved by using a system repository (see the pkg.sysrepo(8) man page).システムリポジトリは、大域ゾーン内で構成された発行元へのアクセスと、これらの発行元が構成されている方法に関する情報を提供します。インストールまたは更新中に非大域ゾーンで別のパッケージが選択されないようにするために、発行元の検索順序で、システム発行元には非大域ゾーン内で構成された発行元より高くランク付けされます。See the pkg set-publisher command in the pkg(1) man page for information about publisher search order.

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

Facets and Variants

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

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

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

ファセットとバリアントはイメージの特殊なプロパティーであり、個々のパッケージには設定できません。To view the current values of the facets and variants set on the image, use the pkg facet and pkg variant commands as shown in the pkg(1) man page.イメージに設定されたファセットおよびバリアントの値を変更するには、pkg change-facet コマンドと pkg change-variant コマンドを使用します。

ファセットは、パッケージクライアントによってブール値として扱われ、ファセットは、イメージ内で true (有効) または false (無効) にのみ設定できます。デフォルトでは、「facet.debug.」または「facet.optional.」で始まるファセットはすべて、イメージ内で 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

バリアント値を指定するパッケージをインストールするために、バリアント値をイメージに設定する必要があります。デフォルトで、指定されていないすべてのバリアントの値は「false」になり、これにより、パッケージがインストール可能になる場合とならない場合があります。arch および zone バリアントは、イメージを作成し、その初期コンテンツをインストールするプログラムによって設定されます。

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

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

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

    • アクションのファセットタグのうち、値 all を持つものはすべて、イメージ内では true です (デフォルトでは、「facet.debug.」または「facet.optional.」で始まるファセットはすべて false、その他はすべて true です)。

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

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

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

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

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

次のリストに、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

Image Policies

イメージポリシーはブール値を持つイメージプロパティーによって定義されます。See “Image Properties” in the pkg(1) man page for descriptions of the flush-content-cache-on-success and send-uuid properties and information about how to view and modify their values.

ファイル

pkg(7) イメージはより大きなファイルシステム内に任意に配置できるため、トークン $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(7) を参照してください。

ATTRIBUTE TYPE
ATTRIBUTE VALUE
使用条件
package/pkg
インタフェースの安定性
不確実

関連項目

pkg(1), pkgdepend(1), pkgdiff(1), pkgfmt(1), pkglint(1), pkgmerge(1), pkgmogrify(1), pkgrecv(1), pkgrepo(1), pkgsend(1), pkgsign(1), pkgsurf(1), pkg.depotd(8), pkg.sysrepo(8), svcs(1), svcadm(8)

Updating Systems and Adding Software in Oracle Solaris 11.4

Creating Package Repositories in Oracle Solaris 11.4

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

https://github.com/oracle/solaris-ips