Se puede crear una secuencia de fin para que agregue paquetes o modificaciones automáticamente después de instalar el software Solaris en el sistema. Al agregar paquetes con una secuencia de fin, se reduce el tiempo y se garantiza la coherencia en los paquetes y las modificaciones que se instalen en sistemas diferentes de la sede.
Al usar los comandos pkgadd(1M) o patchadd(1M) en las secuencias de fin, use la opción -R para especificar /a como ruta raíz.
El Ejemplo 27–2 muestra una secuencia de fin que agrega paquetes.
El Ejemplo 27–3 muestra una secuencia de fin que agrega modificaciones.
#!/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} SUNWxyz3
umount ${MNT}
rmdir ${MNT}
|
A continuación, se describen algunos comandos de este ejemplo:
El siguiente comando monta un directorio en un servidor que contiene el paquete que se instala.
mount -f nfs sherlock:/export/package ${MNT}
|
El siguiente comando crea un archivo de administración de paquetes temporal, admin, para obligar al comando pkgadd(1M) a que no realice comprobaciones ni haga preguntas durante la instalación de un paquete. El archivo temporal de administración de paquetes se utiliza para realizar una instalación automática durante la adición de paquetes.
cat>${ADMIN_FILE} <<DONT_ASK
|
El comando pkgadd mostrado a continuación agrega el paquete utilizando la opción -a, que especifica el archivo de administración del paquete, y la opción -R, que especifica la ruta hacia la raíz.
/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
|
Antes se usaba el comando chroot(1M) con los comandos pkgadd y patchadd en el entorno de secuencias de fin. En raras ocasiones, algunos paquetes o modificaciones no funcionan con la opción -R. Debe crear un archivo /etc/mnttab ficticio en la ruta de raíz /a antes de emitir el comando chroot.
Para crear un archivo /etc/mnttab ficticio, agregue la línea siguiente a la secuencia de inicio:
cp /etc/mnttab /a/etc/mnttab