ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布 Oracle Solaris 11.1 Information Library (日本語) |
このセクションでは、IPS 用語を定義し、IPS コンポーネントについて説明します。
IPS はパッケージをイメージにインストールするように設計されています。イメージとはディレクトリツリーであり、必要に応じてさまざまな場所にマウントできます。イメージは、次の 3 つのタイプのいずれかです。
フルイメージでは、イメージ自体の中ですべての依存関係が解決され、IPS が一貫した方法で依存関係を維持します。
非大域ゾーンイメージは、フルイメージ (親の大域ゾーンイメージ) にリンクされていますが、それらだけでは完全なシステムを提供しません。ゾーンイメージでは、IPS は、パッケージ内の依存関係によって定義されているとおりに、非大域ゾーンと大域ゾーンの一貫性を維持します。
ユーザーイメージは、再配置可能なパッケージのみを含みます。
通常、イメージは pkg image-create によってではなく、インストーラ (beadm(1M) や zonecfg(1M) など) によって作成またはクローンされます。
各 IPS パッケージは、スキーム pkg を使用して、発行元、名前、およびバージョンから成る障害管理リソース識別子 (FMRI) によって表されます。次のパッケージ FMRI の例では、solaris が発行元、system/library がパッケージ名、そして 0.5.11,5.11-0.175.0.0.0.2.1:20111019T082311Z がバージョンです。
pkg://solaris/system/library@0.5.11,5.11-0.175.1.0.0.2.1:20120919T082311Z
FMRI は、結果となる FMRI が引き続き一意である場合は、省略形で指定することができます。スキーム、発行元、およびバージョンは省略できます。パッケージ名の先頭のコンポーネントは省略できます。
FMRI が pkg:// または // で始まる場合、// のあとの最初の語は発行元名である必要があり、パッケージ名からコンポーネントを省略することはできません。パッケージ名からコンポーネントを省略しない場合、そのパッケージ名は完全、またはルート指定とみなされます。
FMRI が pkg:/ または / で始まる場合、そのスラッシュのあとの最初の語はパッケージ名であり、パッケージ名からコンポーネントを省略することはできません。発行元名はなくても構いません。
バージョンが省略されている場合、パッケージは通常、インストール可能な最新バージョンのパッケージに解決されます。
発行元とは、パッケージを開発および構築するエンティティーの 1 つです。発行元名 (接頭辞) は、独自の方法でこのソースを識別します。発行元名には、大文字、小文字、数字、ハイフン、およびピリオド、つまり有効なホスト名と同じ文字を含めることができます。インターネットのドメイン名または登録商標は、自然の名前空間のパーティション分割を提供するので、発行元名に適しています。
パッケージクライアントは、パッケージソリューションの算出時に指定の発行元の指定されたすべてのパッケージソースを結合します。
パッケージ名は階層構造になっていて、任意の数のコンポーネントがスラッシュ (/) 文字で区切られています。パッケージ名のコンポーネントは、文字または数字で始める必要があり、アンダースコア (_)、ハイフン (-)、ピリオド (.)、およびプラス記号 (+) を含めることができます。パッケージ名のコンポーネントは大文字と小文字が区別されます。
パッケージ名は、発行元の間で単一の名前空間を形成します。名前とバージョンが同じで発行元が異なるパッケージは、外部依存関係や外部インタフェースの観点から取り替え可能とみなされます。
パッケージ名の先頭のコンポーネントは、使用するパッケージ名が一意であれば、省略できます。たとえば、/driver/network/ethernet/e1000g は network/ethernet/e1000g、ethernet/e1000g 、または単なる e1000g にも減らすことができます。パッケージ名からコンポーネントを省略しない場合、そのパッケージ名は完全、またはルート指定とみなされます。パッケージクライアントがあいまいなパッケージ名に関してエラーを出す場合は、指定するパッケージ名のコンポーネントを増やすか、完全なルート指定の名前を指定します。パッケージ名を選択するときは、あいまいさの可能性をできるだけ減らしてください。
FMRI に発行元名が含まれている場合は、完全なルート指定のパッケージ名を指定する必要があります。
スクリプトは、パッケージを参照するとき、その完全なルート指定の名前を使用します。
FMRI は、アスタリスク (*) を使ってパッケージ名の一部を一致させることで指定することもできます。したがって、/driver/*/e1000g および /dri*00g はどちらも /driver/network/ethernet/e1000g に展開されます。
パッケージバージョンは、句読点で句切られた 4 つの整数の並びで構成されます。最初の 3 つの並びに含まれる要素はドットで区切られ、これらの並びの長さは任意です。パッケージバージョンによるあいまいなソートを考慮して、バージョン要素の先頭にゼロを指定することは禁じられています。たとえば、01.1 や 1.01 は無効なバージョン要素です。
次のパッケージバージョンの例では、最初の並びは 0.5.11、次の並びは 5.11、3 番目の並びは 0.175.1.0.0.2.1、そして 4 番目の並びは 20120919T082311Z です。
0.5.11,5.11-0.175.1.0.0.2.1:20120919T082311Z
最初の並びはコンポーネントバージョンです。Oracle Solaris の一部として開発されるコンポーネントの場合、この並びはリリースにおけるこのパッケージが最後に変更された時点を表します。独自の開発ライフサイクルを持つコンポーネントの場合、この並びはドット付きのリリース番号 (2.4.10 など) です。
2 番目の並びはビルドバージョンです。この並び (存在する場合) はコンマのあとに続ける必要があります。Oracle Solaris では、この並びを使用して、パッケージがコンパイルされた OS のリリースを示します。
3 番目の並びは、ベンダー固有の情報を提供するブランチバージョンです。この並び (存在する場合) はハイフンのあとに続ける必要があります。この並びにはビルド番号を含めることも、他のなんらかの情報を指定することもできます。この値は、コンポーネントとは無関係に、パッケージメタデータが変更されたときに増分できます。Oracle Solaris でのブランチバージョンフィールドの使用方法については、「Oracle Solaris パッケージのバージョン管理」を参照してください。
4 番目の並びはタイムスタンプです。この並び (存在する場合) はコロンのあとに続ける必要があります。この並びは、パッケージの発行された日付と時間を GMT タイムゾーンで表します。この並びは、パッケージが発行されると自動的に更新されます
パッケージバージョンは、左から右の順で並べられます: @ の直後の数字がバージョン領域で最上位の部分です。タイムスタンプは、バージョン領域で最下位の部分です。
pkg.human-version 属性を使用すると、人間が読める形式の文字列を格納できますが、上記のバージョン管理スキームも必要です。「設定アクション」に記述されているように、人間が読める形式の文字列は表示のためにのみ使用します。
任意の長さのバージョンを許可することで、IPS はソフトウェアをサポートするためのさまざまなモデルに対応できます。たとえば、パッケージの作成者はビルドまたはブランチバージョンを使用して、バージョン管理スキームの一部分をセキュリティー更新に割り当て、別の部分を有償または無償のサポート更新に割り当て、さらに別の部分をマイナーバグ修正に割り当てるなど、必要な情報をすべて割り当てることができます。
バージョンをトークン latest にして、既知の最新バージョンを指定することもできます。
Oracle Solaris によるバージョン管理の実装方法については、付録 B IPS を使用して Oracle Solaris OS をパッケージ化する方法に説明されています。
アクションはパッケージを構成するソフトウェアを定義します。それらはこのソフトウェアコンポーネントの作成に必要なデータを定義します。パッケージの内容は、パッケージマニフェストファイル内に 1 組のアクションとして表されます。
パッケージマニフェストは、大部分がプログラムを使って作成されます。パッケージ開発者は最小限の情報を指定し、第 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 つの標準属性があります。
ファイルがインストールされているファイルシステムのパス。これは file アクションのキー属性です。path 属性の値は、イメージのルートを基準としています。先頭に / を含めないでください。
ファイルのアクセス権。mode 属性の値は、ACL ではなく、数値形式による単純なアクセス権です。
ファイルを所有するユーザーの名前。
ファイルを所有するグループの名前。
ペイロードは通常、位置属性として指定されます: ペイロードは、アクション名のあとの最初の語であり、属性名はありません。公開されたマニフェストでは、ペイロード値はファイルの内容の SHA-1 ハッシュです。まだ公開されていないマニフェスト内にペイロードがある場合、pkgsend(1) のマニュアルページに説明されているように、それはペイロードがあるパスを表しています。ペイロード値に等号 (=)、二重引用符 (")、または空白文字が含まれている場合は、位置属性ではなく hash という属性を使用する必要があります。位置属性と hash 属性の両方を同じアクションで使用できますが、ハッシュが同一である必要があります。
file アクションには、次の属性を含めることもできます。
ファイルの内容がそのファイルのインストールまたは最後のアップグレード以降に変更されたと判定された場合、アップグレード時にその内容を上書きすべきではないことを指定します。初期インストール時に既存のファイルが見つかった場合、その既存のファイルは回収されます (/var/pkg/lost+found 内に格納されます)。
preserve 属性は、次のいずれかの値を持ちます。
既存のファイルは拡張子 .old を使用して名前が変更され、新しいファイルがその場所に置かれます。
既存のファイルはそのまま残され、新しいファイルが拡張子 .new でインストールされます。
このファイルは、パッケージの初期インストールではインストールされません。アップグレード時、既存のファイルはすべて拡張子 .legacy を使用して名前が変更され、新しいファイルがその場所に置かれます。
既存のファイルがそのまま残され、新しいファイルはインストールされません。
このアクションによってほかのパッケージが同じ場所にファイルを配布できるか、またはそれによって別のファイルをオーバーレイすることを目的にしたファイルが配布されるかを指定します。この機能は、どの自己アセンブリにも参加しておらず (たとえば、/etc/motd)、かつ安全に上書きできる構成ファイルで使用されることを目的にしています。
overlay が指定されていない場合は、複数のパッケージが同じ場所にファイルを提供することはできません。
overlay 属性は、次のいずれかの値を持ちます。
もう 1 つのパッケージが同じ場所にファイルを配布できるようになります。preserve 属性も同時に設定されていないかぎり、この値は意味を持ちません。
このアクションによって配布されたファイルは、allow を指定したほかのすべてのアクションを上書きします。
インストールされたファイルへの変更は、オーバーレイしているファイルの preserve 属性の値に基づいて保持されます。削除時、ファイルの内容は、preserve 属性が指定されたかどうかには関係なく、オーバーレイされているアクションがまだインストールされている場合は保持されます。別のファイルをオーバーレイできるのは 1 つのアクションだけであり、mode、owner、および group 属性が一致している必要があります。
この属性は、パッケージからパッケージに、場所から場所に、あるいはその両方で移動している編集可能なファイルを処理するために使用されます。この属性の値は、元のパッケージの名前のあとに、コロンが続き、そのあとにそのファイルの元のパスが続きます。削除されているファイルはすべて、そのパッケージとパス、または original_name 属性の値 (指定されている場合) のどちらかを使用して記録されます。original_name 属性が設定された、インストールされている編集可能なファイルはすべて、それが同じパッケージ化の操作の一部として削除されている場合は、その名前のファイルを使用します。
この属性を一度設定したら、パッケージまたはファイルが繰り返し名前変更されても、その値を変更しないでください。同じ値を保持することで、以前のすべてのバージョンからアップグレードを行うことができます。
この属性は、このファイルにリリースノートテキストが含まれていることを示すために使用されます。この属性の値は、パッケージ FMRI です。元のイメージに存在し、元のイメージ内のパッケージよりも新しいバージョンのパッケージ名が FMRI で指定されている場合、このファイルはリリースノートに含まれます。特別な FMRI (feature/pkg/self) は、含まれるパッケージを指します。feature/pkg/self のバージョンが 0 の場合、このファイルは初期インストールのリリースノートにのみ含まれます。
この属性は、セットとして元に戻すべき編集可能なファイルをタグ付けするために使用されます。複数の revert-tag 値を指定できます。それらのいずれかのタグが指定された状態で pkg revert コマンドが呼び出されると、このファイルはそのマニフェストで定義された状態に戻ります。revert サブコマンドについては、pkg(1) のマニュアルページを参照してください。
特定のタイプのファイルには追加の属性を指定できます。ELF ファイルの場合は、次の属性が認識されます。
ELF ファイルのアーキテクチャー。この値は、そのファイルが構築されたアーキテクチャー上での uname -p の出力です。
この値は 32 または 64 です。
この値は、バイナリがロードされるときにメモリーにマップされるファイル内の ELF セクションのハッシュです。これらは、2 つのバイナリの実行可能ファイルの動作が異なるかどうかを判定するときに考慮する必要のある唯一のセクションです。
file アクションの例は次のとおりです。
file path=usr/bin/pkg owner=root group=bin mode=0755
dir アクションは、それが通常のファイルではなくディレクトリを表すことを除けば、ファイルシステムオブジェクトを表すという点で file アクションに似ています。dir アクションには、file アクション (path、owner、group、および mode) と同じ 4 つの標準属性があり、path がキー属性です。
ディレクトリは、IPS でカウントされる参照です。あるディレクトリを明示的または暗黙的に参照している最後のパッケージが参照を行わなくなると、そのディレクトリは削除されます。そのディレクトリにパッケージ解除されたファイルシステムオブジェクトが含まれている場合、それらの項目は /var/pkg/lost+found に移動されます。
パッケージ解除された内容を新しいディレクトリに移動するには、次の属性を使用します。
回収された項目のディレクトリを指定します。このような属性を持つディレクトリは、作成時、回収されたディレクトリの内容を継承します (その内容が存在する場合)。例については、「ディレクトリの削除または名前変更時のパッケージ解除された内容の移動」を参照してください。
インストール中に、pkg(1) では、システム上の指定されたディレクトリアクションのすべてのインスタンスに同じ owner、group、および mode 属性値が含まれていることを確認します。競合する値がシステム上に、または同じ操作でインストールされるほかのパッケージ内に見つかった場合、dir アクションはインストールされません。
dir アクションの例は次のとおりです。
dir path=usr/share/lib owner=root group=sys mode=0755
link アクションはシンボリックリンクを表します。link アクションには、次の標準属性があります。
シンボリックリンクがインストールされるファイルシステムのパス。これは link アクションのキー属性です。
シンボリックリンクのターゲット。リンクの解決先のファイルシステムオブジェクト。
link アクションは、指定されたソフトウェアの複数のバージョンまたは実装を同時にシステムにインストールできるようにする属性も取ります。そのようなリンクは仲介リンクであるため、管理者はどのリンクがどのバージョンまたは実装を指すかを必要に応じて簡単に切り替えられます。これらの調停されたリンクについては、「複数のアプリケーション実装の配布」に説明されています。
link アクションの例は次のとおりです。
link path=usr/lib/libpython2.6.so target=libpython2.6.so.1.0
hardlink アクションは、ハードリンクを表します。それは link アクションと同じ属性を持ち、そのキー属性も同じく path です
hardlink アクションの例は次のとおりです。
hardlink path=opt/myapplication/hardlink target=foo
set アクションは、パッケージの説明などの、パッケージレベルの属性 (またはメタデータ) を表します。
次の属性が認識されます。
属性の名前。
属性に与えられた値。
set アクションは、パッケージ作成者が選択した任意のメタデータを提供できます。次の属性名はパッケージシステムにとって特別な意味を持ちます。
含まれるパッケージの名前とバージョン。
pkg(5) クライアントがパッケージを分類するために使用できる 1 つ以上のトークン。この値には、スキーム ( org.opensolaris.category.2008 や org.acm.class.1998 など) と実際の分類 (アプリケーション/ゲームなど) がコロン (:) で区切られて含まれています。スキームは packagemanager(1) GUI によって使用されます。info.classification の一連の値が 付録 A パッケージの分類に記載されています。
この説明の簡単な概要。この値は、pkg list -s の出力の各行の終わりと pkg info の出力の 1 つの行に表示されます。この値は 60 文字以内にします。この値はパッケージとは何かについて説明し、パッケージの名前またはバージョンを繰り返すことはしません。
パッケージの内容と機能の詳細な説明。通常は、1 つの段落程度の長さです。この値は、このパッケージをインストールするとよい理由を説明します。
true の場合、パッケージは廃止としてマークされています。廃止されたパッケージには、set アクション以外のアクションは存在せず、また名前変更としてマークしてはいけません。パッケージの廃止については、「パッケージの廃止」に説明されています。
true の場合は、パッケージの名前が変更されました。このパッケージには、このパッケージの名前が変更されたあとのパッケージバージョンを指す 1 つ以上の depend アクションも含まれている必要があります。パッケージを名前変更と廃止の両方としてマークすることはできませんが、それ以外は任意の数の set アクションを含めることができます。パッケージの名前変更については、「パッケージの名前変更、マージ、および分割」に説明されています。
IPS によって使用されるバージョンスキームは厳格で、pkg.fmri バージョンフィールドに文字または語を指定できません。人間が読める一般的なバージョンが指定のパッケージで使用可能である場合は、そのバージョンをここに設定できます。この値は IPS ツールによって表示されます。この値はバージョン比較のベースとして使用されず、pkg.fmri バージョンの代わりに使用することはできません。
その他の情報属性と Oracle Solaris によって使用される属性については、付録 B IPS を使用して Oracle Solaris OS をパッケージ化する方法に説明されています。
set アクションの例は次のとおりです。
set name=pkg.summary value="Image Packaging System"
driver アクションはデバイスドライバを表します。driver アクションはペイロードを参照しません。ドライバファイル自体を file アクションとしてインストールする必要があります。次の属性が認識されています。これらの属性値の詳細は、add_drv(1M) を参照してください。
ドライバの名前。多くの場合はドライババイナリのファイル名ですが、必ずしもそうとは限りません。これは driver アクションのキー属性です。
ドライバの別名。特定のドライバが複数の alias 属性を持つことができます。特殊な引用符の規則は必要ありません。
ドライバクラス。特定のドライバが複数の class 属性を持つことができます。
このドライバのデバイスノードのファイルシステムアクセス権。
このドライバに対するクローンドライバのマイナーノードのファイルシステムアクセス権。
このデバイスの追加のセキュリティーポリシー。特定のドライバが複数の policy 属性を持つことができますが、マイナーデバイスの指定が複数の属性に存在することはできません。
このドライバで使用される特権。特定のドライバが複数の privs 属性を持つことができます。
/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 番目のパッケージの機能が必要な場合があります。依存関係については、第 4 章パッケージの依存関係の指定に説明されています。
次の属性が認識されます。
依存関係のターゲットを表す FMRI。これは depend アクションのキー属性です。FMRI 値に発行元を含めてはいけません。パッケージ名は、それがスラッシュ (/) で始まらなくても、完全 (つまりルート指定) とみなされます。タイプ require-any の依存関係は、複数の fmri 属性を持つことができます。fmri 値ではバージョンはオプションですが、依存関係のタイプによっては、バージョンのない FMRI は意味を持ちません。
FMRI 値にはアスタリスク (*) を使用できず、バージョンに対して latest トークンを使用することもできません。
依存関係のタイプ。
ターゲットパッケージが必要であり、かつ fmri 属性で指定されたバージョン以上のバージョンを持っている必要があります。バージョンが指定されていない場合は、任意のバージョンが依存関係を満たします。require 依存関係のいずれかを満たすことができない場合、そのパッケージはインストールできません。
依存関係のターゲットが存在する場合は、指定されたバージョンレベル以上である必要があります。
指定されたバージョンレベル以上で依存関係のターゲットが存在する場合は、含んでいるパッケージをインストールできません。バージョンが指定されていない場合、ターゲットパッケージは、依存関係を指定しているパッケージと同時にインストールできません。
依存関係はオプションですが、ターゲットパッケージのバージョンは制約されます。制約と凍結については、第 4 章パッケージの依存関係の指定を参照してください。
複数の fmri 属性で指定された複数のターゲットパッケージのいずれか 1 つが、依存関係タイプ require と同じ規則に従って依存関係を満たすことができます。
依存関係のターゲットは、predicate 属性で定義されたパッケージがシステム上に存在する場合にのみ必要です。
このパッケージのインストールの前に、依存関係のターゲット (存在する場合) は変更されるイメージ上の指定された値以上である必要があります。root-image 属性の値が true である場合、このパッケージをインストールするには、/ をルートとするイメージ上にターゲットが存在する必要があります。
依存関係のターゲットは、パッケージがイメージ回避リスト上にないかぎり必要です。廃止されたパッケージは、暗黙のうちに group 依存関係を満たすことに注意してください。イメージ回避リストについては、pkg(1) のマニュアルページの avoid サブコマンドを参照してください。
依存関係は、イメージが子イメージ (ゾーンなど) でない場合は無視されます。このイメージが子イメージである場合は、親イメージ内に依存関係のターゲットが存在する必要があります。parent 依存関係でのバージョンの照合は、incorporate 依存関係で使用されるものと同じです。
conditional 依存関係の述語を表す FMRI。
先に説明した origin 依存関係に対してのみ有効です。
depend アクションの例は次のとおりです。
depend fmri=crypto/ca-certificates type=require
license アクションは、パッケージの内容に関連したライセンスやその他の情報ファイルを表します。パッケージは license アクションを通して、ライセンス、免責条項、またはその他のガイダンスをパッケージインストーラに配布できます。
license アクションのペイロードは、パッケージに関連したイメージメタデータディレクトリに提供され、人間が読める形式のテキストデータのみが含まれているべきです。license アクションのペイロードには、HTML やその他の形式のマークアップが含まれていてはいけません。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 値は、パッケージ内で一意である必要があります。
true の場合は、関連するパッケージをインストールまたは更新するには、ユーザーがこのライセンスに同意する必要があります。この属性を省略すると、false と同等になります。同意の方法 (たとえば、対話型または構成ベース) は、クライアントに任されています。
true の場合は、パッケージ化の操作中に、クライアントが license アクションのペイロードを表示する必要があります。この属性を省略すると、false と同等になります。この属性は、コピーライト表示に使用してはいけません。操作中に表示する必要のある実際のライセンスまたはその他の素材にのみ使用してください。表示の方法は、クライアントに任されています。
license アクションの例は次のとおりです。
license license="Apache v2.0"
legacy アクションは、レガシー SVR4 パッケージシステムで使用されるパッケージデータを表します。legacy アクションに関連付けられた属性は、レガシー SVR4 システムのデータベースに追加されるため、これらのデータベースに問い合わせを行なっているツールは、レガシーパッケージが実際にインストールされているかのように動作できます。特に、legacy アクションを指定することにより、pkg 属性で指定されたパッケージが SVR4 の依存関係を満たすことができます。
次の属性が認識されています。関連するパラメータについては、pkginfo(4) のマニュアルページを参照してください。
CATEGORY パラメータの値。デフォルト値は system です。
DESC パラメータの値。
HOTLINE パラメータの値。
NAME パラメータの値。デフォルト値は none provided です。
インストールされるパッケージの略語。デフォルト値は、パッケージの FMRI の名前です。これは legacy アクションのキー属性です。
VENDOR パラメータの値。
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 でのパッケージ署名のサポートの一部として使用されます。署名については、第 9 章IPS パッケージの署名に詳しく説明されています。
user アクションは、/etc/passwd、/etc/shadow、/etc/group、および /etc/ftpd/ftpusers ファイルで指定されているように UNIX ユーザーを定義します。user アクションからの情報は適切なファイルに追加されます。
次の属性が認識されます。
ユーザーの一意の名前。
ユーザーの暗号化パスワード。デフォルト値は *LK* です。
ユーザーの一意の数値 ID。デフォルト値は、100 未満の最初に空いている値です。
ユーザーのプライマリグループの名前。この名前は /etc/group に存在する必要があります。
/etc/passwd 内の GECOS フィールドに表される、ユーザーの実名。デフォルト値は username 属性の値です。
ユーザーのホームディレクトリ。デフォルト値は / です。
ユーザーのデフォルトのシェル。デフォルト値は空です。
ユーザーが属しているセカンダリグループ。group(4) のマニュアルページを参照してください。
true または false に設定できます。true のデフォルト値は、ユーザーが FTP 経由のログインを許可されていることを示します。ftpusers(4) のマニュアルページを参照してください。
1970 年 1 月 1 日と、パスワードが最後に変更された日付の間の日数。デフォルト値は空です。
パスワード変更の間の必要な最小日数。パスワードの有効期限を有効にするには、このフィールドを 0 以上に設定する必要があります。デフォルト値は空です。
パスワードが有効な最大日数。デフォルト値は空です。shadow(4) のマニュアルページを参照してください。
password の期限が切れる前にユーザーに警告が表示される日数。
ユーザーに許可されている非活動の日数。これはマシンごとにカウントされます。最終ログインに関する情報は、そのマシンの lastlog ファイルから取得されます。
UNIX エポック (1970 年 1 月 1 日) 以降の日数として表される絶対的な日付。この日数に達すると、ログインを使用できなくなります。たとえば、13514 の期限切れの値は、ログインの有効期限が 2007 年 1 月 1 日であることを指定します。
空に設定されています。
user アクションの例は次のとおりです。
user gcos-field="pkg(5) server UID" group=pkg5srv uid=97 username=pkg5srv
group アクションは、group(4) ファイルで指定されているように UNIX グループを定義します。グループパスワードのサポートは提供されません。group アクションで定義されたグループには最初、ユーザーリストがありません。ユーザーは、user アクションを使用して追加できます。
次の属性が認識されます。
グループの名前の値。
グループの一意の数値 ID。デフォルト値は、100 未満の最初に空いているグループです。
group アクションの例は次のとおりです。
group groupname=pkg5srv gid=97
ソフトウェアリポジトリには、1 つ以上の発行元のパッケージが含まれています。リポジトリをさまざまな方法でアクセスできるように構成できます: HTTP、HTTPS、ファイル (ローカルストレージ上、あるいは NFS または SMB 経由)、および自己完結型パッケージアーカイブファイル (通常は .p5p 拡張子を持つ) として。
パッケージアーカイブを使用すると、IPS パッケージを手軽に配布できるようになります。パッケージアーカイブについては、「パッケージアーカイブとして発行する」に詳しく説明されています。
HTTP または HTTPS 経由でアクセスされるリポジトリには、サーバープロセス pkg.depotd が関連付けられています。詳細は、pkg.depotd(1M) のマニュアルページを参照してください。例については、『Oracle Solaris 11.1 パッケージリポジトリのコピーおよび作成』の「HTTP インタフェースを使用したパッケージの取得」を参照してください。
ファイルリポジトリの場合、リポジトリソフトウェアはアクセス中のクライアントの一部として実行されます。リポジトリは、『Oracle Solaris 11.1 パッケージリポジトリのコピーおよび作成』に示されるように、pkgrepo および pkgrecv コマンドを使用して作成します。