JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Image Packaging System のマニュアルページ     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

ユーザーコマンド

システム管理コマンド

標準、環境、マクロ

pkg(5)

pkg

- Image Packaging System

機能説明

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

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

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

pkg://solaris/system/library/c++-runtime@0.5.11,5.11-0.174.0.0.0.0.0:20110921T190358Z

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.3」が「4.2」より大きいため「4.3-1」は「4.2-7」より大きく、「3」が「1」より大きいため「4.3-3」は「4.3-1」より大きくなります。

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

アクション

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

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

action_name attribute1=value1 attribute2=value2 ...

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

複数の値を使用して、属性に複数回名前を付けることができます。これらは、順序なしリストとして扱われます。

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

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

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

ファイルアクション

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

path

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

mode

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

owner

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

group

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

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

その他の属性には次のものがあります。

preserve

これは、ファイルの内容がそのファイルのインストールまたは最後のアップグレード以降に変更されたと判定された場合、アップグレード時にその内容を上書きすべきではないことを指定します。初期インストール時に既存のファイルが見つかった場合、そのファイルは回収されます (/var/pkg/lost+found 内に格納されます)。

preserve の値が renameold である場合は、既存のファイルの名前が拡張子 .old を使用して変更され、新しいファイルがその場所に置かれます。

preserve の値が renamenew である場合は、既存のファイルがそのままになり、新しいファイルが拡張子 .new を使用してインストールされます。

preserve の値が legacy である場合は、初期のパッケージインストールでこのファイルはインストールされません。アップグレード時、既存のファイルはすべて拡張子 .legacy を使用して名前が変更され、新しいファイルがその場所に置かれます。

preserve の値が true (または、strawberry などの上に示されていない値) である場合は、既存のファイルがそのままになり、新しいファイルはインストールされません。

overlay

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

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

overlay の値が allow である場合は、ほかの 1 つパッケージが同じ場所にファイルを提供することを許可されます。preserve 属性も同時に設定されていないかぎり、この値は意味を持ちません。

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

ファイルは「味見」してみることもできます。その「風味」に応じて、追加で属性を付けることができます。ELF ファイルの場合は、次の属性が認識されます。

elfarch

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

elfbits

これは 32 または 64 です。

elfhash

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

original_name

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

revert-tag

この属性は、セットとして元に戻すべき編集可能なファイルをタグ付けするために使用されます。複数の revert-tag 値を指定できます。これらのいずれかのタグを指定して pkg revert が呼び出されると、ファイルはマニフェストで定義された状態に戻ります。pkg(1) を参照してください。

ディレクトリアクション

dir アクションは、ファイルシステムオブジェクトを表すという点で file アクションに似ています。dir アクションは、通常ファイルの代わりにディレクトリを表します。dir アクションには、file アクションと同じ 4 つの標準属性があり、path がキー属性です。

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

パッケージ解除された内容を新しいディレクトリに移動するために、次の属性が役立つことがあります。

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 である場合、このパッケージをインストールするには、/ をルートとするイメージ上に依存関係が存在する必要があります。

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

pkg.fmri

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

info.classification

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

pkg.description

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

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 ユーザーを定義します。このアクションでユーザーを定義すると、しかるべきファイルにエントリが追加されます。

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

username

ユーザーの一意の名前。

password

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

uid

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

group

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

gcos-field

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

home-dir

ユーザーのホームディレクトリ。デフォルト値は / です。

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 に設定できます。パッケージのインストール中に、このアクチュエータが true に設定されたアクションがインストールまたは更新された場合は、パッケージ化のトランザクションをリブートが必要であるとして通知できます。特定のクライアント実装では、イメージがライブシステムイメージである場合、イメージの複製を使用してパッケージ操作全体を実行するなどの、追加の手順が実行される可能性があります。

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 を使用して明示的に行う必要があります。

制約と凍結

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

制約のもっとも一般的な形式は、上の「依存アクション」で説明したように、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) のミラーモードを使用すると、起点リポジトリもミラーとしてプロビジョニングできます。

ファセットとバリアント

ソフトウェアには、省略可能なコンポーネントや、相互に排他的なコンポーネントが含まれることがあります。省略可能なコンポーネントの例には、ロケールやドキュメントがあります。相互に排他的なコンポーネントの例には、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 に設定されていると見なされます。アクションのファセットタグの値には true のみを指定すべきであり、それ以外の値では動作が不確定になります。イメージに設定されるファセットは、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 です。

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

独自のファセットおよびバリアントタグを作成できます。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)

http://hub.opensolaris.org/bin/view/Project+pkg/