Solaris 소프트웨어가 시스템에 설치된 뒤 자동으로 패키지나 패치를 추가하는 종료 스크립트를 만들 수 있습니다. 종료 스크립트를 사용하여 패키지를 추가함으로써 시간을 절약하고 사이트의 서로 다른 시스템들에 설치되는 패키지와 패치의 일관성을 보장할 수 있습니다.
pkgadd(1M) 또는 patchadd(1M) 명령을 종료 스크립트에 사용하는 경우 -R 옵션을 사용하여 /a를 루트 경로로 지정합니다.
#!/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 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 umount ${MNT} rmdir ${MNT} |
다음에서는 이 예의 일부 명령어에 대해 설명합니다.
다음 명령어는 설치할 패키지가 포함되어 있는 서버에 디렉토리를 마운트합니다.
mount -f nfs sherlock:/export/package ${MNT} |
다음 명령어는 임시 패키지 관리 파일인 admin을 만들어 pkgadd(1M) 명령어가 패키지를 설치할 때 확인을 수행하거나 질문을 하지 않도록 합니다. 패키지를 추가할 때 임시 패키지 관리 파일을 사용하여 자동 설치를 관리합니다.
cat >${ADMIN_FILE} <<DONT_ASK |
다음의 pkgadd 명령어는 -a 옵션(패키지 관리 파일 지정)과 -R 옵션(루트 경로 지정)을 사용하여 패키지를 추가합니다.
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz |
#!/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 8 SPARC would turn into /foo/5.8/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) 종료 스크립트 환경에서 pkgadd 및 patchadd 명령어와 함께 사용되었습니다. 드물지만 일부 패키지나 패치는 -R 옵션과 함께 작동하지 않습니다. chroot 명령을 내리기 전에 /a 루트 경로에서 임시 /etc/mnttab 파일을 작성해야 합니다.
임시 /etc/mnttab 파일을 만들려면 종료 스크립트에 다음 행을 추가합니다.
cp /etc/mnttab /a/etc/mnttab