Solaris のインストール (上級編)

パッケージとパッチの追加

finish スクリプトを作成すると、Solaris をシステムにインストールした後に、パッケージやパッチを自動的に追加できます。これは時間を節約するだけでなく、どのパッケージやパッチがユーザーのサイトにあるさまざまなシステムにインストールされているかについての整合性を確保できます。pkgadd(1M) コマンドや patchadd(1M) コマンドを finish スクリプトで使用するときは、-R オプションを使用して、/a をルートパスとして指定しなければなりません。

次に、パッケージを追加する finish スクリプトの例を示します。

	#!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
 [インストールするパッケージを含むサーバー上にディレクトリをマウントします。 ]  mount -f nfs sherlock:/export/package ${MNT}
 [一時的なパッケージ管理ファイル patchadd(1M) を作成し、パッケージのインストール時に pkgadd(1M) コマンドがチェックを行わない (および、質問を表示しない) ようにします。これにより、パッケージ追加時に自動インストールを実行できます。]  cat >${ADMIN_FILE} <<DONT_ASK
  mail=root
  instance=overwrite
  partial=nocheck
  runlevel=nocheck
  idepend=nocheck
  rdepend=nocheck
  space=ask
  setuid=nocheck
  conflict=nocheck
  action=nocheck
  basedir=default
  DONT_ASK
 
 [-a オプション (パッケージ管理ファイルを指定) と -R オプション (ルートパスを指定) を使用してパッケージを追加します。  ]  /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz
 
  umount ${MNT}
  rmdir ${MNT}

以前は finish スクリプト環境では、pkgadd コマンドや patchadd コマンドとともに chroot(1M) コマンドが使用されていました。これは推奨する方法ではありませんが、一部のパッケージやパッチには、-R オプションが正しく動作しないものもあります。このような状況では、chroot コマンドを使用する前に、仮の /etc/mnttab ファイルを /a ルートパスに作成しなければなりません。最も簡単な方法は、次の行を finish スクリプトに追加することです。


cp /etc/mnttab /a/etc/mnttab