É possível criar um script final para adicionar automaticamente pacotes ou patches depois da instalação do software Solaris em um sistema. Ao adicionar pacotes com um script final, é reduzido o tempo e garante a consistência aonde os pacotes e patches são instalados em sistemas diferentes no site.
Ao utilizar os comandos pkgadd(1M) ou patchadd(1M) em scripts finais, utilize a opções -R para especificar /a como caminho raiz.
Exemplo 4–5 mostra um exemplo de um script final que adiciona pacotes.
Exemplo 4–6 mostra um exemplo de um script final que adiciona patches.
#!/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 seguir temos uma descrição de alguns comandos para esse exemplo.
O comando a seguir monta um diretório em um servidor que contém o pacote para instalar.
mount -f nfs sherlock:/export/package ${MNT} |
O comando a seguir cria um arquivo de administração de pacote temporário, admin, para forçar o comando pkgadd(1M) a não executar verificações ou solicitar perguntas ao instalar o pacote. Utilize o arquivo de administração de pacote temporário para instalação automática quando adicionar pacotes.
cat >${ADMIN_FILE} <<DONT_ASK |
O comando pkgadd a seguir adiciona o pacote utilizando a opção -a, especificando o arquivo de administração de pacote e a opção -R, especificando o caminho raiz.
/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 |
Anteriormente, o comando chroot(1M) era utilizado com os comandos pkgadd e patchadd no ambiente de script final. Em raras instâncias, alguns pacotes ou patches não trabalham com a opção -R. É necessário criar um arquivo /etc/mnttab de teste no caminho raiz /a antes de emitir o comando chroot.
Para criar um arquivo /etc/mnttab de teste, adicione a linha a seguir para o script final:
cp /etc/mnttab /a/etc/mnttab