アプリケーションパッケージ開発者ガイド

クラスアーカイブパッケージの作成

クラスアーカイブパッケージは、アプリケーションバイナリインタフェース (ABI) の拡張機能です。これは、特定のファイルセットが単一のファイル (アーカイブ) に結合され、オプションで圧縮または暗号化されたパッケージです。クラスアーカイブ形式は、アクティブな可能性があるファイルシステムに対して、最初のインストールの速度を最大 30% 向上し、パッケージおよびパッチのインストール時の信頼性が改善されます。

次の節では、アーカイブパッケージディレクトリの構造、キーワード、および faspac ユーティリティーについて説明します。

アーカイブパッケージディレクトリの構造

次の図に示すパッケージエントリは、パッケージファイルが含まれるディレクトリを表します。このディレクトリは、パッケージと同じ名前にする必要があります。

図 6–1 パッケージディレクトリ構造

図には、パッケージディレクトリの直下に  pkginfo、pkgmap、reloc、root、および install の 5 つのサブディレクトリがあります。その下にもサブディレクトリがあります。

パッケージディレクトリに含まれるファイルおよびディレクトリの機能を次に示します。

項目 

説明 

pkginfo

特別な環境変数およびインストール命令を含めて、パッケージ全体を記述するファイル 

pkgmap

インストールされる各オブジェクト (ファイル、ディレクトリ、パイプなど) を記述するファイル 

reloc

ベースディレクトリから相対的にインストールされるファイル (再配置可能オブジェクト) が含まれる、任意のディレクトリ 

root

root ディレクトリから相対的にインストールされるファイル (ルートオブジェクト) が含まれる、任意のディレクトリ

install

スクリプトおよびその他の補助的なファイルが含まれる、任意のディレクトリ (pkginfo および pkgmap を除き、すべての ftype i ファイルはここに含まれる)

クラスアーカイブ形式では、パッケージビルダにより reloc および root の各ディレクトリからアーカイブにファイルを結合できます。アーカイブは、インストールの速度の向上、パッケージサイズの縮小、またはパッケージのセキュリティの向上のために、圧縮、暗号化、またはその他の任意の方法で処理できます。

ABI により、パッケージ内の任意のファイルをクラスに割り当てることができます。特定のクラス内のすべてのファイルは、クラスアクションスクリプトで定義されるカスタムメソッドを使用してディスクにインストールできます。このカスタムメソッドでは、ターゲットシステムで使用できるプログラムまたはパッケージとともに提供されるプログラムを使用できます。結果の形式は、標準 ABI 形式によく似ています。次の図に示すように、別のディレクトリが追加されます。アーカイブ用ファイルのすべてのクラスは、そのまま単一のファイルに結合され、archive ディレクトリに配置されます。アーカイブされたすべてのファイルが reloc および root の各ディレクトリから削除され、インストールクラスアクションスクリプトが install ディレクトリに配置されます。

図 6–2 アーカイブパッケージディレクトリの構造

図の構造では、図 6-1 と同じパッケージディレクトリ構造に archive サブディレクトリが追加されています。

クラスアーカイブパッケージをサポートするキーワード

この新しいクラスアーカイブ形式をサポートするために、pkginfo ファイル内で特殊な意味を持つキーワード形式の新しいインタフェースが 3 つあります。これらのキーワードを使用して、特殊な処理が必要なクラスを指定します。各キーワード文の形式は、 keyword=class1[class2 class3 ...] です。各キーワードの値は、次の表で定義されています。

キーワード 

説明 

PKG_SRC_NOVERIFY

これは、提供されるパッケージの reloc または root の各ディレクトリ内のファイルが指定されたクラスに属する場合に、pkgadd でファイルの存在とプロパティーを確認しないように指定します。アーカイブされたクラスではファイルが reloc または root のディレクトリ内に存在しないため、このキーワードが必要です。それらのファイルは、archive ディレクトリの非公開形式のファイルです。

PKG_DST_QKVERIFY

これらのクラスのファイルは、インストール後にテキスト出力がほとんどまたはまったくない簡易アルゴリズムを使用して確認されます。簡易確認では、最初に各ファイルの属性を正確に設定して、処理が正常に実行されたかどうかを確認します。pkgmap に対して、ファイルサイズと変更時間のテストも行われます。checksum 検証は実行されず、エラー復旧は標準の検証メカニズムのエラー復旧よりも非力です。インストール時に停電またはディスク障害が発生した場合には、コンテンツファイルがインストールされたファイルと一致しないことがあります。.この不一致は、どのような場合でも pkgrm で解決できます。

PKG_CAS_PASSRELATIVE

通常、インストールクラスアクションスクリプトは、インストールするファイルを指定するソースとターゲットのペアの一覧を、stdin から受け取ります。PKG_CAS_PASSRELATIVE に割り当てられたクラスでは、ソースとターゲットのペアが取得されません。その代わりに単一の一覧を受け取ります。この一覧の最初のエントリはソースパッケージの場所で、一覧の残りはターゲットのパスです。これはアーカイブからの抽出を単純化するためです。ソースパッケージの場所から archive ディレクトリのアーカイブを検索できます。ターゲットのパスは、アーカイブのコンテンツを抽出する機能に渡されます。各ターゲットパスは、元のパスが root または reloc のどちらであったかに応じて、絶対パスまたはベースディレクトリからの相対パスのいずれかで指定されます。このオプションを選択すると、相対パスと絶対パスの両方を単一のクラスに結合することは困難な場合があります。

アーカイブされたクラスごとにクラスアクションスクリプトが必要です。これは Bourne シェルコマンドが含まれたファイルで、アーカイブから実際にファイルをインストールするために pkgadd から実行されます。パッケージの install ディレクトリにクラスアクションスクリプトが検出された場合、pkgadd からそのスクリプトにインストールのすべての責任が委任されます。クラスアクションスクリプトは root 権限で実行され、ターゲットシステムの任意の場所にファイルを配置できます。


注 –

クラスアーカイブパッケージを実装するために絶対に必要なキーワードは、PKG_SRC_NOVERIFY だけです。ほかのキーワードは、インストールの速度を向上したりコードを保護したりするために使用できます。


faspac ユーティリティー

faspac ユーティリティーは、標準 ABI パッケージを、バンドル版のパッケージで使用されるクラスアーカイブ形式に変換します。このユーティリティーでは、cpio を使用してアーカイブを行い、compress を使用して圧縮を行います。結果のパッケージには、最上位のディレクトリに archive というディレクトリが追加されています。このディレクトリには、クラスごとに名前が付けられたすべてのアーカイブが含まれます。install ディレクトリには、各アーカイブの展開に必要なクラスアクションスクリプトが含まれます。絶対パスはアーカイブされません。

faspac ユーティリティーの形式は次のとおりです。


faspac [-m Archive Method] -a -s -q [-d Base Directory] /
[-x Exclude List] [List of Packages]

次の表で、faspac コマンドの各オプションについて説明します。

オプション 

説明 

-m Archive Method

 

アーカイブまたは圧縮の方法を示します。bzip2 はデフォルトで使用される圧縮ユーティリティーです。zip または unzip に切り替えるには、-m zip を使用します。cpio または compress の場合は、-m cpio を使用します。

-a

属性を固定します (ルートで実行する必要がある)。 

-s

標準 ABI 型のパッケージ変換を示します。このオプションは、cpio または圧縮されたパッケージを取り、標準 ABI 準拠のパッケージ形式にします。 

-q

非出力モードを示します。 

-d Base Directory

コマンド行で要求される場合にすべてのパッケージの基準になるディレクトリを示します。これは List of Packages エントリとは相互排他的です。

-x Exclude List

処理から除外するパッケージの、コンマ区切りまたは引用符付きスペース区切りの一覧を示します。 

List of Packages

処理されるパッケージの一覧を示します。