Guía del desarrollador para la creación de paquetes de aplicaciones

Creación de secuencias de comandos de instalación

En esta sección se tratan las secuencias de comandos de instalación de paquetes optativos. El comando pkgadd ejecuta automáticamente todas las acciones necesarias para instalar un paquete mediante los archivos de información de paquetes como entrada. No es necesario que suministre secuencias de comandos de instalación de paquetes. Sin embargo, si desea crear procedimientos de instalación personalizados para su paquete, puede hacerlo con secuencias de comandos de instalación. Secuencias de comandos de instalación:

Hay cuatro tipos de secuencias de comandos de instalación con los que puede llevar a cabo acciones personalizadas:

Proceso de secuencias de comandos durante la instalación de paquetes

El tipo de secuencias de comandos que utilice depende de cuándo se necesite la acción de la secuencia de comandos durante el proceso de instalación. Al instalar un paquete, el comando pkgadd ejecuta los pasos siguientes:

  1. Ejecuta la secuencia de comandos request.

    Este paso es el único punto en que su paquete puede solicitar alguna acción del administrador que esté instalando el paquete.

  2. Ejecuta la secuencia de comandos checkinstall.

    La secuencia de comandos checkinstall reúne datos del sistema de archivos y puede crear o modificar definiciones de variables de entorno para controlar la instalación posterior. Para obtener más información sobre las variables de entorno del paquete, consulte Variables de entorno de paquetes.

  3. Ejecuta la secuencia de comandos preinstall.

  4. Instala objetos del paquete, para cada clase que se vaya a instalar.

    La instalación de estos archivos se produce clase a clase; las secuencias de comandos de acción de clase se ejecutan consecuentemente. La lista de clases en las que se trabaja y el orden en el que se deben instalar se define inicialmente con el parámetro CLASSES en el archivo pkginfo. Sin embargo, la secuencia de comandos request o checkinstall puede cambiar el valor del parámetro CLASSES. Para obtener más información sobre cómo se procesan las clases durante la instalación, consulte Cómo se procesan las clases durante la instalación de los paquetes.

    1. Crea vínculos simbólicos, dispositivos, conducciones con nombre y los directorios necesarios.

    2. Instala los archivos regulares (tipos de archivos e, v, f), de acuerdo con su clase

      Sólo se pasan archivos regulares para instalar a la secuencia de comandos de acción de clase. Todos los demás objetos de paquetes se crean de forma automática a partir de la información del archivo pkgmap.

    3. Crea todos los vínculos físicos.

  5. Ejecuta la secuencia de comandos postinstall.

Proceso de secuencia de comandos durante la eliminación de paquetes

Cuando se suprime un paquete, el comando pkgrm ejecuta estos pasos:

  1. Ejecuta la secuencia de comandos preremove.

  2. Suprime los objetos de paquetes para cada clase

    La eliminación también se produce clase a clase. Las secuencias de comandos de eliminación también se procesan en el orden inverso de la instalación, de acuerdo con la secuencia definida en el parámetro CLASSES. Para obtener más información sobre cómo se procesan las clases durante la instalación, consulte Cómo se procesan las clases durante la instalación de los paquetes.

    1. Suprime los vínculos físicos.

    2. Suprime los archivos regulares.

    3. Suprime los vínculos simbólicos, los dispositivos y las conducciones con nombre.

  3. Ejecuta la secuencia de comandos postremove.

La secuencia de comandos request no se procesa en el tiempo de la supresión de paquetes. Sin embargo, la salida de la secuencia de comandos se retiene en el paquete instalado y queda disponible para las secuencias de comandos de supresión. La salida de la secuencia de comandos request es una lista de variables de entorno.

Variables de entorno de paquetes disponibles para las secuencias de comandos

Los grupos siguientes de variables de entorno están disponibles para todas las secuencias de comandos de instalación. Algunas de las variables de entorno se pueden modificar mediante una secuencia de comandos request o checkinstall.

Obtención de información del paquete para una secuencia de comandos

Se pueden usar dos comandos de secuencias de comandos para solicitar información sobre un paquete:

Códigos de salida para secuencias de comandos

Cada secuencia de comandos debe salir con uno de los códigos de salida que aparecen en la tabla siguiente.

Tabla 3–2 Instalación de códigos de salida de secuencias de comandos

Código 

Significado 

Finalización satisfactoria de la secuencia de comandos.  

Error fatal. El proceso de instalación se ha terminado en este momento.  

2  

Advertencia o condición de posible error. La instalación continúa. Aparece un mensaje de advertencia en el tiempo de la finalización.  

3  

El comando pkgadd se ha detenido de forma correcta. Sólo la secuencia de comandos checkinstall devuelve este código.

10  

Se debe reiniciar el sistema cuando la instalación de todos los paquetes seleccionados se haya completado. (Este valor se debe agregar a uno de los códigos de salida de un único dígito.)  

20  

El sistema se debe reiniciar inmediatamente al terminar la instalación del paquete actual. (Este valor se debe agregar a uno de los códigos de salida de un único dígito.)  

Consulte el Capítulo 5Casos prácticos de creación de paquetes si desea ver ejemplos de códigos de salida devueltos por las secuencias de comandos de la instalación.


Nota –

Todas las secuencias de comandos de instalación distribuidas con su paquete deben contar con una entrada en el archivo prototype. El tipo de archivo debe ser i (para la secuencia de comandos de instalación del paquete).


Escritura de una secuencia de comandos request

La secuencia de comandos request es el único modo de que su paquete pueda interactuar directamente con el administrador que lo instale. Esta secuencia de comandos se puede usar, por ejemplo, para preguntar al administrador si deben instalarse partes optativas de un paquete.

La salida de una secuencia de comandos request debe ser una lista de variables de entorno y sus valores. Esta lista puede incluir alguno de los parámetros que haya creado en el archivo pkginfo, así como los parámetros CLASSES y BASEDIR. La lista también puede presentar variables de entorno que no se hayan definido en otro lugar. Sin embargo, el archivo pkginfo debe ofrecer siempre valores predeterminados cuando convenga. Para obtener más información sobre las variables de entorno del paquete, consulte Variables de entorno de paquetes.

Cuando la secuencia de comandos request asigna valores a una variable de entorno, debe conseguir que esos valores estén disponibles para el comando pkgadd y otras secuencias de comandos de paquetes.

Comportamientos de la secuencia de comandos request

Normativa de diseño para secuencias de comandos request


Nota –

Si los administradores que instalen el paquete pudieran utilizar JumpStartTM, la instalación del paquete no debe ser interactiva. No debe proporcionar una secuencia de comandos request con su paquete, o bien debe comunicar a los administradores que deben usar el comando pkgask antes de la instalación. El comando pkgask guarda sus respuestas en la secuencia de comandos request. Para obtener más información sobre el comando pkgask, consulte la página de comando man pkgask(1M).


ProcedureCómo escribir una secuencia de comandos request

  1. Convierta el directorio que contiene sus archivos de información en el directorio de trabajo actual.

  2. Cree un archivo llamado request con su editor de textos preferido.

  3. Guarde los cambios y salga del editor cuando haya acabado.

  4. Complete una de las tareas siguientes.

  5. Construya su paquete.

    Consulte Cómo construir un paquete si fuera necesario.


Ejemplo 3–5 Escritura de una secuencia de comandos request

Cuando una secuencia de comandos request asigna valores a las variables de entorno, debe hacer que esos valores estén disponibles para el comando pkgadd. Este ejemplo muestra un segmento de secuencia de comandos request que ejecuta esta tarea para las cuatro variables de entorno: CLASSES, NCMPBIN, EMACS y NCMPMAN. Suponga que estas variables se definieron en una sesión interactiva con el administrador anteriormente, en la secuencia de comandos.


# make environment variables available to installation
# service and any other packaging script we might have
 
cat >$1 <<!
CLASSES=$CLASSES
NCMPBIN=$NCMPBIN
EMACS=$EMACS
NCMPMAN=$NCMPMAN
!

Véase también

Después de construir el paquete, instálelo para confirmar que se instala correctamente y compruebe su integridad. En el Capítulo 4Verificación y transferencia de un paquete se explican estas tareas y se ofrecen instrucciones paso a paso para transferir su paquete verificado a un medio de distribución.

Reunión de datos del sistema de archivos con la secuencia de comandos checkinstall

La secuencia de comandos checkinstall se ejecuta poco después de la secuencia de comandos request optativa. La secuencia de comandos checkinstall se ejecuta como usuario install, si dicho usuario existe, o bien como usuario nobody. La secuencia de comandos checkinstall no tiene autoridad para cambiar los datos del sistema de archivos. Sin embargo, de acuerdo con la información que la secuencia de comandos reúne, puede crear o modificar variables de entorno, con el fin de controlar el curso de la instalación resultante. La secuencia de comandos también es capaz de detener correctamente el proceso de instalación.

La secuencia de comandos checkinstall tiene como finalidad ejecutar comprobaciones básicas en un sistema de archivos que no sería normal para el comando pkgadd. Por ejemplo, esta secuencia de comandos se puede usar para determinar si algunos archivos del paquete actual sobrescribirán los archivos existentes, o bien para administrar dependencias de software general. El archivo depend sólo administra dependencias de paquetes.

A diferencia de la secuencia de comandos request, checkinstall se ejecuta independientemente de si se ha proporcionado un archivo de respuesta. La presencia de la secuencia de comandos no marca el paquete como interactivo. La secuencia de comandos checkinstall se puede usar en situaciones en las que se ha prohibido una secuencia de comandos request, o bien una interacción administrativa no es práctica.


Nota –

La secuencia de comandos checkinstall está disponible a partir de Solaris 2.5 y versiones compatibles.


Comportamientos de la secuencia de comandos checkinstall

Normativa de diseño para secuencias de comandos checkinstall

ProcedureCómo reunir datos del sistema de archivos

  1. Convierta el directorio que contiene sus archivos de información en el directorio de trabajo actual.

  2. Cree un archivo llamado checkinstall con su editor de textos preferido.

  3. Guarde los cambios y salga del editor cuando haya acabado.

  4. Complete una de las tareas siguientes.

  5. Construya su paquete.

    Consulte Cómo construir un paquete si fuera necesario.


Ejemplo 3–6 Escritura de una secuencia de comandos checkinstall

Esta secuencia de comandos de ejemplo checkinstall comprueba si el software de base de datos necesitado por el paquete SUNWcadap está instalado.


# checkinstall script for SUNWcadap
#
# This confirms the existence of the required specU database
 
# First find which database package has been installed.
pkginfo -q SUNWspcdA	# try the older one
 
if [ $? -ne 0 ]; then
   pkginfo -q SUNWspcdB	# now the latest
 
	  if [ $? -ne 0 ]; then	# oops
		    echo "No database package can be found. Please install the"
		    echo "SpecU database package and try this installation again."
		    exit 3		# Suspend
	  else
		    DBBASE="`pkgparam SUNWsbcdB BASEDIR`/db"	# new DB software
	  fi
else
	  DBBASE="`pkgparam SUNWspcdA BASEDIR`/db"	# old DB software
fi
 
# Now look for the database file we will need for this installation
if [ $DBBASE/specUlatte ]; then
	  exit 0		# all OK
else
	  echo "No database file can be found. Please create the database"
	  echo "using your installed specU software and try this"
	  echo "installation again."
	  exit 3		# Suspend
fi
 

Véase también

Después de construir el paquete, instálelo para confirmar que se instala correctamente y compruebe su integridad. En el Capítulo 4Verificación y transferencia de un paquete se explican estas tareas y se ofrecen instrucciones paso a paso para transferir su paquete verificado a un medio de distribución.

Escritura de secuencias de comandos de procedimientos

Las secuencias de comandos de procedimientos ofrecen un conjunto de instrucciones que llevar a cabo en fases concretas de la eliminación o la instalación de paquetes. Las cuatro secuencias de comandos de procedimientos deben tener uno de los nombres predefinidos, según cuándo se vayan a ejecutar las instrucciones. Las secuencias de comandos se ejecutan sin argumentos.

Comportamientos de secuencias de comandos de procedimientos

Las secuencias de comandos de procedimientos se ejecutan como uid=root y gid=other.

Normativa de diseño para secuencias de comandos de procedimientos

ProcedureCómo escribir secuencias de comandos de procedimientos

  1. Convierta el directorio que contiene sus archivos de información en el directorio de trabajo actual.

  2. Cree una o más secuencias de comandos de procedimientos con su editor de texto preferido.

    Una secuencia de comandos de procedimientos debe tener uno de los nombres predefinidos: preinstall, postinstall, preremove o postremove.

  3. Guarde los cambios y salga del editor.

  4. Complete una de las tareas siguientes.

  5. Construya su paquete.

    Consulte Cómo construir un paquete si fuera necesario.

Véase también

Después de construir el paquete, instálelo para confirmar que se instala correctamente y compruebe su integridad. En el Capítulo 4Verificación y transferencia de un paquete se explican estas tareas y se ofrecen instrucciones paso a paso para transferir su paquete verificado a un medio de distribución.

Escritura de secuencias de comandos de acción de clase

Definición de clases de objetos

Las clases de objetos permiten una serie de acciones que se deben ejecutar en un grupo de objetos de paquetes en la instalación o la eliminación. Asigne objetos a una clase en el archivo prototype. A todos los objetos del paquete se les debe proporcionar una clase, aunque la clase none se utiliza de forma predeterminada para objetos que no requieran una acción especial.

El parámetro de instalación CLASSES, definido en el archivo pkginfo, es una lista de clases que se deben instalar (incluida la clase none).


Nota –

Los objetos definidos en el archivo pkgmap que pertenecen a una clase que no aparece en este parámetro del archivo pkginfo no se instalarán.


La lista CLASSES determina el orden de instalación. La clase none siempre se instala en primer lugar, en el caso de que exista, y se suprime en último lugar. Puesto que los directorios son la estructura de apoyo fundamental para los demás objetos del sistema de archivos, deben asignarse todos a la clase none. Se pueden hacer excepciones, pero como norma general, la clase none es la más segura. Esta estrategia asegura que los directorios se crean antes de los objetos que incluirán. Asimismo, no se efectúa ningún intento de suprimir un directorio antes de que se haya vaciado.

Cómo se procesan las clases durante la instalación de los paquetes

A continuación se describen las acciones del sistema que tienen lugar cuando se instala una clase. Las acciones se repiten una vez para cada volumen de un paquete, durante la instalación de ese volumen.

  1. El comando pkgadd crea una lista de nombre de ruta.

    El comando pkgadd crea una lista de nombres de ruta sobre la que opera la secuencia de comandos de la acción. Cada línea de la lista contiene nombres de ruta de origen y de destino, separados por un espacio. El nombre de ruta de origen indica dónde reside el objeto que se debe instalar en el volumen de instalación. El nombre de ruta de destino indica la ubicación del sistema de destino donde el objeto se debe instalar. El contenido de la lista se restringe mediante los criterios siguientes:

    • La lista sólo contiene nombres de ruta que pertenecen a la clase asociada.

    • Si falla el intento de crear el objeto del paquete, los directorios, las conducciones con nombres, los dispositivos de caracteres, los dispositivos de bloques y los vínculos simbólicos se incluyen en la lista con el nombre de ruta de origen establecido en /dev/null. Normalmente, el comando pkgadd crea automáticamente estos elementos (en el caso de que no existieran) y se les otorga los atributos pertinentes (modo, propietario, grupo), tal como se define en el archivo pkgmap.

    • Los archivos vinculados donde el tipo de archivo es l no se incluyen en la lista bajo ninguna circunstancia. Los vínculos físicos de la clase proporcionada se crean en el elemento 4.

  2. Si no se proporciona una secuencia de comandos de acción de clase para la instalación de una clase determinada, los nombres de rutas de la lista generada se copian del volumen a la ubicación de destino pertinente.

  3. Se ejecutará una secuencia de comandos de acción de clase en el caso de que exista.

    La secuencia de comandos de acción de clase se ejecuta con la entrada estándar que contiene la lista que se genera en el elemento 1. Este volumen es el último, o en esta clase no hay más objetos, la secuencia de comandos se ejecuta con el único argumento de ENDOFCLASS.


    Nota –

    Incluso si no existen archivos regulares de esta clase en el paquete, se llama a la secuencia de comandos de acción de clase al menos una vez con una lista vacía y el argumento ENDOFCLASS.


  4. El comando pkgadd lleva a cabo una auditoría de atributos y contenido, además de crear vínculos físicos.

    Después de ejecutar correctamente los elementos 2 o 3, el comando pkgadd efectúa una auditoría de la información de atributos y contenido para la lista de nombres de ruta. El comando pkgadd crea los vínculos asociados con la clase automáticamente. Las incoherencias de atributos detectadas se corrigen en todos los nombres de ruta de la lista generada.

Cómo se procesan las clases durante la eliminación de los paquetes

Los objetos se suprimen clase a clase. Las clases que existen para un paquete pero que no aparecen en el parámetro CLASSES se suprimen en primer lugar (por ejemplo, un objeto instalado con el comando installf). Las clases que aparecen en el parámetro CLASSES se suprimen en el orden inverso. La clase none siempre se suprime en último lugar. A continuación se describen las acciones del sistema que se producen cuando se suprime una clase:

  1. El comando pkgrm crea una lista de nombres de ruta.

    El comando pkgrm crea una lista de nombres de rutas instaladas que pertenecen a la clase indicada. Los nombres de rutas a los que hace referencia otro paquete se excluyen de la lista, a menos que el tipo de archivo sea e. Un tipo de archivo e significa que el archivo se debe editar tras la instalación o la supresión.

    Si el paquete que se suprime había modificado archivos del tipo e durante la instalación, sólo debe suprimir las líneas que agregó. No suprima un archivo modificable que no esté vacío. Suprima las líneas que agregó el paquete.

  2. Si no existe una secuencia de comandos de acción de clase, las nombres de rutas se suprimen.

    Si el paquete no tiene una secuencia de comandos de acción de clase de eliminación para la clase, se suprimen todos los nombres de rutas de la lista generados por el comando pkgrm.


    Nota –

    Los archivos del tipo e (modificable) no se asignan a una clase ni a una secuencia de comandos de acción de clase asociada. Estos archivos se suprimen en este momento, incluso si el nombre de ruta se comparte con otros paquetes.


  3. Si existe una secuencia de comandos de acción de clase, se ejecutará.

    El comando pkgrm invoca la secuencia de comandos de acción de clase con entrada estándar para la secuencia de comandos que contiene la lista generada en el elemento 1.

  4. El comando pkgrm lleva a cabo una auditoría.

    Después de ejecutar correctamente la secuencia de comandos de acción de clase, el comando pkgrm suprime las referencias a los nombres de ruta de la base de datos de paquetes a menos que otro paquete haga referencia a un nombre de ruta.

Secuencia de comandos de acción de clase

La secuencia de comandos de acción de clase define un conjunto de acciones que se ejecutarán durante la instalación o eliminación de un paquete. Las acciones se llevarán cabo en un grupo de nombres de ruta basados en su definición de clase. Consulte el Capítulo 5Casos prácticos de creación de paquetes, si desea ver ejemplos de secuencias de comandos de acción de clase.

El nombre de una secuencia de comandos de acción de clase se basa en la clase en la que debe funcionar y si dichas operaciones deben producirse durante la instalación o la eliminación de paquetes. Los dos formatos de nombres aparecen en la tabla siguiente:

Formato de nombre 

Descripción 

i.clase

Realiza operacinoes en nombres de ruta en la clase indicada durante la instalación de paquetes 

r.clase

Realiza operaciones en nombres de ruta en la clase indicada durante la eliminación de paquetes  

Por ejemplo, el nombre de la secuencia de comandos de instalación de una clase llamada manpage sería i.manpage. La secuencia de comandos de eliminación se llamaría r.manpage.


Nota –

Este formato de nombre de archivos no se utiliza con los archivos que pertenecen a las clases de sistema sed, awk o build. Para obtener más información sobre estas clases especiales, consulte Clases de sistema especiales.


Comportamientos de las secuencias de comandos de acción de clase

Normativa de diseño para secuencias de comandos de acción de clase

Clases de sistema especiales

El sistema ofrece cuatro clases especiales:

Si varios archivos de un paquete requieren un procesamiento especial que se puede definir completamente a través de los comandos sed, awk o sh, la instalación es más rápida si se usan clases de sistemas en lugar de varias clases y sus secuencias de comandos de acción de clase correspondientes.

Secuencia de comandos de clase sed

La clase sed ofrece un método para modificar un objeto del sistema de destino. La secuencia de comandos de acción de clase sed se ejecuta automáticamente en la instalación si existe un archivo que pertenece a la clase sed. El nombre de la secuencia de comandos de acción de clase sed debe ser el mismo que el del archivo donde se ejecutan las instrucciones.

Una secuencia de comandos de acción de clase sed entrega instrucciones sed en el formato siguiente:

Dos comandos indican cuándo se deben ejecutar las instrucciones. Se ejecutan las instrucciones sed que siguen al comando !install durante la instalación del paquete. Se ejecutan las instrucciones sed que siguen al comando !remove durante la eliminación de paquetes. No importa el orden en el que estos comandos se usan en el archivo.

Para obtener más información sobre las instrucciones sed consulte la página de comando man sed(1) Si desea ver ejemplos de las secuencias de comandos de acción de clase sed, consulte el Capítulo 5Casos prácticos de creación de paquetes.

Secuencia de comandos de clase awk

La clase awk ofrece un método para modificar un objeto del sistema de destino. Las modificaciones se entregan como instrucciones awk en una secuencia de comandos de acción de clase awk.

La secuencia de comandos de acción de clase awk se ejecuta automáticamente en la instalación si existe un archivo que pertenece a la clase awk. Dicho archivo contiene instrucciones para la secuencia de comandos de clase awk con el formato siguiente:

Dos comandos indican cuándo se deben ejecutar las instrucciones. Se ejecutan las instrucciones awk que siguen al comando !install durante la instalación del paquete. Durante la eliminación del paquete se ejecutan las instrucciones que siguen al comando !remove. Estos comandos se pueden usar en cualquier orden.

El nombre de la secuencia de comandos de acción de clase awk debe ser el mismo que el del archivo donde se ejecutan las instrucciones.

El archivo que se debe modificar se utiliza como entrada al comando awk y la salida de la secuencia de comandos sustituye por último al objeto original. Es posible que las variables de entorno no pasen al comando awk con esta sintaxis.

Para obtener más información sobre las instrucciones awk, consulte la página de comando man awk(1).

Secuencia de comandos de clase build

La clase build crea o modifica un archivo de objeto de paquete mediante la ejecución de las instrucciones del shell Bourne. Estas instrucciones se entregan como objeto del paquete. Las instrucciones se ejecutan automáticamente en la instalación si el objeto del paquete pertenece a la clase build.

El nombre de la secuencia de comandos de acción de clase build debe ser el mismo que el del archivo donde se ejecutan las instrucciones. El nombre también debe ser ejecutable por parte del comando sh. La salida de la secuencia de comandos se convierte en la nueva versión del archivo al construirse o modificarse. Si la secuencia de comandos no produce salida alguna, el archivo no se crea ni se modifica. Por ello, la secuencia de comandos puede modificar o crear el archivo por sí mismo.

Por ejemplo, si un paquete entrega un archivo predeterminado, /etc/randomtable, y si éste no existe ya en el sistema de destino, la entrada del archivo prototype puede ser como la siguiente:


e build /etc/randomtable ? ? ?

El objeto del paquete, /etc/randomtable, puede tener el aspecto siguiente:


!install
# randomtable builder
if [ -f $PKG_INSTALL_ROOT/etc/randomtable ]; then
		echo "/etc/randomtable is already in place.";
	    else
		echo "# /etc/randomtable" > $PKG_INSTALL_ROOT/etc/randomtable
		echo "1121554	# first random number" >> $PKG_INSTALL_ROOT/etc/randomtable
fi
 
!remove
# randomtable deconstructor
if [ -f $PKG_INSTALL_ROOT/etc/randomtable ]; then
		# the file can be removed if it's unchanged
		if [ egrep "first random number" $PKG_INSTALL_ROOT/etc/randomtable ]; then
			rm $PKG_INSTALL_ROOT/etc/randomtable;
		fi
fi
 

Consulte el Capítulo 5Casos prácticos de creación de paquetes, si desea ver otro ejemplo mediante la clase build.

Secuencia de comandos de clase preserve

La clase preserve conserva un archivo de objeto del paquete al decidir si un archivo existente debe sobrescribirse cuando se instale el paquete. Al usar una secuencia de comandos de clase preserve puede haber dos situaciones:

El resultado de ambas situaciones se considera correcto por parte de la secuencia de comandos preserve. Sólo se produce un error en la segunda situación si el archivo no puede copiarse en el directorio de destino.

Desde Solaris 7 puede encontrarse la secuencia de comandos i.preserve y una copia suya, i.CONFIG.prsv, en el directorio /usr/sadm/install/scripts con las demás secuencias de comandos de acción de clase.

Modifique la secuencia de comandos para que incluya los nombres de archivos que desee conservar.

La secuencia de comandos de clase manifest

La clase manifest instala y desinstala automáticamente los servicios SMF (Utilidad de gestión de servicios) asociados a un manifiesto SMF. Si no está familiarizado con SMF, consulte el Capítulo 17, Managing Services (Overview) de System Administration Guide: Basic Administration para obtener información sobre cómo utilizar SMF para gestionar servicios.

Todos los manifiestos de servicios de los paquetes se deben identificar con la clase manifest. Las secuencias de comandos de acción de clase que instalan y suprimen manifiestos de servicios se incluyen en el subsistema de empaquetado. Cuando se invoca pkgadd(1M), se importa el manifiesto de servicios. Cuando se invoca pkgrm(1M), se suprimen las instancias del manifiesto de servicios que están inhabilitadas. Los servicios del manifiesto que no tienen instancias restantes también se suprimen. Si se suministra la opción -R a pkgadd(1M) o pkgrm(1M), estas acciones de manifiesto de servicios se efectuarán cuando el sistema se reinicie la próxima vez con esa ruta root alternativa.

La porción siguiente de código de un archivo de información del paquete muestra el uso de la clase manifest.

# packaging files
i pkginfo
i copyright
i depend
i preinstall
i postinstall
i i.manifest
i r.manifest
#
# source locations relative to the prototype file
#
d none var 0755 root sys
d none var/svc 0755 root sys
d none var/svc/manifest 0755 root sys
d none var/svc/manifest/network 0755 root sys
d none var/svc/manifest/network/rpc 0755 root sys
f manifest var/svc/manifest/network/rpc/smserver.xml 0444 root sys

ProcedureCómo escribir secuencias de comandos de acción de clase

  1. Convierta el directorio que contiene sus archivos de información en el directorio de trabajo actual.

  2. Asigne a los objetos del paquete del archivo prototype los nombres de clase deseados.

    Por ejemplo, la asignación de objetos a las clases application y manpage tendría el aspecto siguiente:


    f manpage /usr/share/man/manl/myappl.1l
    f application /usr/bin/myappl
  3. Modifique el parámetro CLASSES del archivo pkginfo para que contenga los nombres de clase que desee usar en el paquete.

    Por ejemplo, las entradas para las clases application y manpage tendrían el aspecto siguiente:


    CLASSES=manpage application none

    Nota –

    La clase none siempre se instala en primer lugar y se suprime en último lugar, independientemente de dónde aparezca en la definición del parámetro CLASSES.


  4. Si crea una secuencia de comandos de acción de clase para un archivo que pertenezca a la clase sed, awk o build, convierta el directorio que contiene el objeto del paquete en el directorio de trabajo actual.

  5. Cree las secuencias de comandos de acción de clase o los objetos del paquete (para los archivos que pertenecen a la clase sed, awk, o build).

    Por ejemplo, una secuencia de comandos de instalación de una clase llamada application recibiría el nombre de i.application, y una secuencia de comandos de eliminación recibiría el nombre de r.application.

    Recuerde, si un archivo forma parte de una clase que cuenta con una secuencia de comandos de acción de clase, dicha secuencia debe instalar el archivo. El comando pkgadd no instala los archivos por los que existe una secuencia de comandos de acción de clase, aunque verifica la instalación. Si define una clase pero no entrega una secuencia de comandos de acción de clase, la única acción llevada a cabo para esa clase es copiar componentes del medio de instalación al sistema de destino (el comportamiento predeterminado de pkgadd).

  6. Complete una de las tareas siguientes:

  7. Construya su paquete.

    Consulte Cómo construir un paquete si fuera necesario.

Paso siguiente

Después de construir el paquete, instálelo para confirmar que se instala correctamente y compruebe su integridad. En el Capítulo 4Verificación y transferencia de un paquete se explica cómo hacerlo y se ofrecen instrucciones paso a paso para transferir su paquete verificado a un medio de distribución.