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

Especificación del directorio base

Puede usar diversos métodos para especificar dónde se instalará un paquete; es importante que se pueda cambiar la base de instalación dinámicamente en el tiempo de la instalación. Si se lleva a cabo correctamente, un administrador puede instalar varias versiones y varias arquitecturas sin problemas.

En esta sección se tratan en primer lugar los métodos habituales, seguidos de las aproximaciones que mejoran la instalación en sistemas heterogéneos.

El archivo administrativo predeterminado

Los administradores responsables de la instalación de los paquetes pueden usar los archivos de administración para controlar la instalación de los paquetes. Sin embargo, como diseñador de paquetes, debe conocer los archivos de administración y cómo un administrador puede modificar la instalación deseada del paquete.

Un archivo de administración indica al comando pkgadd si se debe efectuar alguna de las comprobaciones o solicitudes que normalmente realiza. En consecuencia, los administradores deben comprender completamente el proceso de instalación de un paquete y las secuencias de comandos implicadas antes de usar los archivos de administración.

Se distribuye un archivo administrativo predeterminado básico con el sistema operativo SunOS en /var/sadm/install/admin/default. Éste es el archivo que establece el nivel más básico de directiva de administración respecto a la instalación de productos de software. El archivo tiene este aspecto al distribuirlo:

#ident "@(#)default
1.4 92/12/23 SMI"	/* SVr4.0 1.5.2.1	*/ 
mail=
instance=unique
partial=ask
runlevel=ask
idepend=ask
rdepend=ask
space=ask
setuid=ask
conflict=ask
action=ask
basedir=default

El administrador puede editar este archivo para establecer nuevos comportamientos predeterminados, o bien para crear un archivo de administración diferente y especificar su existencia mediante el uso de la opción -a en el comando pkgadd.

Es posible definir once parámetros en un archivo de administración, aunque no es necesario definirlos todos. Para obtener más información, consulte admin(4).

El parámetro basedir especifica cómo se derivará el directorio base cuando se instale un paquete. La mayoría de los administradores lo dejan como default, pero basedir se puede establecer con uno de los valores siguientes:


Nota –

Si se llama al comando pkgadd con el argumento -a none, siempre pide al administrador un directorio base. Desafortunadamente, de este modo se configuran todos los parámetros del archivo con el valor predeterminado de quit, lo cual puede suponer problemas adicionales.


Familiarización con la incertidumbre

Un administrador tiene control sobre todos los paquetes que se instalan en un sistema mediante el uso de un archivo de administración. Desafortunadamente, el diseñador de paquetes proporciona a menudo un archivo administrativo alternativo predeterminado, independientemente de los deseos del administrador.

Los diseñadores de paquetes contienen en ocasiones un archivo de administración alternativo, por lo que ellos, no el administrador, controlan la instalación de un paquete. Debido a que la entrada basedir del archivo administrativo predeterminado anula los demás directorios base, ofrece un método sencillo para seleccionar el directorio base adecuado en el tiempo de la instalación. En todas las versiones del sistema operativo Solaris anteriores a Solaris 2.5, éste se consideraba el método más sencillo de controlar el directorio base.

Sin embargo, es necesario que acepte los deseos del administrador respecto a la instalación del producto. La distribución de un archivo administrativo temporal predeterminado con el fin de controlar la instalación conduce a desconfianza por parte de los administradores. Debe usar las secuencias de comandos request y checkinstall para controlar estas instalaciones bajo la supervisión del administrador. Si la secuencia de comandos request implica fielmente al administrador en el proceso, la creación de paquetes de System V servirá a los diseñadores de paquetes y los administradores.

Uso del parámetro BASEDIR

El archivo pkginfo para cualquier paquete reubicable debe incluir un directorio base predeterminado en forma de entrada como la siguiente:


BASEDIR=absolute_path

Éste es únicamente el directorio base predeterminado; el administrador puede cambiarlo durante la instalación.

Mientras algunos paquetes requieren más de un directorio base, la ventaja de usar este parámetro para colocar el paquete se debe a que se garantiza que el directorio base estará en su lugar y será modificable como directorio válido en el momento en el que comience la instalación. La ruta correcta al directorio base para el servidor y el cliente está disponible para todas las secuencias de comandos de procedimientos en forma de variables de entorno reservadas, y el comando pkginfo -r SUNWstuf muestra la instalación actual base para el paquete.

En la secuencia de comandos checkinstall, BASEDIR es el parámetro definido exactamente en el archivo pkginfo (aún no se ha acondicionado). Con el fin de inspeccionar el directorio base de destino, se precisa la construcción ${PKG_INSTALL_ROOT}$BASEDIR. Esto significa que la secuencia de comandos request o checkinstall puede cambiar el valor de BASEDIR en el entorno de instalación con resultados predecibles. En el tiempo de llamar a la secuencia de comandos preinstall, el parámetro BASEDIR es el puntero completamente acondicionado al directorio base real en el sistema de destino, incluso si el sistema es un cliente.


Nota –

La secuencia de comandos request utiliza el parámetro BASEDIR de forma diferente según las versiones del sistema operativo SunOS. Con el fin de probar un parámetro BASEDIR en una secuencia de comandos request, se debe usar el código siguiente para determinar el directorio de base real en uso.

# request script
constructs base directory
if [ ${CLIENT_BASEDIR} ]; then
	  LOCAL_BASE=$BASEDIR
else
	  LOCAL_BASE=${PKG_INSTALL_ROOT}$BASEDIR
fi

Uso de directorios base paramétricos

Si un paquete necesita diversos directorios base, puede establecerlos con nombres de ruta paramétricos. Este método se ha vuelto bastante popular, aunque tiene los siguientes inconvenientes:

Mientras los parámetros que determinan los directorios base se definen en el archivo pkginfo, se pueden modificar mediante la secuencia de comandos request. Ésta es una de las razones fundamentales para la popularidad de esta aproximación. Sin embargo, los inconvenientes son crónicos y debe considerar esta configuración como último recurso.

Ejemplos: uso de directorios base paramétricos

El archivo pkginfo

# pkginfo file
PKG=SUNWstuf
NAME=software stuff 
ARCH=sparc
VERSION=1.0.0,REV=1.0.5
CATEGORY=application
DESC=a set of utilities that do stuff
BASEDIR=/
EZDIR=/usr/stuf/EZstuf
HRDDIR=/opt/SUNWstuf/HRDstuf
VENDOR=Sun Microsystems, Inc.
HOTLINE=Please contact your local service provider
EMAIL=
MAXINST=1000
CLASSES=none
PSTAMP=hubert980707141632

El archivo pkgmap

: 1 1758
1 d none $EZDIR 0775 root bin
1 f none $EZDIR/dirdel 0555 bin bin 40 773 751310229
1 f none $EZDIR/usrdel 0555 bin bin 40 773 751310229
1 f none $EZDIR/filedel 0555 bin bin 40 773 751310229
1 d none $HRDDIR 0775 root bin
1 f none $HRDDIR/mksmart 0555 bin bin 40 773 751310229
1 f none $HRDDIR/mktall 0555 bin bin 40 773 751310229
1 f none $HRDDIR/mkcute 0555 bin bin 40 773 751310229
1 f none $HRDDIR/mkeasy 0555 bin bin 40 773 751310229
1 d none /etc	? ? ?
1 d none /etc/rc2.d ? ? ?
1 f none /etc/rc2.d/S70dostuf 0744 root sys 450 223443
1 i pkginfo 348 28411 760740163
1 i postinstall 323 26475 751309908
1 i postremove 402 33179 751309945
1 i preinstall 321 26254 751310019
1 i preremove 320 26114 751309865

Administración del directorio base

Cualquier paquete que esté disponible en diversas versiones o para diversas arquitecturas se debe diseñar para recorrer el directorio base, si fuera necesario. Recorrer un directorio base significa que si una versión anterior o una arquitectura diferente del paquete que se está instalando ya existe en el directorio base, el paquete que se está instalando resuelve este problema, quizá mediante la creación de un nuevo directorio base con un nombre ligeramente diferente. Las secuencias de comandos request y checkinstall en Solaris 2.5 y versiones compatibles tienen la posibilidad de modificar la variable de entorno BASEDIR. Esto no se aplica a versiones anteriores del sistema operativo Solaris.

Incluso en versiones anteriores del sistema operativo Solaris, la secuencia de comandos request tenía la autoridad de redefinir directorios en la base de instalación. La secuencia de comandos request puede hacerlo de modo que todavía admita las preferencias más administrativas.