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 supresió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 órdenes, 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 órdenes UNIX, como expr, cp y ls, y otras órdenes 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 la orden pkgadd emplea para ejecutar las secuencias de procedimiento.
Las secuencias de procedimiento de los paquetes no deben llamar a órdenes agregadas en la versión 2.6 o posterior. Por ejemplo, las secuencias de procedimiento de paquetes no pueden llamar a la orden pgrep. Desde la versión 2.6, se han agregado características adicionales a muchas de las órdenes. Las secuencias de procedimiento de paquetes no deben utilizar opciones de orden que no existiesen en la versión 2.6. Por ejemplo, la opción -f de la orden umount se agregó en la versión Solaris 7. Si desea comprobar la compatibilidad de una orden u opción en la versión 2.6, consulte el documento 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 la siguiente orden.
# 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 la orden 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 la orden pkgadd. Una vez instalado un paquete se debe verificar su corrección mediante la orden 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 órdenes incorporadas en el propio paquete. El motivo es mantener la compatibilidad con clientes sin disco y evitar la ejecución de órdenes 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 diversas órdenes. Por ejemplo, las órdenes dircmp o fssnap se pueden usar para verificar el comportamiento adecuado de los paquetes. Asimismo, la orden 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. Las órdenes 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, la orden 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 información detallada acerca de las órdenes a las que se hace referencia en esta sección, consulte las páginas de comando man dircmp(1), fssnap(1M), ps(1), truss(1), pkgadd(1M), pkgchk(1M) o pkgrm(1M).