代替ルート (/) はオペレーティング環境のコピーであり、動作中のシステムではありません。Live Upgrade やカスタム JumpStart プログラムで使用するパッケージは、次の要件に準拠していなければなりません。
ユーザー入力なしでカスタム JumpStart インストールまたはアップグレードが可能である。
動作中の現在のシステムが変更されない。これは、Solaris Live Upgrade を使用する場合に必要です。
以下に、代替ルート (/) 要件に準拠する必要性を説明します。
オペレーティングシステムのインストールを正しく行うためには、パッケージが代替ルート (/) の指定子を正しく認識する必要があります。
パッケージの pkgmap ファイル (パッケージマップ) には、絶対パスを指定できます。これらのパスが存在する場合、そのファイルは、pkgadd コマンドの - R オプションとの相対パスに書き込まれます。絶対パスと相対 (再配置可能) パスが両方とも指定されているパッケージは、代替ルート (/) にもインストールできます。絶対ファイルであれ再配置可能ファイルであれ、その前には $PKG_INSTALL_ROOT が付加されるため、pkgadd によるインストールでは、すべてのパスが正しく解釈されます。
pkgadd - R オプションを使ってパッケージをインストールしたり、pkgrm - R オプションを使ってパッケージを削除する場合には、パッケージが、動作中のシステムを変更してはなりません。
さらに、pkgadd - R オプションを使ってパッケージをインストールしたり、pkgrm - R オプションを使ってパッケージを削除する場合には、パッケージに添付されているスクリプトで、動作中のシステムを変更してはなりません。インストールスクリプトを作成する場合には、そのスクリプトで、$PKG_INSTALL_ROOT 変数が前に付加されたディレクトリまたはファイルを参照する必要があります。パッケージでは、書き込むすべてのディレクトリやファイルの前に $PKG_INSTALL_ROOT を付加する必要があります。さらに、パッケージでは、$PKG_INSTALL_ROOT 接頭辞を付加せずにディレクトリを削除すべきではありません。表 C-2 に、スクリプトの正しい構文を示します。
表 C-2 インストールスクリプト構文の例
$PKG_INSTALL_ROOT は、パッケージを追加しようとするマシンのルート (/) ファイルシステムの場所です。この値は、pkgadd コマンドの -R 引数の後にセットされます。たとえば、次のコマンドを実行すると、パッケージのインストール時に $PKG_INSTALL_ROOT の値は /a にセットされます。
# pkgadd -R /a SUNWvxvm |
$BASEDIR は、再配置可能なパッケージオブジェクトがインストールされる再配置可能なベースディレクトリを指しています。 ここにインストールされるのは、再配置可能オブジェクトだけです。再配置可能でないオブジェクト (pkgmap ファイルに 絶対パスが指定されているオブジェクト) は、代替ルート (/) の相対パスにインストールされます。$BASEDIR との相対パスにはインストールされません。再配置可能なオブジェクトがないパッケージは、絶対パッケージ (非再配置可能) と呼ばれます。その場合、$BASEDIR は未定義であるため、これをパッケージに添付されているスクリプトで使用することはできません。
たとえば、パッケージの pkgmap ファイルに次のエントリがあるとします。
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
さらに、pkginfo ファイルには、 $BASEDIR が次のように指定されているとします。
BASEDIR=/opt |
このパッケージを次のコマンドでインストールすると、 ls は、 /a/opt/sbin/ls としてインストールされますが、 ls2 は、 /a/sbin/ls2 としてインストールされます。
# pkgadd -R /a SUNWtest |