Al crear un entorno de arranque nuevo con la Modernización automática de Solaris, siga estas directrices para evitar posibles problemas.
Las secuencias de procedimientos de paquetes deben ser independientes del actual sistema operativo activo. Las secuencias de procedimiento definen acciones que tienen lugar en instantes específicos durante la instalación o eliminación de paquetes. Se pueden crear cuatro secuencias de procedimiento con estos nombres predefinidos: preinstall, postinstall, preremove y postremove. Las secuencias de procedimiento de paquetes deben ser independientes del actual sistema operativo activo porque la Modernización automática de Solaris puede cambiar a un entorno de arranque inactivo.
Estas secuencias no deben iniciar ni parar ningún proceso, ni depender de la salida de comandos, como ps o truss, que dependen del sistema operativo y transmiten información acerca del sistema actualmente en ejecución.
Las secuencias de procedimiento pueden utilizar libremente comandos UNIX, como expr, cp y ls, y otros comandos que faciliten la elaboración de secuencias de shell. Sin embargo, el entorno de arranque inactivo no se debe modificar, salvo según se indica en las reglas de la sección Requisitos de entorno de arranque inactivo para el programa JumpStart personalizado y la Modernización automática de Solaris.
Todas las secuencias deben escribirse en el shell Bourne (/bin/sh). Éste es el intérprete que el comando pkgadd emplea para ejecutar las secuencias de procedimiento.
Las secuencias de procedimiento de los paquetes no deben llamar a comandos agregados en la versión 2.6 o posterior. Por ejemplo, las secuencias de procedimiento de paquetes no pueden llamar al comando pgrep. Desde la versión 2.6, se han agregado características adicionales a muchos de los comandos. Las secuencias de procedimiento de paquetes no deben utilizar opciones de comando que no existiesen en la versión 2.6. Por ejemplo, la opción -f del comando umount se agregó en la versión Solaris 7. Para comprobar si un comando u opción específicos se admiten en la versión Solaris 2.6, consulte Solaris 2.6 Reference Manual AnswerBook en http://docs.sun.com.
Todos los paquetes deben pasar la validación de pkgchk. Una vez creado un paquete, y antes de instalarlo, se debe verificar mediante el siguiente comando.
# pkgchk -d nombre_directorio nombre_paquete |
Especifica el nombre del directorio en el que reside el paquete.
Especifica el nombre del paquete.
Por ejemplo, si un paquete existe en /export/SUNWvxvm, deberá emitir el comando siguiente:
# pkgchk -d /export SUNWvxvm |
No se debe mostrar ningún error.
Una vez creado un paquete, se debe probar mediante su instalación en una ubicación de entorno de arranque inactivo empleando la opción -R nombre_directorio con el comando pkgadd. Una vez instalado un paquete se debe verificar su corrección mediante el comando pkgchk, como en este ejemplo.
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
No se debe mostrar ningún error.
Asimismo, los paquetes no deben ejecutar comandos incorporados en el propio paquete. El motivo es mantener la compatibilidad con clientes sin disco y evitar la ejecución de comandos que puedan necesitar bibliotecas compartidas que aún no se han instalado.
Los mencionados requisitos de creación, modificación y supresión de archivos se pueden verificar mediante diversos comandos. Por ejemplo, los comandos dircmp o fssnap se pueden usar para verificar el comportamiento adecuado de los paquetes. Asimismo, el comando ps se puede utilizar para verificar la compatibilidad con daemons, empleándolo para asegurarse de que el paquete no inicia ni detiene ningún daemon. Los comandos truss, pkgadd -v y pkgrm pueden usarse para comprobar la compatibilidad de la instalación del paquete en tiempo de ejecución, pero es posible que no funcionen en todas las situaciones. En el ejemplo siguiente, el comando truss prescinde de todos los accesos de sólo lectura o que no sean a $TEMPDIR y muestra únicamente aquellos accesos que no son de sólo lectura a rutas ubicadas fuera del entorno de arranque inactivo especificado.
# TEMPDIR=/a; export TEMPDIR # truss -t open /usr/sbin/pkgadd -R ${TEMPDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${TEMPDIR} |
Para obtener informacion detallada acerca de los comandos a los que se hace referencia en esta seccion, consulte las páginas de comando man dircmp(1), fssnap(1M), ps(1), truss(1), pkgadd(1M), pkgchk(1M) o pkgrm(1M).