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

Capítulo 1 Diseño de un paquete

Antes de construir un paquete, debe saber qué archivos necesita crear y los comandos que debe ejecutar. También debe considerar los requisitos del software de la aplicación y las necesidades de los clientes. Los clientes son los administradores que instalarán el paquete. Este capítulo trata sobre los archivos, comandos y criterios que debe conocer y tener en cuenta antes de construir un paquete.

A continuación se indica la información contenida en este capítulo:

Dónde buscar las tareas de creación de paquetes

Use estos mapas de tareas para buscar las instrucciones detalladas de construcción y verificación de los paquetes.

¿Qué es un paquete?

El software de la aplicación se entrega en unidades llamadas paquetes. Un paquete es una colección de archivos y directorios necesarios para un producto de software. El desarrollador de la aplicación es quien diseña y construye normalmente el paquete, después de completar el desarrollo del código de la aplicación. Un producto de software se debe construir en uno o más paquetes para que se pueda transferir fácilmente a un medio de distribución. Posteriormente, el producto de software se puede producir de forma masiva y lo pueden instalar los administradores.

Un paquete es una colección de archivos y directorios con un formato definido. Este formato se ajusta a la interfaz binaria de aplicaciones (ABI), un suplemento a la Definición de interfaz de sistema V.

Componentes del paquete

Los componentes de un paquete se dividen en dos categorías.

Los archivos de control también se dividen en dos categorías: archivos de información y secuencias de comandos de instalación. Se precisan algunos archivos de control. Algunos archivos de control son optativos.

Para empaquetar las aplicaciones, en primer lugar debe crear los componentes necesarios, así como los componentes optativos que compongan el paquete. Posteriormente puede construir el paquete mediante el comando pkgmk.

Para construir un paquete, debe proporcionar lo siguiente:

En la figura siguiente se describe el contenido de un paquete.

Figura 1–1 El contenido de un paquete

El contexto precedente y el siguiente describen el gráfico.

Componentes de paquetes necesarios

Debe crear los componentes siguientes antes de construir el paquete:

Componentes de paquetes optativos

Archivos de información de paquetes

Puede incluir cuatro archivos de información de paquetes optativos en el paquete:

Cada archivo de información del paquete debe tener una entrada en el archivo prototype. Consulte Creación de archivos de información para obtener más información sobre la creación de estos archivos.

Secuencias de comandos de instalación de paquetes

Las secuencias de comandos de instalación no son necesarias. Sin embargo, puede proporcionar secuencias de comandos que llevan a cabo acciones personalizadas durante la instalación del paquete. Una secuencia de comandos de instalación tiene las características siguientes:

Los cuatro tipos de secuencias de comandos son los siguientes:

Consulte Creación de secuencias de comandos de instalación para obtener más información sobre las secuencias de comandos de instalación.

Consideraciones antes de construir un paquete

Antes de construir un paquete, debe decidir si el producto consistirá en uno o más paquetes. Tenga en cuenta que muchos paquetes pequeños necesitan más tiempo para instalarse que un paquete grande. Aunque la creación de un único paquete es una buena idea, no siempre es posible hacerlo. Si decide construir más de un paquete, debe determinar cómo segmentar el código de la aplicación. Esta sección proporciona una lista de criterios que usar al planificar la construcción de un paquete.

Muchos de los criterios de creación de paquetes se presentan como alternativas entre ellos. La satisfacción de todos los requisitos por igual es a menudo difícil. Estos criterios se presentan en orden de importancia. Sin embargo, esta secuencia está pensada para que sirva como guía flexible, según las circunstancias. Aunque cada criterio es importante, depende de usted optimizar estos requisitos para producir un buen conjunto de paquetes.

Si desea conocer más ideas de diseño, consulte el Capítulo 6Técnicas avanzadas para la creación de paquetes.

Creación de paquetes de instalación remota

Todos los paquetes deben ser de instalación remota. Por instalación remota se entiende que el administrador puede intentar la instalación del paquete en un sistema cliente, no necesariamente en el sistema de archivos raíz (/) donde se ejecuta el comando pkgadd.

Optimización de configuraciones de cliente-servidor

Considere los diversos tipos de configuraciones del software del sistema (por ejemplo, servidor y sistema autónomo) al distribuir los paquetes. Un buen diseño de creación de paquetes divide los archivos afectados para optimizar la instalación de cada tipo de configuración. Por ejemplo el contenido de los sistemas de archivos raíz (/) y /usr se debe segmentar para que las configuraciones de servidor se puedan admitir fácilmente.

Paquetes por restricciones funcionales

Los paquetes deben ser autónomos e identificarse de forma distintiva con un conjunto de funciones. Por ejemplo, un paquete que contiene UFS debe contener todas las utilidades de UFS y limitarse solamente a los binarios UFS.

Los paquetes se deben organizar desde el punto de vista del cliente en unidades funcionales.

Paquete con restricciones por derechos de autor

Coloque el código que precise el pago de derechos de autor debido a acuerdos contractuales en un paquete o grupo de paquetes específico. No disperse el código en más paquetes de los necesarios.

Paquete por dependencias del sistema

Conserve los binarios dependientes del sistema en paquetes dedicados. Por ejemplo, el código del núcleo debe estar en un paquete específico, con cada arquitectura de implementación constituida por una instancia de paquete distinta. Esta regla también se aplica a binarios para arquitecturas diferentes. Por ejemplo, los binarios para un sistema SPARC estarían en un paquete y los binarios para un sistema x86 estarían en otro.

Supresión de la superposición en los paquetes

Al construir los paquetes, suprima los archivos duplicados siempre que sea posible. La duplicación innecesaria de archivos provoca dificultades con las versiones y la asistencia técnica. Si el producto tiene varios paquetes, compare varias veces su contenido para buscar los archivos duplicados.

Paquete con restricciones en la ubicación

Los elementos específicos de la localización deben estar en su propio paquete. Un modelo de creación de paquetes ideal tendría las localizaciones de un producto distribuidas como un paquete por cada configuración regional. Desafortunadamente, en algunos casos, las restricciones organizativas entran en conflicto con los criterios de restricciones de productos y funcionales.

Los valores predeterminados internacionales también se pueden entregar en un paquete. Este diseño aísla los archivos que son necesarios para los cambios en la localización y estandariza el formato de distribución de los paquetes de localización.

Paquetes IPS (Image Packaging System)

Este documento trata sobre los paquetes SVR4. A la hora de distribuir en el sistema operativo OpenSolaris, plantéese la posibilidad de utilizar paquetes IPS (Image Packaging System). El sistema operativo OpenSolaris admite paquetes SVR4 e IPS. El software IPS interactúa con depósitos de redes y utiliza el sistema de archivos ZFS. En el sistema operativo OpenSolaris, puede publicar paquetes SVR4 que ya existan en un depósito de IPS con el comando pkgsend(1).

En la tabla siguiente se presenta una comparación entre los comandos de los sistema de paquetes SVR4 e IPS. Si desea obtener más información sobre IPS, consulte Getting Started With the Image Packaging System.

Tabla 1–1 Tareas de paquetes: IPS y SVR4

Tarea 

Comando de IPS 

Comando de SVR4 

Instalar un paquete nuevo 

pkg install

pkgadd -a

Mostrar información sobre el estado de un paquete 

pkg list

pkginfo

Verificar la correcta instalación de un paquete 

pkg verify

pkgchk -v

Mostrar información relativa a un paquete 

pkg info

pkginfo -l

Resumen del contenido de un paquete 

pkg contents

pkgchk -l

Desinstalar un paquete 

pkg uninstall

pkgrm

Secuencias de comandos, archivos y comandos en la creación de paquetes

Esta sección describe los comandos, archivos y secuencias de comandos que puede usar cuando manipule los paquetes. Se describen en las páginas de comando man y de forma detallada en este manual, en relación con la tarea específica que desempeñan.

La tabla siguiente muestra los comandos que le ayudarán a construir, verificar, instalar y obtener información sobre un paquete.

Tabla 1–2 Comandos de creación de paquetes

Tarea 

Comando/página de comando man 

Descripción 

Para obtener más información 

Crear paquetes 

pkgproto(1)

Genera un archivo prototype para la entrada de información al comando pkgmk

Ejemplo: creación de un archivo prototype con el comando pkgproto

pkgmk(1)

Crea un paquete instalable 

Construcción de un paquete

 

Instalar, suprimir y transferir paquetes 

pkgadd(1M)

Instala un paquete de software en un sistema 

Instalación de paquetes de software

pkgask(1M)

Guarda respuestas a una secuencia de comandos request

Normativa de diseño para secuencias de comandos request

 

pkgtrans(1)

Copia paquetes en un medio de distribución 

Transferencia de un paquete a un medio de distribución

 

pkgrm(1M)

Suprime un paquete de un sistema 

Eliminación de un paquete

 

Obtener información sobre paquetes 

pkgchk(1M)

Verifica la integridad de un paquete de software 

Verificación de la integridad de un paquete

pkginfo(1)

Muestra información de un paquete de software 

El comando pkginfo

 

pkgparam(1)

Muestra los valores de los parámetros del paquete 

El comando pkgparam

 

Modificar paquetes instalados 

installf(1M)

Incorpora un nuevo objeto de paquete en un paquete ya instalado 

Normativa de diseño para secuencias de comandos de procedimientos y Capítulo 5Casos prácticos de creación de paquetes

removef(1M)

Suprime un objeto de paquete de un paquete ya instalado 

Normativa de diseño para secuencias de comandos de procedimientos

 

La tabla siguiente muestra los archivos de información que le ayudarán a construir un paquete.

Tabla 1–3 Archivos de información de paquetes

Archivo 

Descripción 

Para obtener más información 

admin(4)

Archivo predeterminado de instalación de paquetes 

El archivo administrativo predeterminado

compver(4)

Archivo de compatibilidad de paquetes 

Definición de dependencias de paquetes

copyright(4)

Archivo de información de copyright del paquete 

Escritura de un mensaje de copyright

depend(4)

Archivo de dependencias de paquetes 

Definición de dependencias de paquetes

pkginfo(4)

Archivo de características de paquetes 

Creación de un archivo pkginfo

pkgmap(4)

Archivo de descripción de contenido del paquete 

El archivo pkgmap

prototype(4)

Archivo de información del paquete 

Creación de un archivo prototype

space(4)

Archivo de requisitos de espacio en el disco del paquete 

Reserva del espacio adicional en un sistema de destino

La tabla siguiente describe secuencias de comandos de instalación optativas que puede escribir que pueden afectan según cómo esté instalado un paquete.

Tabla 1–4 Secuencias de comandos de instalación de paquetes

Secuencia de comandos 

Descripción 

Para obtener más información 

request

Solicita información del instalador 

Escritura de una secuencia de comandos request

checkinstall

Reúne datos del sistema de archivos 

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

preinstall

Lleva a cabo los requisitos de instalación personalizados antes instalar la clase 

Escritura de secuencias de comandos de procedimientos

postinstall

Lleva a cabo los requisitos de instalación personalizados después de instalar todos los volúmenes 

Escritura de secuencias de comandos de procedimientos

preremove

Lleva a cabo los requisitos de eliminación personalizados antes de suprimir la clase 

Escritura de secuencias de comandos de procedimientos

postremove

Lleva a cabo los requisitos de eliminación personalizados después de que todas las clases se hayan suprimido 

Escritura de secuencias de comandos de procedimientos

Acción de clase 

Lleva a cabo una serie de acciones en un grupo de objetos específico 

Escritura de secuencias de comandos de acción de clase