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

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.