Guía de instalación de Oracle Solaris 10 9/10: Instalaciones JumpStart personalizadas y avanzadas

Apéndice B Requisitos de empaquetado SVR4 adicionales (referencia)

Este apéndice está dirigido a administradores del sistema que instalan o eliminan paquetes, especialmente los datos de otros fabricantes. Si se cumplen estos requisitos de paquetes permite lo siguiente:

Este capítulo incluye los siguientes apartados:

Cómo evitar la modificación el sistema operativo actual

Si se cumplen los requisitos en esta sección, se mantendrá el sistema operativo que se está ejecutando en la actualidad sin modificar.

Utilización de rutas absolutas

Para que se realice la instalación de un sistema operativo con éxito, los paquetes deben reconocer y respetar correctamente los sistemas de archivos raíz (/) como un entorno de inicio inactivo de Actualizació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 raíz (/) alternativo. $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.

Utilización del comando pkgadd -R

Los paquetes instalados mediante el comando pkgadd -R o los que se eliminen con la opción pkgrm -R no deben modificar el sistema actualmente en ejecución. JumpStart personalizado, Actualización automática de Solaris, las zonas no globales y el cliente sin disco utilizan esta función.

Las secuencias de comandos incluidas en los paquetes que se instalen con el comando pkgadd -R o que se eliminen con el comando pkgrm -R no deben modificar el sistema 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.

La Tabla B–1 proporciona ejemplos de sintaxis de secuencias.

Tabla B–1 Ejemplos de sintaxis en secuencias de instalación

Tipo de secuencia 

Sintaxis correcta 

Sintaxis incorrecta 

Fragmentos de sentencias "if" en el shell Bourne 

if [ -f ${PKG_INSTALL_ROOT}\
/etc/myproduct.conf ] ; then
if [ -f /etc/myproduct.conf ] ; \
 then

Eliminar un archivo 

/bin/rm -f ${PKG_INSTALL_ROOT}\
/etc/myproduct.conf
/bin/rm -f /etc/myproduct.conf 

Cambiar un archivo 

echo "test=no" > ${PKG_INSTALL_ROOT}\
/etc/myproduct.conf
echo "test=no" > \
/etc/myproduct.conf

Información general acerca de las diferencias entre $PKG_INSTALL_ROOT y $BASEDIR

$PKG_INSTALL_ROOT es la ubicación del sistema de archivos raíz (/) 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 en relación con el entorno de inicio inactivo, pero no en relación con el directorio $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 el siguiente comando, ls se instala en /a/opt/sbin/ls, pero ls2 se instala como /a/sbin/ls2.


# pkgadd -R /a SUNWtest

Directrices para escribir secuencias

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

Directrices 

Afecta al programa Actualizació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.

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 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.

Todos los comandos que se ejecuten mediante una secuencia de comandos deben estar disponibles en todas las versiones, ya que los paquetes deben poder ejecutarse en todas las versiones. Por consiguiente, 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 .

 

Mantenimiento de compatibilidad de clientes sin disco

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.

Verificación de paquetes

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 dir_name pkg_name
nombre_directorio

Especifica el nombre del directorio en el que reside el paquete.

nombre_paquete

Especifica el nombre del paquete.


Ejemplo B–1 Comprobación de un paquete

Después de crear un paquete, es necesario probarlo instalándolo en una ubicación alternativa del sistema de archivos raíz (/) mediante la opción -R nombre_directorio en pkgadd. Una vez instalado el 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.



Ejemplo B–2 Comprobación de un paquete en /export/SUNWvxvm

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.


# 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}

Cómo evitar la interacción del usuario cuando se realiza la instalación o actualización

Los paquetes se deben agregar o eliminar sin que se solicite información cuando se utilizan las siguientes utilidades estándar de 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 del comando man admin(4) o pkgadd(1M).

Los siguientes ejemplos muestra cómo el comando pkgadd utiliza el archivo de administración.


Ejemplo B–3 Archivo de administración de instalación

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

Configuración de los parámetros de los paquetes para las zonas

Los paquetes presentan parámetros que controlan cómo se distribuye y se hace visible el contenido en un sistema con zonas no globales instaladas. Los parámetros de paquetes SUNW_PKG_ALLZONES, SUNW_PKG_HOLLOW y SUNW_PKG_THISZONE definen las características de los paquetes en un sistema con zonas instaladas. Deben establecerse estos parámetros para que puedan administrarse los paquetes en un sistema con zonas no globales.

La siguiente tabla muestra cuatro combinaciones válidas para establecer los parámetros de los paquetes. Si decide establecer combinaciones que no aparecen en la siguiente tabla, esa configuración no será válida y provocará que no se pueda instalar el paquete.


Nota –

Asegúrese de establecer los tres parámetros de los paquetes. Puede dejar en blanco los tres parámetros de los paquetes. Las herramientas de los paquetes consideran los parámetros de paquetes de las zonas que no se han configurado como si se hubieran establecido en "false", por lo que no es recomendable dejar de configurar los parámetros. Al establecer los tres parámetros de los paquetes, se especifica el comportamiento que las herramientas de los paquetes deben mostrar cuando se instala o se elimina un paquete.


Tabla B–3 Parámetros de configuración de los paquetes válidos para las zonas

Parámetro SUNW_PKG_ALLZONES

Parámetro SUNW_PKG_HOLLOW

Parámetro SUNW_PKG_THISZONE

Descripción de los paquetes 

false 

false 

false 

Ésta es la configuración predeterminada de los paquetes cuando no se especifican valores para todos los parámetros de los paquetes de las zonas. 

Puede instalarse un paquete con esta configuración en la zona global o en una zona no global.  

  • Si el comando pkgadd se ejecuta en una zona global, el paquete se instala en la zona global y en todas las zonas no globales.

  • Si el comando pkgadd se ejecuta en una zona no global, el paquete se instala sólo en la zona no global.

En ambos casos, todo el contenido del paquete está visible en todas las zonas en la que se ha instalado el paquete. 

false 

false 

true 

Puede instalarse un paquete con esta configuración en la zona global o en una zona no global. Si se crean nuevas zonas no globales después de la instalación, el paquete no se propaga a estas nuevas zonas. 

  • Si el comando pkgadd se ejecuta en la zona global, el paquete se instala sólo en la zona global.

  • Si el comando pkgadd se ejecuta en una zona no global, el paquete se instala sólo en la zona no global.

En ambos casos, todo el contenido del paquete está visible en la zona en la que se ha instalado el paquete. 

true 

false 

false 

Un paquete con esta configuración sólo puede instalarse en la zona global. Al ejecutar el comando pkgadd, el paquete se instala en la zona global y en todas las zonas no globales. Todo el contenido del paquete está visible en todas las zonas.


Nota –

Cualquier intento de instalar el paquete en una zona no global fallará.


true 

true 

false 

Un paquete con esta configuración sólo puede instalarlo el administrador global en una zona global. Al ejecutar el comando pkgadd, el contenido del paquete se instala por completo en la zona global. Si se han establecido los parámetros del paquete en estos valores, el contenido del paquete no se enviará a ninguna zona no global. Sólo se instala en todas las zonas no globales la información de instalación del paquete necesaria para que parezca que se ha instalado el paquete. Esto permite la instalación de los demás paquetes que dependen de este paquete. Para obtener más información sobre los paquetes "vacíos", consulte el Capítulo 25, Paquetes y parches en un sistema Solaris con zonas instaladas (descripción general) de Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris.

Parece que el paquete se ha instalado en todas las zonas con el fin de comprobar la dependencia de los paquetes. 

  • En la zona global, todo el contenido del paquete está visible.

  • En las zonas no globales raíz completas, no está visible todo el contenido completo del paquete.

  • Cuando una zona no global hereda un sistema de archivos de la zona global, el paquete instalado en este sistema de archivos estará visible en una zona no global. Todos los demás archivos proporcionados por el paquete no estarán visibles en la zona no global.

    Por ejemplo, una zona no global raíz dispersa comparte determinados directorios con la zona global. Estos directorios son de sólo lectura. Las zonas no globales raíz dispersas comparten el sistema de archivos /platform con otras zonas. Otro ejemplo serían los paquetes que envían los archivos pertinentes sólo al hardware de inicio.


Nota –

Cualquier intento de instalar el paquete en una zona no global fallará.


Descripción 

Para obtener más información 

Para obtener más información sobre los paquetes y las zonas 

Capítulo 25, Paquetes y parches en un sistema Solaris con zonas instaladas (descripción general) de Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris

Para obtener información general sobre las zonas raíz completas y dispersas 

Capítulo 16, Introducción a Solaris Zones de Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris

Para obtener información sobre las características y los parámetros de los paquetes 

pkginfo(4)

Para obtener información sobre cómo mostrar los valores de los parámetros de los paquetes 

pkgparam(1)

Para obtener información de referencia

Las siguientes referencias proporcionan información 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, Técnicas avanzadas para la creación de paquetes de Guía del desarrollador para la creación de paquetes de aplicaciones

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 20, Managing Software (Overview) de System Administration Guide: Basic Administration

Para obtener información detallada acerca de los comandos específicos a los que se hace 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 descripción general de Actualización automática de Solaris 

Capítulo 2, Actualización automática de Solaris (descripción general) de Guía de instalación de Oracle Solaris 10 9/10: Actualización automática de Solaris y planificación de la actualización

Si desea una visión general de JumpStart personalizado 

Capítulo 2JumpStart personalizada (información general)

Para una descripción general de Zonas de Solaris 

Capítulo 16, Introducción a Solaris Zones de Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris