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

印刷ビューの終了

更新: 2016 年 11 月
 
 

パッケージ内容の競合の回避

一般に、パッケージでは同じパスで複数のアクションを提供するべきではありません。次のアクションだけが例外です。

  • 同一の属性値を持つディレクトリ、リンク、およびハードリンク

  • 調停されたリンクおよびハードリンク

最高のユーザーエクスペリエンスのため、pkglint ユーティリティーを使用して競合をチェックすることで、インストールおよび更新エラーを回避します。pkglint の詳細は、パッケージを検証するおよびpkglint(1) のマニュアルページを参照してください。

単一のパッケージで、同じ内容のさまざまなバージョンを同じパスに配布する必要がある場合、バリアントを使用して、管理者がさまざまなバージョンの内容から選択してインストールできるようにします。詳細については、相互に排他的なソフトウェアコンポーネントおよび pkg(7) のマニュアルページを参照してください。

複数のパッケージ (同じパッケージの 2 つのバージョンではなく) で、同じ内容のさまざまなバージョンを同じパスに配布する必要がある場合は、調停されたリンクを使用して、管理者がその内容のさまざまなバージョンから選択できるようにします。競合している内容は異なる親ディレクトリにインストールし、ターゲットの場所に各バージョンの内容を指すリンクを作成する必要があります。管理者は pkg set-mediator コマンドを使用して、リンクのターゲットを変更することによって、異なる内容を切り替えられます。競合するパッケージの内容を調停する方法については、複数のアプリケーション実装の配布を参照してください。


注 -  調停は、両方のパッケージで同じタイプのアクションを提供する場合で、link および hardlink アクションに対してのみ使用できます。さらに、両方のパッケージで内容の調停を実装する必要があります。一方のパッケージで /opt/tool をリンクとして提供し、もう一方のパッケージで調停なしで /opt/tool をリンクとして提供した場合、競合が引き続き存在するため、ユーザーはエラーメッセージを受け取り、どちらのパッケージもインストールできないことがあります。

2 つの異なるパッケージで一部同じ内容を提供しているが、いずれかのパッケージだけをインストールする場合、パッケージの名前が異なることを確認します。パブリッシャー example.com がパブリッシャー solaris と一部同じ内容を提供する場合、エンドユーザーは、インストールコマンドにパブリッシャーを含む完全なパッケージ名を指定することによって競合を回避できる可能性があります。ただし、依存関係で引き続き問題が発生する可能性があります。depend アクションの fmri 属性は、パブリッシャーを除く完全なパッケージ名を指定します。次の依存関係は、pkg://solaris/cat/subcat/toolpkg://example.com/cat/subcat/tool の両方に一致します。

depend fmri=pkg:/cat/subcat/tool type=require

これらの依存関係を区別して正しいパッケージをインストールするには、パッケージ名を変更します。次の提案ではパッケージ名を変更していますが、名前 tool を引き続き維持しています。

pkg://example.com/cat/subcat/example.com/tool
pkg://example.com/cat/subcat/example.com,tool
pkg://example.com/cat/subcat/vendor/example.com/tool