Du kan skriva ett slutskript som automatiskt lägger till paket eller korrigeringsfiler när Solaris har installerats på ett system. Installationen går snabbare om du lägger till paket i ett slutskript, och du ser dessutom till att platsens olika system är konsekvent utformade beträffande paket och korrigeringsfiler.
När du använder kommandona pkgadd(1M) eller patchadd(1M) i slutskript använder du alternativet -R för att ange /a som rotsökväg.
Exempel 7–3 visar ett exempel på ett slutskript som lägger till paket.
Exempel 7–4 visar ett exempel på ett slutskript som lägger till korrigeringsfiler.
#!/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} |
Följande är beskrivningar av några kommandon för det här exemplet.
Följande kommando monterar en katalog på en server som innehåller paketet som ska installeras.
mount -f nfs sherlock:/export/package ${MNT} |
Följande kommando skapar en temporär administrationsfil, admin, som förhindrar att kommandot pkgadd(1M) utför kontroller eller ställer frågor när ett paket installeras. Använd den temporära paketadministrationsfilen om du vill lägga till paket automatiskt.
cat >${ADMIN_FILE} <<DONT_ASK |
Kommandot pkgadd (nedan) lägger till paketet genom att använda alternativet -a, som anger paketadministrationsfilen, samt alternativet -R, som anger rotsökvägen.
/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 |
Tidigare användes kommandot chroot(1M) tillsammans med kommandona pkgadd och patchadd i slutskriptsmiljön. I sällsynta fall går det inte att använda alternativet -R med vissa paket eller korrigeringsfiler. Du måste skapa slaskfilen /etc/mnttab i rotsökvägen /a innan du kör kommandot chroot.
Du skapar slaskfilen /etc/mnttab genom att lägga till följande rad i slutskriptet:
cp /etc/mnttab /a/etc/mnttab