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 patch.
#!/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 # ######## # La posizione delle patch da aggiungere al sistema dopo l'installazione. # La versione (5.x) e l'architettura (`mach`) saranno aggiunte alla # radice. Ad esempio, /foo su un sistema SPARC 8 diventa /foo/5.8/sparc LUPATCHHOST=ins3525-svr LUPATCHPATHROOT=/export/solaris/patchdb ######### # # NESSUNA PARTE SU CUI È POSSIBILE ESEGUIRE # LA MANUTENZIONE OLTRE QUESTO PUNTO # ######### BASEDIR=/a # Determina le versioni del SO di origine e destinazione echo Determining OS revisions... SRCREV=`uname -r` echo Source $SRCREV LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach` # # Aggiunge le patch necessarie # 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