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

Formato del archivo prototype

A continuación puede ver el formato de cada línea en el archivo prototype:


partftypeclasspathmajorminormodeownergroup

parte

Es un campo numérico optativo que le permite agrupar objetos de paquetes en partes. El valor predeterminado es parte 1. 

tipoa

Es un campo de un carácter que especifica el tipo de objeto. Consulte El campo tipoa.

clase

Es la clase de instalación a la que pertenece el objeto. Consulte El campo clase.

ruta

Es un nombre de ruta absoluta o relativa que indica dónde se ubicará el objeto del paquete en el sistema de destino. Consulte El campo ruta.

principal

Es el número de dispositivo principal para dispositivos especiales de caracteres o bloques. 

secundario

Es el número de dispositivo secundario para dispositivos especiales de caracteres o bloques. 

modo

Es el modo octal del objeto (por ejemplo, 0644). Consulte El campo modo.

propietario

Es el propietario del objeto (por ejemplo, bin o root). Consulte El campo propietario.

group

Es el grupo al que pertenecen los objetos (por ejemplo, bin o sys). Consulte El campo grupo.

Por lo general, sólo se definen los campos tipoa, clase, ruta, modo, propietario y grupo. Estos campos se describen en las secciones siguientes. Consulte la página de comando man prototype(4) para obtener información adicional sobre estos campos.

El campo tipoa

tipoa, o tipo de archivo, es un campo de un carácter que especifica el tipo de objeto de un paquete. Los tipos de archivos válidos se describen en la tabla siguiente

Tabla 2–3 Tipos de archivos válidos en el archivo prototype

Valor de campo de tipo de archivo 

Descripción del tipo de archivo 

f

Archivo ejecutable estándar o archivo de datos 

e

Archivo que se debe editar tras la instalación o la eliminación (lo pueden compartir varios paquetes) 

v

Archivo volátil (cuyo contenido se espera que cambie, como un archivo de registro) 

d

Directory 

x

Directorio exclusivo accesible sólo por este paquete (puede contener información de la base de datos o registros sin registrar) 

l

Archivo vinculado 

p

Conducción con nombre 

c

Dispositivo especial de caracteres 

b

Dispositivo especial de bloques 

i

Archivo de información o secuencia de comandos de instalación 

s

Vínculo simbólico 

El campo clase

Los nombres del campo clase muestran la clase a la que pertenece un objeto. El uso de clases es una función optativa de diseño de paquetes. Esta función se trata detalladamente en Escritura de secuencias de comandos de acción de clase.

Si no usa clases, un objeto pertenece a la clase none. Si ejecuta el comando pkgmk para construir el paquete, el comando inserta el parámetro CLASSES=none en el archivo pkginfo. Los archivos del tipo i deben tener un campo clase en blanco.

El campo ruta

El campo ruta se utiliza para definir dónde residirá el objeto de paquete en el sistema de destino. Puede indicar la ubicación con un nombre de ruta absoluta (por ejemplo, /usr/bin/mail) o un nombre de ruta relativa (por ejemplo, bin/mail). El uso de un nombre de ruta absoluta significa que la ubicación del objeto en el sistema de destino la define el paquete y no se puede cambiar. Los objetos del paquete con nombres de ruta relativa indican que el objeto es reubicable.

Un objeto reubicable no necesita una ubicación de ruta absoluta en el sistema de destino. Por el contrario, la ubicación del objeto se determina durante el proceso de instalación.

Todos o algunos de los objetos de un paquete se pueden definir como reubicables. Antes de escribir secuencias de comandos de instalación o crear el archivo prototype, decida si los objetos del paquete tendrán una ubicación fija (como secuencias de comandos de inicio en /etc) o si serán reubicables.

Hay dos tipos de objetos reubicables: reubicables colectivamente y reubicables individualmente.

Objetos reubicables colectivamente

Los objetos reubicables colectivamente se sitúan en relación a una base de instalación común llamada directorio base. Un directorio base se define en el archivo pkginfo, mediante el parámetro BASEDIR. Por ejemplo, un objeto reubicable del archivo prototype con el nombre tests/generic necesita que el archivo pkginfo defina el parámetro BASEDIR predeterminado. Por ejemplo:


BASEDIR=/opt

Este ejemplo significa que cuando se instala el objeto, se ubicará en el directorio /opt/tests/generic.


Nota –

El directorio /opt es el único al que se puede entregar software que no sea parte del software base de Solaris.


Use objetos reubicables colectivamente siempre que sea posible. En general, la parte principal de un paquete se puede reubicar con unos cuantos archivos (como los archivos en /etc o /var) especificados como absolutos. Sin embargo, si un paquete contiene muchas reubicaciones diferentes, considere la opción de dividir el paquete en diversos paquetes con diferentes valores BASEDIR en sus archivos pkginfo.

Objetos reubicables individualmente

Los objetos reubicables individualmente no se restringen a la misma ubicación del directorio como objetos reubicables colectivamente. Para definir un objeto reubicable individualmente, debe especificar una variable de instalación en el campo ruta del archivo prototype. Después de especificar la variable de instalación, cree una secuencia de comandos request para solicitar al instalador el directorio base reubicable, o bien una secuencia de comandos checkinstall para determinar el nombre de ruta a partir de los datos del sistema de archivos. Para obtener más información sobre las secuencias de comandos request, consulte Escritura de una secuencia de comandos request; para obtener más información sobre las secuencias de comandos checkinstall, consulte Cómo reunir datos del sistema de archivos.


Precaución – Precaución –

Los objetos reubicables individualmente son difíciles de administrar. El uso de objetos reubicables individualmente puede provocar que haya componentes de paquetes muy dispersos que sean difíciles de aislar al instalar varias versiones o arquitecturas del paquete. Use objetos reubicables colectivamente siempre que sea posible.


Nombres de rutas paramétricos

Un nombre de ruta paramétrico es un nombre de ruta que contiene la especificación de una variable. Por ejemplo, /opt/$PKGINST/nombre_archivo es un nombre de ruta paramétrico debido a la especificación de la variable $PKGINST. Se debe definir un valor predeterminado para especificar la variable en el archivo pkginfo. Posteriormente se puede cambiar el valor mediante una secuencia de comandos request o checkinstall.

La especificación de una variable en una ruta debe comenzar o terminar el nombre de la ruta, o bien estar marcado por barras oblicuas (/). Los nombres paramétricos válidos de rutas adoptan el formato siguiente:


$PARAM/tests
tests/$PARAM/generic
/tests/$PARAM

La especificación de la variable, una vez definida, puede provocar que la ruta se evalúe como absoluta o reubicable. En el ejemplo siguiente, el archivo prototype contiene esta entrada:


f none $DIRLOC/tests/generic

El archivo pkginfo contiene esta entrada:


DIRLOC=/myopt

El nombre de ruta $DIRLOC/tests/generic evalúa al nombre de ruta absoluta /myopt/tests/generic, independientemente de si el parámetro BASEDIR está configurado en el archivo pkginfo.

En este ejemplo, el archivo prototype es idéntico al del ejemplo anterior y el archivo pkginfo contiene las entradas siguientes:


DIRLOC=firstcut
BASEDIR=/opt

El nombre de ruta $DIRLOC/tests/generic evaluará al nombre de ruta reubicable /opt/firstcut/tests/generic.

Para obtener más información sobre nombres de rutas paramétricos, consulte Uso de directorios base paramétricos.

Unas palabras sobre las ubicaciones de origen y de destino del objeto

El campo ruta del archivo prototype define dónde se ubicará el objeto en el sistema de destino. Especifique la ubicación actual de los objetos del paquete en el archivo prototype si su estructura de directorios no refleja la estructura que se desea en el sistema de destino. Consulte Organización del contenido de un paquete para obtener más información sobre la estructuración de objetos en un paquete.

Si el área de desarrollo no está estructurada del mismo modo que desea para el paquete, puede usar el formato path1=path2 en el campo ruta. En este formato, ruta1 es la ubicación que el objeto debe tener en el sistema de destino y ruta2 es la ubicación que el objeto tiene en su sistema.

También puede usar el formato de nombre de ruta ruta1=ruta2 con ruta1 como nombre de objeto reubicable y ruta2 como nombre de ruta completo al objeto del sistema.


Nota –

Es posible que ruta1 no contenga variables de construcción sin definir, sino que contenga variables de instalación sin definir. Es posible que ruta2 no contenga variables sin definir, aunque se pueden usar las variables de construcción y de instalación. Para obtener más información sobre la diferencia entre las variables de instalación y de construcción, consulte Variables de entorno de paquetes.


Los vínculos deben usar el formato ruta1= ruta2 porque los crea el comando pkgadd. Como norma general, la ruta2 de un vínculo no debe ser nunca absoluta, sino que debe ser relativa a la parte del directorio de ruta1.

Una alternativa al uso del formato ruta1=ruta2 es usar el comando !search. Para obtener más información, consulte Cómo proporcionar una ruta de búsqueda para el comando pkgmk.

El campo modo

El campo modo puede contener un número octal, un signo de interrogación (?) o una especificación de variable. Un número octal especifica el modo del objeto cuando se instala en el sistema de destino. Un signo ? significa que no se cambiará el modo cuando se instale el objeto, lo cual implica que el objeto del mismo nombre ya existe en el sistema de destino.

Una especificación de variable con el formato $modo, donde la primera letra de la variable debe estar en minúscula, significa que este campo se configurará cuando se construya el paquete. Tenga en cuenta que esta variable se debe definir en el tiempo de la construcción en el archivo prototype o como opción del comando pkgmk. Para obtener más información sobre la diferencia entre las variables de instalación y de construcción, consulte Variables de entorno de paquetes.

Los archivos de los tipos i (archivo de información), l (vínculo físico) y s (vínculo simbólico) deben dejar este campo en blanco.

El campo propietario

El campo propietario puede contener un nombre de usuario, un signo de interrogación (?) o una especificación de variable. Un nombre de usuario tiene un máximo de 14 caracteres y debe ser un nombre que ya exista en el sistema de destino (como bin o root). Un signo ? significa que no se cambiará el propietario cuando se instale el objeto, lo cual implica que el objeto del mismo nombre ya existe en el sistema de destino.

Una especificación de variable puede tener el formato $Propietario o $propietario, donde la primera letra de la variable está en mayúsculas o minúsculas. Si la variable comienza por minúsculas, se debe definir cuando se ha construido el paquete, en el archivo prototype o como opción para el comando pkgmk. Si la variable comienza por una mayúscula, la especificación de la variable se insertará en el archivo pkginfo como valor predeterminado, y puede volver a definirse en el tiempo de la instalación mediante una secuencia de comandos request. Para obtener más información sobre la diferencia entre las variables de instalación y de construcción, consulte Variables de entorno de paquetes.

Los archivos de los tipos i (archivo de información) y lb (vínculo físico) deben dejar este campo en blanco.

El campo grupo

El campo grupo puede contener un nombre de grupo, un signo de interrogación (?) o una especificación de variable. Un nombre de grupo tiene un máximo de 14 caracteres y debe ser un nombre que ya exista en el sistema de destino (como bin o sys). Un signo ? significa que no se cambiará el grupo cuando se instale el objeto, lo cual implica que el objeto del mismo nombre ya existe en el sistema de destino.

Una especificación de variable puede tener el formato $Grupo o $grupo, donde la primera letra de la variable está en mayúsculas o minúsculas. Si la variable comienza por minúsculas, se debe definir cuando se ha construido el paquete, en el archivo prototype o como opción para el comando pkgmk. Si la variable comienza por una mayúscula, la especificación de la variable se insertará en el archivo pkginfo como valor predeterminado, y puede volver a definirse en el tiempo de la instalación mediante una secuencia de comandos request. Para obtener más información sobre la diferencia entre las variables de instalación y de construcción, consulte Variables de entorno de paquetes.

Los archivos de los tipos i (archivo de información) y l (vínculo físico) deben dejar este campo en blanco.