finish スクリプトによるパッケージとパッチの追加
finish スクリプトを作成すると、Solaris をシステムにインストールした後に、パッケージやパッチを自動的に追加できます。これは時間を節約するだけでなく、どのパッケージやパッチがユーザーのサイトにあるさまざまなシステムにインストールされているかについての整合性を確保できます。
pkgadd(1M) コマンドや patchadd(1M) コマンドを finish スクリプトで使用するときは、-R オプションを使用して、/a をルートパスとして指定する必要があります。
例 19-1 はパッケージを追加する finish スクリプトの例を示します。
例 19-1 finish スクリプトでパッケージを追加する
#!/bin/sh
BASE=/a
MNT=/a/mnt
ADMIN_FILE=/a/tmp/admin
mkdir ${MNT}
mount -f nfs sherlock:/export/package ${MNT} [インストールするパッケージを含むサーバー上にディレクトリをマウントします。 ]
cat >${ADMIN_FILE} <<DONT_ASK [一時的なパッケージ管理ファイル admin を作成し、パッケージのインストール時に pkgadd(1M) コマンドがチェックを行わない (および、質問を表示しない) ようにします。これにより、パッケージ追加時に自動インストールを実行できます。]
mail=root
instance=overwrite
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=ask
setuid=nocheck
conflict=nocheck
action=nocheck
basedir=default
DONT_ASK
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz [-a オプション (パッケージ管理ファイルを指定) と -R オプション (ルートパスを指定) を使用してパッケージを追加します。 ]
umount ${MNT}
rmdir ${MNT}
|
注 - 以前は finish スクリプト環境では、pkgadd コマンドや patchadd コマンドとともに chroot(1M) コマンドが使用されていました。これは推奨する方法ではありませんが、一部のパッケージやパッチには、-R オプションが正しく動作しないものもあります。このような状況では、chroot コマンドを使用する前に、仮の /etc/mnttab ファイルを /a ルートパスに作成する必要があります。
/etc/mnttab ダミーファイルを作成するには、次の行を finish スクリプトに追加します。
cp /etc/mnttab /a/etc/mnttab