Solaris 9 설치 설명서

finish 스크립트를 사용하여 패키지나 패치 추가

Solaris 소프트웨어가 시스템에 설치된 뒤 자동으로 패키지나 패치를 추가하는 finish 스크립트를 작성할 수 있습니다. finish 스크립트를 사용하여 패키지를 추가함으로써 시간을 절약하고 사이트의 서로 다른 시스템들에 설치되는 패키지와 패치의 일관성을 보장할 수 있습니다.

finish 스크립트의 pkgadd(1M) 또는 patchadd(1M) 명령을 사용할 때 - R 옵션을 사용해 /a를 루트 경로로 지정하십시오.


예 24–2 finish 스크립트를 사용하여 패키지 추가

  #!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
  mount -f nfs sherlock:/export/package ${MNT}1
  cat>${ADMIN_FILE} <<DONT_ASK2
  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} SUNWxyz3 
  umount ${MNT}
  rmdir ${MNT}
  1. 설치할 패키지가 포함되어 있는 서버에 디렉토리를 마운트합니다.

  2. 임시 패키지 관리 파일인 admin을 만들어 pkgadd(1M) 명령이 패키지를 설치할 때 체크를 수행하거나 질문을 하지 않도록 하십시오. 패키지를 추가할 때 임시 패키지 관리 파일을 사용하여 자동 설치를 관리합니다.

  3. -a 옵션으로 패키지 관리 파일을 지정하고 -R 옵션으로 루트 경로를 지정하여 패키지를 추가합니다.



예 24–3 finish 스크립트를 사용하여 패치 추가

 #!/bin/sh 

########
#
# USER-CONFIGURABLE OPTIONS
#
########

# The location of the patches to add to the system after it's installed.
# The OS rev (5.x) and the architecture (`mach`) will be added to the
# root.  For example, /foo on a 2.6 SPARC would turn into /foo/5.6/sparc
LUPATCHHOST=ins3525-svr
LUPATCHPATHROOT=/export/solaris/patchdb
#########
#
# NO USER-SERVICEABLE PARTS PAST THIS POINT
#
#########

BASEDIR=/a

# Figure out the source and target OS versions
echo Determining OS revisions...
SRCREV=`uname -r`
echo Source $SRCREV

LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach`

#
# Add the patches needed
#
echo Adding OS patches
mount $LUPATCHHOST:$LUPATCHPATH /mnt>/dev/null 2>&1
if [ $? = 0 ] ; then
	for patch in `cat /mnt/*Recommended/patch_order` ; do
		(cd /mnt/*Recommended/$patch ; echo yes | patchadd -u -d -R $BASEDIR .)
	done
	cd /tmp
	umount /mnt
else
	echo "No patches found"
if


주 –

과거에는 chroot(1M) 명령을 finish 스크립트 환경에서 pkgaddpatchadd 명령과 함께 사용해야 했습니다. 드물지만 일부 패키지나 패치는 -R 옵션과 함께 작동하지 않습니다. chroot 명령을 내리기 전에 /a 루트 경로에서 임시 /etc/mnttab 파일을 작성해야 합니다.

임시 /etc/mnttab 파일을 작성하려면 다음 행을 finish 스크립트에 추가합니다.

cp /etc/mnttab /a/etc/mnttab