Oracle® Solaris 11.2 での Image Packaging System を使用したソフトウェアのパッケージ化と配布

印刷ビューの終了

更新: 2014 年 7 月
 
 

パッケージの内容: アクション

アクションはパッケージを構成するソフトウェアを定義します。それらはこのソフトウェアコンポーネントの作成に必要なデータを定義します。パッケージの内容は、パッケージマニフェストファイル内に 1 組のアクションとして表されます。

パッケージマニフェストは、大部分がプログラムを使って作成されます。パッケージ開発者は最小限の情報を指定し、Chapter 2, IPS を使用したソフトウェアのパッケージ化に説明されているように、パッケージ開発ツールを使ってマニフェストを完成させます。

アクションは、パッケージマニフェストファイル内に次の形式で表されます。

action_name attribute1=value1 attribute2=value2 ...

次のアクションの例では、dir はこのアクションがディレクトリを指定していることを示しています。name=value という形式の属性は、そのディレクトリのプロパティーを記述しています。

dir path=a/b/c group=sys mode=0755 owner=root

次の例は、データが関連付けられているアクションを示しています。この file アクションでは、name= 接頭辞を持たない 2 番目のフィールドはペイロードと呼ばれます。

file 11dfc625cf4b266aaa9a77a73c23f5525220a0ef path=etc/release owner=root \
    group=sys mode=0444 chash=099953b6a315dc44f33bca742619c636cdac3ed6 \
    pkg.csize=139 pkg.size=189 variant.arch=i386

この例では、ペイロードはファイルの SHA-1 ハッシュです。このペイロードはまた、次の例に示すように、hash という名前の標準属性として示されることもあります。同じアクション内に両方の形式が存在する場合、それらには同じ値を指定する必要があります。

file hash=11dfc625cf4b266aaa9a77a73c23f5525220a0ef path=etc/release owner=root \
    group=sys mode=0444 chash=099953b6a315dc44f33bca742619c636cdac3ed6 \
    pkg.csize=139 pkg.size=189 variant.arch=i386

アクションメタデータは自由に拡張できます。必要に応じて、さらなる属性をアクションに追加できます。属性名には、空白、引用符、または等号 (=) を含めることはできません。属性値にはそれらをすべて指定できますが、空白を含む値は一重または二重引用符で囲む必要があります。二重引用符で囲まれた文字列の内側では一重引用符をエスケープする必要はなく、一重引用符で囲まれた文字列の内側では二重引用符をエスケープする必要はありません。引用符で囲まれた文字列が終わるのを防ぐために、引用符には接頭辞としてバックスラッシュ (\) を付けることができます。バックスラッシュは、バックスラッシュでエスケープできます。カスタムの属性名には、意図しない名前空間のオーバーラップを防ぐために一意の接頭辞を使用するようにしてください。パッケージパブリッシャーのパブリッシャー名の説明を参照してください。

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

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

ほとんどのアクションにはキー属性があります。キー属性とは、このアクションをイメージ内のほかのすべてアクションとは異なる一意のものにする属性です。ファイルシステムオブジェクトの場合、キー属性はそのオブジェクトのパスになります。

以降のセクションでは、各 IPS アクションタイプと、それらのアクションを定義する属性について説明します。アクションタイプについては、pkg(5) のマニュアルページに詳しく説明されていますが、参考のためにここで繰り返し説明します。各セクションには、パッケージの作成中にパッケージマニフェスト内に見られるようなアクション例が含まれています。ほかの属性は、発行中に自動的にアクションに追加される可能性があります。

ファイルアクション

file アクションは間違いなくもっとも一般的なアクションです。file アクションは通常のファイルを表します。file アクションはペイロードを参照し、次の 4 つの標準属性があります。

path

ファイルがインストールされているファイルシステムのパス。これは file アクションのキー属性です。path 属性の値は、イメージのルートを基準としています。先頭に / を含めないでください。

mode

ファイルのアクセス権。mode 属性の値は、ACL ではなく、数値形式による単純なアクセス権です。

owner

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

group

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

ペイロードは通常、位置属性として指定されます: ペイロードは、アクション名のあとの最初の語であり、属性名はありません。公開されたマニフェストでは、ペイロード値はファイルの内容の SHA-1 ハッシュです。まだ発行されていないマニフェスト内にペイロードがある場合、pkgsend(1) のマニュアルページに説明されているように、それはペイロードがあるパスを表しています。ペイロード値に等号 (=)、二重引用符 (")、または空白文字が含まれている場合は、位置属性ではなく hash という属性を使用する必要があります。位置属性と hash 属性の両方を同じアクションで使用できますが、ハッシュが同一である必要があります。

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

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

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 コマンドについては、Oracle Solaris 11.2 ソフトウェアの追加と更新 のタグ付けされたファイルおよびディレクトリを元に戻すおよび 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

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

file アクションの例は次のとおりです。

file path=usr/bin/pkg owner=root group=bin mode=0755

ディレクトリアクション

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

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

revert-tag

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

salvage-from

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

インストール中に、pkg(1) は、システム上の指定されたディレクトリアクションのすべてのインスタンスに同じ ownergroup、および mode 属性値が含まれていることを確認します。競合する値がシステム上に、または同じ操作でインストールされるほかのパッケージ内に見つかった場合、dir アクションはインストールされません。

dir アクションの例は次のとおりです。

dir path=usr/share/lib owner=root group=sys mode=0755

リンクアクション

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

path

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

target

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

link アクションは、特定のソフトウェアの複数のバージョンまたは実装をシステムに同時にインストールできるようにする属性 mediatormediator-versionmediator-implementation、および mediator-priority も取ります。そのようなリンクは仲介リンクであるため、管理者はどのリンクがどのバージョンまたは実装を指すかを必要に応じて簡単に切り替えられます。これらの調停されたリンクの属性については、複数のアプリケーション実装の配布に詳しく説明されています。調停については、Oracle Solaris 11.2 ソフトウェアの追加と更新 のデフォルトのアプリケーション実装の指定でも説明します。

link アクションの例は次のとおりです。

link path=usr/lib/libpython2.6.so target=libpython2.6.so.1.0

ハードリンクアクション

hardlink アクションは、ハードリンクを表します。link アクションと同じ path および target 属性を持ち、path がキー属性です。

hardlink アクションの例は次のとおりです。

hardlink path=opt/myapplication/hardlink target=foo

設定アクション

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

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

name

属性の名前。

value

属性に与えられた値。

set アクションは、パッケージ作成者が選択した任意のメタデータを提供できます。次の属性名はパッケージシステムにとって特別な意味を持ちます。

info.classification

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

pkg.description

パッケージの内容と機能の詳細な説明。通常は、1 つの段落程度の長さです。この値は、このパッケージをインストールするとよい理由を説明します。

pkg.fmri

含まれるパッケージの名前とバージョン。パッケージバージョンを参照してください。

pkg.human-version

IPS により使用されるバージョンスキームは厳密です。パッケージバージョンを参照してください。pkg.human-version 属性の値として、より柔軟なバージョンを指定できます。pkg infopkg contents、および pkg search などの IPS ツールにより値が表示されます。pkg.human-version 値はバージョン比較のベースとして使用されず、pkg.fmri バージョンの代わりに使用することはできません。

pkg.obsolete

true の場合、パッケージは廃止としてマークされています。廃止されたパッケージには、set アクション以外のアクションは存在せず、また名前変更としてマークしてはいけません。パッケージの廃止については、パッケージの廃止に説明されています。

pkg.renamed

true の場合は、パッケージの名前が変更されました。このパッケージには、このパッケージの名前が変更されたあとのパッケージバージョンを指す 1 つ以上の depend アクションも含まれている必要があります。パッケージを名前変更と廃止の両方としてマークすることはできませんが、それ以外は任意の数の set アクションを含めることができます。パッケージの名前変更については、パッケージの名前変更、マージ、および分割に説明されています。

pkg.summary

この説明の簡単な概要。この値は、pkg list -s の出力の各行の終わりと pkg info の出力の 1 つの行に表示されます。この値は 60 文字以内にします。この値はパッケージとは何かについて説明し、パッケージの名前またはバージョンを繰り返すことはしません。

その他の情報属性と Oracle Solaris によって使用される属性については、Appendix B, IPS を使用して Oracle Solaris OS をパッケージ化する方法で説明しています。

set アクションの例は次のとおりです。

set name=pkg.summary value="Image Packaging System"

ドライバアクション

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 属性を持つことができます。

driver アクションの例は次のとおりです。

driver name=vgatext \
    alias=pciclass,000100 \
    alias=pciclass,030000 \
    alias=pciclass,030001 \
    alias=pnpPNP,900 variant.arch=i386 variant.opensolaris.zone=global

依存アクション

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

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

fmri

依存関係のターゲットを表す FMRI。これは depend アクションのキー属性です。FMRI 値にパブリッシャーを含めてはいけません。パッケージ名は、スラッシュ (/) で始まっていない場合でも、ルート指定とみなされます。タイプ require-any の依存関係は、複数の fmri 属性を持つことができます。fmri 値ではバージョンはオプションですが、依存関係のタイプによっては、バージョンのない FMRI は意味を持ちません。

FMRI 値にはアスタリスク (*) を使用できず、バージョンに対して latest トークンを使用することもできません。

type

依存関係のタイプ。

require

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

optional

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

exclude

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

incorporate

依存関係はオプションですが、ターゲットパッケージのバージョンは制約されます。制約と凍結については、Chapter 4, パッケージ依存関係の指定を参照してください。

require-any

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

conditional

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

origin

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

group

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

parent

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

predicate

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

root-image

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

depend アクションの例は次のとおりです。

depend fmri=crypto/ca-certificates type=require

ライセンスアクション

license アクションは、パッケージの内容に関連したライセンスやその他の情報ファイルを表します。パッケージは 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 値は、パッケージ内で一意である必要があります。

must-accept

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

must-display

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

license アクションの例は次のとおりです。

license license="Apache v2.0"

レガシーアクション

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

次の属性が認識されています。関連するパラメータについては、pkginfo(4) のマニュアルページを参照してください。

category

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

desc

DESC パラメータの値。

hotline

HOTLINE パラメータの値。

name

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

pkg

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

vendor

VENDOR パラメータの値。

version

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

legacy アクションの例は次のとおりです。

legacy pkg=SUNWcsu arch=i386 category=system \
    desc="core software for a specific instruction-set architecture" \
    hotline="Please contact your local service provider" \
    name="Core Solaris, (Usr)" vendor="Oracle Corporation" \
    version=11.11,REV=2009.11.11 variant.arch=i386

署名アクション

署名アクションは、IPS でのパッケージ署名のサポートの一部として使用されます。署名アクションについては、Chapter 9, IPS パッケージの署名に詳しく説明されています。

ユーザーアクション

user アクションは、/etc/passwd/etc/shadow/etc/group、および /etc/ftpd/ftpusers ファイルで指定されているように UNIX ユーザーを定義します。user アクションからの情報は適切なファイルに追加されます。

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

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

username

ユーザーの一意の名前。

password

ユーザーの暗号化パスワード。デフォルト値は *LK* です。

uid

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

group

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

gcos-field

/etc/passwd 内の GECOS フィールドに表される、ユーザーの実名。デフォルト値は username 属性の値です。

home-dir

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

login-shell

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

group-list

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

ftpuser

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

lastchg

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

min

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

max

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

warn

password の期限が切れる前にユーザーに警告が表示される日数。

inactive

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

expire

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

flag

空に設定されています。

user アクションの例は次のとおりです。

user gcos-field="pkg(5) server UID" group=pkg5srv uid=97 username=pkg5srv

グループアクション

group アクションは、group(4) ファイルで指定されているように UNIX グループを定義します。グループパスワードのサポートは提供されません。group アクションで定義されたグループには最初、ユーザーリストがありません。ユーザーは、user アクションを使用して追加できます。

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

groupname

グループの名前の値。

gid

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

group アクションの例は次のとおりです。

group groupname=pkg5srv gid=97