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:
Use estos mapas de tareas para buscar las instrucciones detalladas de construcción y verificación de los paquetes.
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.
Los componentes de un paquete se dividen en dos categorías.
Los objetos de paquetes son los archivos de la aplicación que se deben instalar.
Los archivos de control controlan cómo, dónde y si el paquete está instalado.
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:
Objetos de paquetes (directorios y archivos de software de la aplicación)
Dos archivos de información necesarios (los archivos pkginfo y prototype)
Archivos de información optativos
Secuencias de comandos de instalación optativas
En la figura siguiente se describe el contenido de un paquete.
Debe crear los componentes siguientes antes de construir el paquete:
Objetos de paquetes
Estos componentes componen la aplicación. Pueden estar formados por los elementos siguientes:
Archivos (archivos ejecutables o archivos de datos)
Directorios
Conducciones con nombre
Vínculos
Dispositivos
El archivo pkginfo
El archivo pkginfo es un archivo de información de paquetes necesario que define los valores de los parámetros. Los valores de los parámetros incluyen la abreviatura de los paquetes, el nombre completo del paquete y su arquitectura. Para obtener más información, consulte Creación de un archivo pkginfo y la página de comando man pkginfo(4).
Hay dos páginas de comando man pkginfo(1) La primera página de comando man describe un comando de una sección que muestra información sobre paquetes instalados. La segunda página de comando man describe un archivo de 4 secciones que describe las características de un paquete. Al acceder a las páginas de comando man, asegúrese de especificar la sección de la pagina de comando man aplicable. Por ejemplo: man -s 4 pkginfo.
El archivo prototype
El archivo prototype es un archivo de información de paquetes necesario que enumera los componentes del paquete. Hay una entrada para cada objeto de paquete, archivo de información y secuencia de comandos de instalación. Una entrada consiste en varios campos de información que describen cada componente, incluida su ubicación, atributos y tipo de archivo. Para obtener más información, consulte Creación de un archivo prototype y la página de comando man prototype(4).
Puede incluir cuatro archivos de información de paquetes optativos en el paquete:
Define las versiones anteriores del paquete que son compatibles con esta versión del paquete.
Indica otros paquetes que tienen una relación especial con el paquete.
Define requisitos de espacio en el disco para el entorno de destino, más allá de lo que necesitan los objetos definidos en el archivo prototype. Por ejemplo, puede que se necesite espacio adicional para archivos que se crean dinámicamente en el tiempo de la instalación.
Define el texto de un mensaje de copyright que aparece en el tiempo de la instalación del 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.
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:
La secuencia de comandos se compone de comandos shell Bourne.
Los permisos de archivos de las secuencias de comandos deben establecerse en 0644.
La secuencia de comandos no debe contener el identificador de shell ( #! /bin/sh).
Los cuatro tipos de secuencias de comandos son los siguientes:
La secuencia de comandos request
La secuencia de comandos request solicita entrada de información del administrador que instala el paquete.
La secuencia de comandos checkinstall
La secuencia de comandos checkinstall lleva a cabo una verificación especial del sistema de archivos.
La secuencia de comandos checkinstall sólo está disponible con SolarisTM 2.5 u otras versiones compatibles.
Secuencias de comandos de procedimientos
Las secuencias de comandos de procedimientos definen las acciones que tienen lugar en momentos concretos durante la instalación y eliminación de paquetes. Puede crear cuatro secuencias de comandos de procedimientos con estos nombres predefinidos: preinstall, postinstall, preremove y postremove.
Secuencias de comandos de acción de clase
Las secuencias de comandos de acción de clase definen un conjunto de acciones que se deben llevar a cabo en un grupo de objetos.
Consulte Creación de secuencias de comandos de instalación para obtener más información sobre las secuencias de comandos de instalación.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
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 |
Genera un archivo prototype para la entrada de información al comando pkgmk |
Ejemplo: creación de un archivo prototype con el comando pkgproto |
|
Crea un paquete instalable |
|
||
Instalar, suprimir y transferir paquetes |
Instala un paquete de software en un sistema | ||
Guarda respuestas a una secuencia de comandos request |
|
||
Copia paquetes en un medio de distribución |
|
||
Suprime un paquete de un sistema |
|
||
Obtener información sobre paquetes |
Verifica la integridad de un paquete de software | ||
Muestra información de un paquete de software |
|
||
Muestra los valores de los parámetros del paquete |
|
||
Modificar paquetes instalados |
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 |
|
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 |
---|---|---|
Archivo predeterminado de instalación de paquetes | ||
Archivo de compatibilidad de paquetes | ||
Archivo de información de copyright del paquete | ||
Archivo de dependencias de paquetes | ||
Archivo de características de paquetes | ||
Archivo de descripción de contenido del paquete | ||
Archivo de información del paquete | ||
Archivo de requisitos de espacio en el disco del paquete |
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 | |
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 | |
postinstall |
Lleva a cabo los requisitos de instalación personalizados después de instalar todos los volúmenes | |
preremove |
Lleva a cabo los requisitos de eliminación personalizados antes de suprimir la clase | |
postremove |
Lleva a cabo los requisitos de eliminación personalizados después de que todas las clases se hayan suprimido | |
Acción de clase |
Lleva a cabo una serie de acciones en un grupo de objetos específico |