Uno script finale può essere usato per aggiungere automaticamente pacchetti o patch al sistema dopo l'installazione di Solaris. Usando uno script finale, si riducono i tempi delle procedure e si ha la certezza di installare gli stessi pacchetti e le stesse patch su tutti i sistemi del sito.
Quando si utilizzano i comandi pkgadd(1M) o patchadd(1M) in uno script finale, è consigliabile usare l'opzione -R per specificare /a come percorso radice.
L'Esempio 4–3 mostra uno script finale che aggiunge una serie di pacchetti.
L'Esempio 4–4 mostra uno script finale che aggiunge una serie di pacchetti.
#!/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} |
A seguire sono descritti alcuni comandi dell'esempio.
Il comando seguente attiva una directory sul server contenente il pacchetto da installare.
mount -f nfs sherlock:/export/package ${MNT} |
Il comando seguente crea un file temporaneo per l'amministrazione dei pacchetti, di nome admin, per forzare il comando pkgadd(1M) a non eseguire controlli e a non formulare domande durante l'installazione dei pacchetti. Il file di amministrazione temporaneo permette di automatizzare la procedura di installazione dei pacchetti.
cat >${ADMIN_FILE} <<DONT_ASK |
Il seguente comando pkgadd aggiunge il pacchetto utilizzando l'opzione -a, che specifica il file di amministrazione dei pacchetti e l'opzione -R, che specifica il percorso di root.
/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 |
In passato, nell'ambiente degli script finali, insieme ai comandi pkgadd e patchadd veniva usato il comando chroot(1M) In rari casi, alcuni pacchetti o patch non funzionano con l'opzione -R. In questi casi è necessario creare un file /etc/mnttab fittizio nel percorso radice /a prima di eseguire il comando chroot.
Per creare un file /etc/mnttab fittizio, aggiungere la riga seguente allo script finale:
cp /etc/mnttab /a/etc/mnttab