System V Release 4 のアプリケーションバイナリインタフェース (ABI) は、システム管理者により統合されるソフトウェアパッケージを作成する「ソフトウェアのパッケージ化」と呼ばれるソフトウェア配布モデルを指定します。ABI モデルを使用して配布されるソフトウェアはすべて、あらゆる ABI 準拠システムへのインストールが保証されています。
ソフトウェアパッケージを作成する場合、パッケージのインストール手続きに使用するオプションの tsolinfo(4) ファイル (以下を参照) にセキュリティ属性情報を指定します。このファイルがオプションなのは、パッケージのインストールの際、デフォルトのセキュリティ属性が割り当てられるのは、セキュリティ属性情報がパッケージに提供されていないときだからです。
パッケージは、パッケージオブジェクトと制御ファイルから構成されます。パッケージオブジェクトはインストールされるファイルであり、制御ファイルは、パッケージがインストールされるかどうか、インストールされる場合にはいつ、どこで、どのように行われるかを制御するファイルです。システム上のインストール済みパッケージについての情報は、/var/sadm/install/contents 内のソフトウェアインストールデータベースに格納されています。
次に、ABI 準拠のソフトウェアパッケージの作成とインストールを行う Solaris 7 コマンドを示します。
pkginfo(1) |
ソフトウェアパッケージ情報を表示する |
pkgparam(1) |
パッケージのパラメータ値を表示する |
pkgask(1M) |
要求スクリプトを作成する |
installf(1M) |
ソフトウェアインストールデータベースにエントリを追加する |
removef(1M) |
ソフトウェアインストールデータベースからエントリを削除する |
パッケージを作成するには、次のファイルを設定します。
必要に応じたオプションの情報ファイル
オプションの必須アクセス制御 (MAC) セキュリティ属性ファイル、tsolinfo(4)
必要に応じたオプションのパッケージ化スクリプト
pkgmk(1) は、pkginfo(4) と prototype(4) を使用して、ソフトウェアパッケージを構築します。オプションのスクリプトは、インストールのカスタマイズとパッケージの削除を行います。
tsolinfo(4) ファイルは、特殊なセキュリティ属性を必要とするパッケージオブジェクトに対応したエントリを含みます。対応する tsolinfo エントリがパッケージオブジェクトに含まれない場合には、パッケージの最終的なインストール先であるファイルシステムのデフォルトのセキュリティ属性セットが割り当てられます。このファイルは、次のフォーマットで、パッケージオブジェクトごとに 1 つ以上のエントリを含むことができます。フォーマット内のフィールドは、各エントリごとに必要です。
attribute_name object_name attribute_value
次に、使用できる属性名、それらの意味、および指定方法を示します。
属性名 |
内容 |
属性値 |
---|---|---|
forced_privs |
パッケージオブジェクトは強制された特権 |
コンマで区切られた特権リスト |
allowed_privs |
パッケージオブジェクトは許容された特権 |
コンマで区切られた特権リスト |
public |
パッケージオブジェクトは public |
属性値なし |
mld |
パッケージオブジェクトはマルチレベルディレクトリ |
属性値なし |
次の例、tsolinfo(4) ファイルエントリは、sendmail(1M) パッケージオブジェクトのセキュリティ属性を指定します。
属性名 |
パッケージオブジェクト名 |
属性値 |
mld |
var/spool.mail |
|
mld |
var/mail |
|
mld |
var/tmp |
|
allowed_privs |
usr/lib/sendmail |
all |
forced_privs |
usr/lib/sendmail |
file_mac_write、 file_nofloat |
label |
etc/security/tsol |
admin_high[admin_high] |
var/spool/mail、var/mail、var/tmp パッケージオブジェクトは、マルチレベルディレクトリです。MLD 属性には、属性値はありません。
usr/lib/sendmail オブジェクトの許容された特権セットには、すべてのシステム特権が存在します。
usr/lib/sendmail オブジェクトの強制セットには、コンマで区切られた特権リストが存在します。
etc/security/tsol ファイルは CMW ラベルを含み、最初に情報ラベル部 ADMIN_HIGH が指定され、次に機密ラベル部 ADMIN_HIGH が角括弧で囲まれて指定されています。
既存のパッケージの検索と編集を行うには、grep(1) コマンドを使用してそのソフトウェアインストールデータベースを検索します。返される情報は、パッケージ名を含みます。
machine_name% cat /var/sadm/install/contents | grep /usr/lib/object
パッケージ名を取得すると、そのパッケージのパッケージ定義を検索し、tsolinfo(4) ファイルを編集できます。tsolinfo ファイルが存在しない場合には、ファイルを 1 つ作成します。tsolinfo ファイルを作成する場合、それを prototype ファイルに加え、pkgmk(1) コマンドが tsolinfo ファイルを見つけることができるようにします。
新しいパッケージを追加するには、パッケージの作成の詳細が述べられた Solaris 7 の『Application Packaging Developer's Guide』 (英語版) を参照してください。この節では、内容と手順の概要を述べます。
次に、新しいソフトウェアパッケージを作成する Solaris 7 コマンドを示します。
pkginfo(1) |
ソフトウェアパッケージ情報を表示する |
pkgparam(1) |
パッケージのパラメータ値を表示する |
pkgmk(1) |
ソフトウェアパッケージを作成する |
pkgproto(1) |
pkgmk(1) に対する入力用のプロトタイプファイルを生成する |
pkgtrans(1) |
パッケージの転送または変換、あるいはその両方を行う |
次の図は、作成すべきファイル、pkgmk(1) コマンドの役割、生成されるディレクトリ構造またはパッケージを示します。
マニュアルページを使用して、pkginfo(4) ファイルを作成します。
マニュアルページを使用して、prototype(4) ファイルを作成します。
pkgproto(1) コマンドを使用して、prototype(4) ファイルテンプレートを生成します。
マニュアルページを使用して、tsolinfo(4) ファイルを作成します。
pkgmk(1) コマンドが tsolinfo ファイルを検索できるように、tsolinfo がプロトタイプファイルにリストされていることを確認します。
必要に応じ、オプションのパッケージ情報ファイルを作成します。
必要に応じ、オプションのパッケージ化スクリプトを作成します。
プロトタイプファイルは、任意のエディタで作成できます。パッケージ構成要素ごとに、1 つのエントリが必要です。次に、tsolinfo ファイルのエントリを含むプロトタイプファイル例を示します。tsolinfo ファイルの前の文字 i は、このファイルが情報ファイルであることを示します。文字 f は、標準の実行可能ファイルまたはデータファイルを示します。詳細は、prototype(4) のマニュアルページを参照してください。
# Package "prototype" file for the bbp device driver. # Bidirectional Parallel Port Driver for SBus Printer Card. # i pkginfo i request i copyright i postinstall i tsolinfo f none bbp.kmod 0444 root sys f none bbp_make_node 0555 root sys f none bbp_remove_node 0555 root sys