Este apéndice está dirigido a administradores de sistema que instalan o eliminan paquetes, especialmente los de otros fabricantes. Si se cumplen estos requisitos de paquetes permite lo siguiente:
Evita la modificación del sistema que se está ejecutando en la actualidad, de forma que puede utilizar la Modernización automática de Solaris y crear y mantener zonas no globales y clientes sin disco
Evita que un paquete sea interactivo para automatizar las instalaciones cuando se utilizan los programas de instalación como JumpStart personalizado
Este capítulo incluye los siguientes apartados:
Si se cumplen los requisitos en esta sección, se mantendrá el sistema operativo que se está ejecutando en la actualidad sin modificar.
Para que se realice la instalación de un sistema operativo con éxito, los paquetes deben reconocer y respetar correctamente los sistemas de archivos root (/) como un entorno de arranque inactivo de Modernización automática de Solaris.
Los paquetes pueden incluir rutas absolutas en su archivo pkgmap (mapa del paquete). Si dichos archivos existen, están escritos de forma relativa a la opción -R del comando pkgadd. Los paquetes que contienen tanto rutas absolutas como relativas (reubicables) se pueden instalar también en un sistema de archivos root (/). $PKG_INSTALL_ROOT se antepone tanto a los archivos absolutos como a los reubicables, de forma que todas las rutas se determinen correctamente cuando se utilice el comando pkgadd para la instalación.
Los paquetes instalados mediante el comando pkgadd -R o los que se eliminen mediante el comando pkgrm -R no deben modificar el sistema actualmente en ejecución. JumpStart personalizado, Modernización automática de Solaris, las zonas no globales y el cliente sin disco utilizan esta función.
Las secuencias de procedimiento incluidas en los paquetes que se instalen con el comando pkgadd -R o que se supriman con el comando pkgrm -R no deben modificar el sistema actualmente en ejecución. Todas las secuencias de instalación utilizadas deben hacer referencia a los directorios o archivos con el prefijo indicado por la variable $PKG_INSTALL_ROOT. El paquete debe escribir todos los directorios y archivos con el prefijo $PKG_INSTALL_ROOT. El paquete no debe eliminar directorios sin un prefijo $PKG_INSTALL_ROOT.
Tabla B–1 proporciona ejemplos de sintaxis de secuencias.
Tabla B–1 Ejemplos de sintaxis en secuencias de instalación
$PKG_INSTALL_ROOT es la ubicación del sistema de archivos root (/) del equipo al que se va a agregar el paquete. Ésta se adjunta al argumento de -R del comando pkgadd. Por ejemplo, si se ejecuta el siguiente comando, entonces $PKG_INSTALL_ROOT se convierte en /a durante la instalación del paquete.
# pkgadd -R /a SUNWvxvm |
$BASEDIR señala al directorio base reubicable en el que se instalan los objetos de paquete reubicables. Sólo se instalan aquí los objetos reubicables. Los objetos no reubicables (aquéllos con rutas absolutas en el archivo pkgmap) se instalan siempre de forma relativa al entorno de arranque inactivo, pero no de forma relativa al $BASEDIR vigente. Si un paquete no contiene objetos reubicables, se denomina paquete absoluto (o no reubicable) y $BASEDIR no está definida, ni está disponible para las secuencias de procedimientos de paquetes.
Por ejemplo, supongamos que el archivo pkgmap de un paquete tiene dos entradas:
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
El archivo pkginfo tiene una especificación para $BASEDIR:
BASEDIR=/opt |
Si este paquete se instala con la siguiente orden, ls se instala en /a/opt/sbin/ls, pero ls2 se instala como /a/sbin/ls2.
# pkgadd -R /a SUNWtest |
Las secuencias de procedimientos de paquetes deben ser independientes del sistema operativo que se esté ejecutando en la actualidad para evitar modificarlo. 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.
Tabla B–2 Directrices para crear secuencias de comandos
Directrices |
Afecta a la Modernización automática de Solaris |
Afecta a zonas no globales |
---|---|---|
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. |
X |
X |
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. |
X |
X |
Las secuencias pueden usar otros comandos UNIX estándares como, por ejemplo, expr, cp, ls y otros comandos que faciliten el uso de las secuencias de comandos shell. |
X |
X |
Todos los comandos que se ejecuten mediante una secuencia de comandos deben estar disponibles en todas las versiones compatibles, ya que los paquetes deben poder ejecutarse en todas las versiones. Por lo tanto, no se pueden usar comandos que se hayan agregado o eliminado en versiones de Solaris posteriores a la 8. Para comprobar si una opción o un comando en concreto se puede usar en Solaris 8, 9 o 10, consulte la versión específica de Solaris Reference Manual AnswerBook en http://docs.sun.com. |
X |
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.
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.
Después de crear un paquete, es necesario probarlo instalándolo en un sistema de archivos root (/) alternativo usando la opción -R dir_name para 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.
Si un paquete existe en /export/SUNWvxvm, deberá emitir el comando siguiente:
# pkgchk -d /export SUNWvxvm |
No se debe mostrar ningún error.
Otros comandos pueden comprobar el paquete cuando esta creando, modificando y eliminando archivos. Los comandos siguientes son algunos ejemplos.
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 siguiente ejemplo, el comando truss descarta todos los accesos de sólo lectura que no sean $TEMPDIR y muestra solamente los accesos que no sean de sólo lectura a las rutas que no se encuentran en el entorno de arranque inactivo.
# 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} |
Los paquetes se deben agregar o eliminar sin que se solicite información cuando se utilizan las siguientes utilidades estándar de Solaris.
El programa JumpStart personalizado
Modernización automática de Solaris
Programa Instalación de Solaris
Zonas Solaris
Para probar un paquete con objeto de garantizar que se instalará sin interacción del usuario, se puede configurar un nuevo archivo de administración con el comando pkgadd y la opción -a. Ésta define un archivo de administración de instalación para usarlo en lugar del predeterminado.- El uso del archivo predeterminado podría hacer que se solicite información al usuario. Se puede crear un archivo de administración que indique al comando pkgadd que haga caso omiso de las comprobaciones e instale el paquete sin confirmación por parte del usuario. Para obtener más información, consulte la página de comando man admin(4) o pkgadd(1M).
Los siguientes ejemplos muestra cómo el comando pkgadd utiliza el archivo de administración.
Si no se proporciona ningún archivo de administración, pkgadd utiliza /var/sadm/install/admin/default. El uso de este archivo puede tener como consecuencia la interacción con el usuario.
# pkgadd |
Si se proporciona un archivo de administración relativo en la línea de comandos, pkgadd busca el nombre del archivo en /var/sadm/install/admin y lo usa. En este ejemplo, el archivo de administración relativo se llama nocheck y pkgadd busca /var/sadm/install/admin/nocheck.
# pkgadd -a nocheck |
Si se proporciona un archivo absoluto, pkgadd lo usa. En este ejemplo, pkgadd busca en /tmp el archivo de administración nocheck.
# pkgadd -a /tmp/nocheck |
A continuación se indica un ejemplo de archivo de administración de instalación con la utilidad pkgadd que apenas precisa interaccionar con el usuario. A menos que el paquete necesite un espacio mayor del disponible en el sistema la utilidad pkgadd usa este archivo e instala el paquete sin solicitar más información al usuario.
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=ask setuid=nocheck confiict=nocheck action=nocheck basedir=default
Las siguientes referencias proporcionan informacion de referencia acerca de los requisitos de paquetes y sintaxis específicas de comandos.
Para obtener información específica sobre requisitos de paquetes y definiciones de terminología |
Capítulo 6, Advanced Techniques for Creating Packages de Application Packaging Developer’s Guide |
Para obtener información básica acerca de la adición y eliminación de paquetes y del archivo de administración de instalación |
Capítulo 16, Managing Software(Overview) de System Administration Guide: Basic Administration |
Para obtener información detallada acerca de los comandos especificos a los que se hacen referencia en este apéndice, consulte estas páginas de comandos man |
dircmp(1), fssnap(1M), ps(1), o truss(1) pkgadd(1M), pkgchk(1M), o pkgrm(1M) |
Si desea una visión general de la Modernización automática de Solaris |
Capítulo 6, Modernización automática de Solaris (información general) |
Si desea una visión general de JumpStart personalizado | |
Para una visión general de las zonas Solaris |