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

印刷ビューの終了

更新: 2016 年 11 月
 
 

IPS 用語およびコンポーネント

このセクションでは、IPS 用語を定義し、IPS コンポーネントについて説明します。

インストール可能なイメージ

IPS はパッケージをイメージにインストールするように設計されています。イメージとはディレクトリツリーであり、必要に応じてさまざまな場所にマウントできます。イメージは、次の 3 つのタイプのいずれかです。

フル

フルイメージでは、イメージ自体の中ですべての依存関係が解決され、IPS が一貫した方法で依存関係を維持します。

ゾーン

非大域ゾーンイメージは、フルイメージ (親の大域ゾーンイメージ) にリンクされていますが、それらだけでは完全なシステムを提供しません。ゾーンイメージでは、IPS は、パッケージ内の依存関係によって定義されているとおりに、非大域ゾーンと大域ゾーンの一貫性を維持します。

ユーザー

ユーザーイメージは、再配置可能なパッケージのみを含みます。

イメージは、インストーラ、beadm および zonecfg コマンド、および pkg コマンドに --be-name などのオプションを指定することによって作成またはクローンされます。

パッケージ識別子: FMRI

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

scheme://publisher/name@version

すべての IPS パッケージ FMRI のスキームは pkg です。suri ストレージライブラリの次のサンプルパッケージ FMRI では、solaris がパブリッシャー、system/library/storage/suri がパッケージ名、0.5.11,5.11-0.175.3.0.0.19.0:20150329T164922Z がバージョンです。

pkg://solaris/system/library/storage/suri@0.5.11,5.11-0.175.3.0.0.19.0:20150329T164922Z

FMRI は、結果となる FMRI が引き続き一意である場合は、省略形で指定することができます。スキーム、パブリッシャー、およびバージョンは省略できます。パッケージ名の先頭のコンポーネントは省略できます。

  • FMRI が pkg:// または // で始まる場合、// のあとの最初の語はパブリッシャー名である必要があり、パッケージ名からコンポーネントを省略することはできません。パッケージ名からコンポーネントを省略しない場合、そのパッケージ名は完全、またはルート指定とみなされます。

  • FMRI が pkg:/ または / で始まる場合、そのスラッシュのあとの最初の語はパッケージ名であり、パッケージ名からコンポーネントを省略することはできません。パブリッシャー名はなくても構いません。

  • バージョンが省略されている場合、パッケージは通常、インストール可能な最新バージョンのパッケージに解決されます。

パッケージパブリッシャー

パブリッシャーとは、パッケージを開発および構築するエンティティーの 1 つです。パブリッシャー名 (接頭辞) は、独自の方法でこのソースを識別します。パブリッシャー名には、大文字、小文字、数字、ハイフン、およびピリオド、つまり有効なホスト名と同じ文字を含めることができます。インターネットのドメイン名または登録商標は、自然の名前空間のパーティション分割を提供するので、パブリッシャー名に適しています。

pkg クライアントは、パッケージングソリューションの算出時に指定のパブリッシャーの指定されたすべてのパッケージソースを結合します。

パッケージ名

パッケージ名は階層構造になっていて、任意の数のコンポーネントがスラッシュ (/) 文字で区切られています。パッケージ名のコンポーネントは、文字または数字で始める必要があり、アンダースコア (_)、ハイフン (-)、ピリオド (.)、およびプラス記号 (+) を含めることができます。パッケージ名のコンポーネントは大文字と小文字が区別されます。

パッケージ名の先頭のコンポーネントは、使用するパッケージ名が一意であれば、省略できます。たとえば、/driver/network/ethernet/e1000gnetwork/ethernet/e1000gethernet/e1000g 、または単なる e1000g に縮小できます。FMRI は、アスタリスク (*) を使ってパッケージ名の一部を一致させることで指定することもできます。したがって、/driver/*/e1000g および /dri*00g はどちらも /driver/network/ethernet/e1000g に展開されます。

パッケージ名を選択するときは、できるだけあいまいさを減らしてください。パッケージ名は、パブリッシャーの間で単一の名前空間を形成します。名前とバージョンが同じでパブリッシャーが異なるパッケージは、外部依存関係や外部インタフェースの観点から取り替え可能とみなされます。パッケージ名と依存関係については、パッケージ内容の競合の回避を参照してください。

パッケージ名が pkg://pkg://publisher/、または //publisher/ で始まる場合、パッケージ名は完全とみなされるか、またはルート指定とみなされます。pkg クライアントがあいまいなパッケージ名に関してエラーを出す場合は、指定するパッケージ名のコンポーネントを増やすか、完全なルート指定の名前を指定します。

FMRI にパブリッシャー名が含まれている場合は、完全なルート指定のパッケージ名を指定する必要があります。

スクリプトでは、パッケージを参照するときにパブリッシャーを省略できますが、その完全なルート指定の名前を参照するべきです。

パッケージバージョン

パッケージバージョンには、次の 4 つの部分があります。

component_version,release-branch_version:time_stamp

コンポーネントバージョン、リリース、およびブランチバージョンは任意の長さにできますが、整数とピリオド文字 (.) だけで構成されている必要があります。複数の整数の並びを 0 で始めることはできません。製品バージョンを IPS パッケージバージョンに変換するためのヘルプについては、適切なパッケージバージョン文字列の作成を参照してください。

タイムスタンプには次の部分があります。日付と時間は、整数だけで構成されている必要があります。

dateTtimeZ

コンポーネントバージョンとリリースは、コンマ (,) で区切ります。リリースとブランチバージョンは、ハイフン (-) で区切ります。ブランチバージョンとタイムスタンプは、コロン (:) で区切ります。

次のサンプルパッケージバージョンについて次に説明します。

0.5.11,5.11-0.175.3.0.0.19.0:20150329T164922Z
コンポーネントバージョン: 0.5.11

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

リリース: 5.11

リリース (存在する場合) は、コンマ (,) のあとに続ける必要があります。Oracle Solaris では、この並びを使用して、そのパッケージがコンパイルされた OS のリリースを指定します。

ブランチバージョン: 0.175.3.0.0.19.0

ブランチバージョン (存在する場合) は、ハイフン (-) のあとに続ける必要があります。ブランチバージョンはベンダー固有の情報を提供します。この並びにはビルド番号を含めることも、他のなんらかの情報を指定することもできます。この値は、コンポーネントとは無関係に、パッケージメタデータが変更されたときに増分できます。Oracle Solaris でのブランチバージョンフィールドの使用方法については、Oracle Solaris パッケージのバージョン管理を参照してください。

タイムスタンプ: 20150329T164922Z

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

パッケージバージョンは、左から右の順で並べられます: @ の直後の数字がバージョン領域で最上位の部分です。タイムスタンプは、バージョン領域で最下位の部分です。

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

任意の長さのバージョンを許可することで、IPS はソフトウェアをサポートするためのさまざまなモデルに対応できます。たとえば、パッケージの作成者はビルドまたはブランチバージョンを使用して、バージョン管理スキームの一部分をセキュリティー更新に割り当て、別の部分を有償または無償のサポート更新に割り当て、さらに別の部分をマイナーバグ修正に割り当てるなど、必要な情報をすべて割り当てることができます。

バージョンをトークン latest にして、既知の最新バージョンを指定することもできます。

Oracle Solaris によるバージョン管理の実装方法については、IPS を使用して Oracle Solaris OS をパッケージ化する方法で説明しています。

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

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

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

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

action_name attribute1=value1 attribute2=value2 ...

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

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

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

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

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

一部の属性によって、パッケージングコンテキストの外部で追加の操作が実行されます。詳細は、パッケージインストールの一環としてのシステム変更の自動化を参照してください。

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

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

  • /system/volatile

  • /tmp

  • /var/pkg

  • /var/share

  • /var/tmp

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

ファイルアクション

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

path

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

mode

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

owner

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

group

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

ペイロード属性は位置属性です。ペイロード属性はアクション名のあとの最初の語で、通常は属性名はありません。まだ公開されていないマニフェスト内で、ペイロード属性の値はペイロードファイルへのフルパスから先頭のスラッシュ文字 (/) を除いたものです。ペイロード値に等号 (=) が含まれている場合、ペイロード属性値の前に hash= を使用します。位置属性および hash ペイロード属性の両方が同じアクションで使用される場合、値は同一である必要があります。

次の例は、パッケージマニフェストを生成するで示すように pkgsend generate コマンドによって出力が表示されることがある file アクションです。

file opt/mysoftware path=opt/mysoftware group=bin mode=0644 owner=root

次の例は等号を含むパスを指定する方法を示しています。

file hash=opt/my=software path=opt/my=software group=root mode=0644 owner=root

公開されたマニフェストでは、ペイロード属性の値はファイルの内容のハッシュで、これはパッケージシステムによって使用されます。詳細は、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 の場合、新しいファイルはインストールされず、既存のファイルは変更されません。

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

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

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

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

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

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

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

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

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

パッケージがアンインストールされるとき、現在インストール済みのバージョンのパッケージによって提供される file アクションの持つ preserve 値が abandon または install-only で、ファイルがイメージ内に存在する場合、ファイルは削除されません。

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.3 ソフトウェアの追加と更新 の タグ付けされたファイルおよびディレクトリを元に戻すおよび 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=20150331T111615Z ...

file アクションについての次の属性はシステムで自動的に生成されるため、パッケージ開発者によって指定しないでください。hashchashpkg.sizepkg.csize、および pkg.content-hash

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.3 ソフトウェアの追加と更新 の タグ付けされたファイルおよびディレクトリを元に戻すおよび pkg(1) のマニュアルページを参照してください。

salvage-from

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

インストール中に、pkg は、システム上の指定されたディレクトリアクションのすべてのインスタンスに同じ 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.3 ソフトウェアの追加と更新 の デフォルトのアプリケーション実装の指定でも説明しています。

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

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 によって使用される属性については、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 番目のパッケージの機能が必要であるためです。依存関係はオプションです。インストール時に依存関係が満たされない場合、パッケージシステムはほかの制約に応じて、依存パッケージをインストールするか、または十分に新しいバージョンに更新しようとします。依存関係については、パッケージ依存関係の指定で詳しく説明されています。

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

fmri

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

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

type

依存関係のタイプ。

require

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

optional

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

exclude

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

incorporate

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

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 サブコマンドを参照してください。

group-any

複数の fmri 属性によって指定される複数のターゲットパッケージは依存関係を満たすことができます。廃止されていないパッケージシステムが廃止されたパッケージシステムよりも優先されるという点を除き、group 依存関係に適用されるものと同じ規則が group-any 依存関係に対して適用されます。

parent

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

predicate

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

root-image

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

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

depend fmri=crypto/ca-certificates type=require

ライセンスアクション

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

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

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

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 と同等になります。同意の方法 (たとえば、対話型または構成ベース) は、pkg クライアントに任されています。パッケージの更新については、ライセンスアクションまたはペイロードが変更されていない場合、この属性は無視されます。

must-display

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

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 でのパッケージ署名のサポートの一部として使用されます。署名アクションについては、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 ftpuser=false gcos-field="AI User" group=aiuser uid=61 username=aiuser

グループアクション

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

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

groupname

グループの名前の値。

gid

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

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

group gid=61 groupname=aiuser

パッケージリポジトリ

ソフトウェアリポジトリには、1 つ以上のパブリッシャーのパッケージが含まれています。リポジトリをさまざまな方法でアクセスできるように構成できます: HTTP、HTTPS、ファイル (ローカルストレージ上、あるいは NFS または SMB 経由)、および自己完結型パッケージアーカイブファイル (通常は .p5p 拡張子を持つ) として。

パッケージアーカイブにより、IPS パッケージを容易に配布できるようになります。詳細は、パッケージアーカイブファイルとしての配布を参照してください。

HTTP または HTTPS 経由でアクセスされるリポジトリは、pkg/server SMF サービスと pkg.depotd プロセスにより管理され、場合によっては pkg/depot SMF サービスによっても管理されます。pkg/depot サービスは、package/pkg/depot パッケージによって提供されます。ファイルリポジトリの場合、リポジトリソフトウェアはアクセスする pkg クライアントの一部として実行されます。

例については、パッケージを発行するおよび パッケージを配布するを参照してください。IPS パッケージリポジトリの作成、アクセス、更新、および構成については、Oracle Solaris 11.3 パッケージリポジトリのコピーと作成を参照してください。