JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布     Oracle Solaris 11.1 Information Library (日本語)
このドキュメントの評価
search filter icon
search icon

ドキュメントの情報

はじめに

1.  IPS の設計目標、概念、および用語

2.  IPS を使用したソフトウェアのパッケージ化

3.  ソフトウェアパッケージのインストール、削除、および更新

4.  パッケージの依存関係の指定

5.  バリエーションの許可

相互に排他的なソフトウェアコンポーネント

オプションのソフトウェアコンポーネント

6.  プログラムによるパッケージマニフェストの変更

7.  パッケージインストールの一環としてのシステム変更の自動化

8.  パッケージ更新の高度なトピック

9.  IPS パッケージの署名

10.  非大域ゾーンの処理

11.  発行されたパッケージの変更

A.  パッケージの分類

B.  IPS を使用して Oracle Solaris OS をパッケージ化する方法

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

相互に排他的なソフトウェアコンポーネント

Oracle Solaris では複数のアーキテクチャーをサポートしており、SVR4 パッケージシステムで起きる一般的なエラーの 1 つが、間違ったアーキテクチャー用のパッケージを誤ってインストールすることでした。サポートされているアーキテクチャーごとに別個の IPS ソフトウェアリポジトリを保持するというのは、ISV にとっては魅力がなく、ソフトウェアユーザーにとってはエラーを起こしやすくなります。結果として、IPS は複数のアーキテクチャーでの単一パッケージのインストールをサポートしています。

この機能を実装するメカニズムは、バリアントと呼ばれます。バリアントを使用すると、実際にインストールされるソフトウェアコンポーネントをターゲットイメージのプロパティーで決定できます。

バリアントには、その名前と使用可能な値のリストの 2 つの部分があります。Oracle Solaris 11 で定義されているバリアントを次の表に示します。

バリアント名
使用可能な値
variant.arch
sparci386
variant.opensolaris.zone
globalnonglobal
variant.debug.*
truefalse

バリアントは、パッケージ内の次の 2 つの場所に出現します。

たとえば、シンボリックリンク /var/ld/64 を配布するパッケージには次の定義を含めることができます。

set name=variant.arch value=sparc value=i386
dir group=bin mode=0755 owner=root path=var/ld
dir group=bin mode=0755 owner=root path=var/ld/amd64 \
    variant.arch=i386
dir group=bin mode=0755 owner=root path=var/ld/sparcv9 \
    variant.arch=sparc
link path=var/ld/32 target=.
link path=var/ld/64 target=sparcv9 variant.arch=sparc
link path=var/ld/64 target=amd64 variant.arch=i386

SPARC と x86 の両方に配布されるコンポーネントはバリアントタグを受け取りませんが、一方または他方のアーキテクチャーに配布されるコンポーネントは適切なタグを受け取ることに注意してください。アクションには、さまざまなバリアント名の複数のタグを含めることができます。たとえば、1 つのパッケージに SPARC と x86 の両方のデバッグバイナリと非デバッグバイナリの両方を含めることができます。

Oracle Solaris では、カーネルコンポーネントは非大域ゾーン内では役に立たないため、通常、ゾーンにインストールされたパッケージから取り除かれます。このため、カーネルコンポーネントは、非大域ゾーンにインストールされないように、global に設定された opensolaris.zone バリアントでマーク付けされます。これは通常、pkgmogrify(1) 規則を使用することで、発行中にマニフェスト内で行われます。i386 および sparc ビルドからのパッケージはゾーン用としてマーク付けされ、その後 pkgmerge(1) によって sparc および i386 ビルドからのパッケージがマージされます。これは、そのようなパッケージを手動で構築しようとするよりもはるかに信頼性が高く、迅速です。

パッケージ開発者は新しいバリアントを定義できません。ただし、開発者は variant.debug.* バリアントでタグ付けされたデバッグバージョンのコンポーネントを定義でき、問題が発生した場合にユーザーはそのバリアントを選択できます。バリアント名前空間の variant.debug.* 部分は、デフォルト値 false を持つように事前定義されています。バリアントはイメージごとに設定されることを念頭に置き、必ずソフトウェアのその要素に適した解決で一意になる適切な名前を選択するようにしてください。

バリアントタグは、マージ中にアーキテクチャー間で異なるすべてのアクション (依存関係や set アクションを含む) に適用されます。現在のイメージのバリアント値のいずれかをサポートしないとしてマーク付けされているパッケージは、インストールの対象とみなされません。

pkgmerge(1) のマニュアルページには、パッケージをマージする例がいくつか記載されています。pkgmerge コマンドは、必要に応じて、同時に複数の異なるバリアントにわたってマージします。