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

Creación de paquetes de archivo de almacenamiento de clase

Un paquete de archivo de almacenamiento de clase, una mejora en la Application Binary Interface (ABI, Interfaz binaria de aplicaciones), es aquel en que determinados conjuntos de archivos se han combinado en archivos de almacenamiento o archivos sencillos, y que de forma optativa se han comprimido o cifrado. Los formatos de archivos de almacenamiento de clase aumentan la velocidad de instalación inicial en un 30% y mejora la fiabilidad durante la instalación de paquetes y parches en sistemas de archivos potencialmente activos.

Las secciones siguientes ofrecen información sobre la estructura de directorios de paquetes de archivos de almacenamiento, palabras clave y la utilidad faspac.

Estructura del directorio de paquetes de archivos de almacenamiento

La entrada de paquete que aparece en la figura siguiente representa el directorio que contiene los archivos de paquetes. Este directorio debe tener el mismo nombre que el paquete.

Figura 6–1 Estructura del directorio de paquetes

El diagrama muestra cinco subdirectorios directamente por debajo del directorio de paquetes: pkginfo, pkgmap, reloc, root e install. También muestra los subdirectorios.

A continuación se enumeran las funciones de los archivos y directorios que se incluyen en el directorio de paquetes.

Elemento 

Descripción 

pkginfo

Archivo que describe el paquete en conjunto que incluye variables de entorno especiales y directivas de instalación 

pkgmap

Descripción de archivo de cada objeto que instalar, como un archivo, directorio o conducción 

reloc

Directorio optativo que contiene los archivos que se van a instalar relacionados con el directorio base (objetos reubicables) 

root

Directorio optativo que contiene los archivos que se van a instalar relacionados con el directorio root (objetos raíz)

install

Directorio optativo que contiene secuencias de comandos y otros archivos auxiliares (excepto en el caso de pkginfo y pkgmap, todos los archivos ftype i hasta aquí)

El formato de archivo de almacenamiento de clase permite al creador de paquetes combinar archivos de los directorios reloc y root en archivos de almacenamiento que se pueden comprimir, cifrar o procesar del modo que se desee para aumentar la velocidad de la instalación, reducir el tamaño del paquete o aumentar la seguridad del paquete.

La ABI permite asignar cualquier archivo de un paquete a una clase. Todos los archivos de una clase específica se pueden instalar en el disco mediante un método personalizado definido por una secuencia de comandos de acción de clase. Este método personalizado puede usar programas disponibles en el sistema de destino o programas distribuidos con el paquete. El formato resultante se parece mucho al formato estándar de la ABI. Tal como se muestra en la ilustración siguiente, se agrega otro directorio. Cualquier clase de archivos diseñados como archivo de almacenamiento se combina en un único archivo y se coloca en el directorio archive. Todos los archivos que se hayan archivado se suprimen de los directorios reloc y root y se coloca una secuencia de comandos de acción de clase de instalación en el directorio install.

Figura 6–2 Estructura de directorios de paquetes de archivos de almacenamiento

El diagrama muestra la misma estructura de directorio de paquetes en la Figura 6-1 con la adición del subdirectorio de archivos de almacenamiento.

Palabras clave para admitir paquetes de archivo de almacenamiento de clase

Con el fin de admitir este nuevo formato de archivo de almacenamiento de clase, tres nuevas interfaces con formato de palabras clave tienen un significado especial en el archivo pkginfo. Estas palabras clave se usan para designar clases que precisen un tratamiento especial. El formato de cada instrucción de palabra clave: keyword=class1[class2 class3 ...]. Los valores de cada palabra clave se definen en la tabla siguiente.

Palabra clave 

Descripción 

PKG_SRC_NOVERIFY

Indica a pkgadd que no verifique la existencia ni las propiedades de los archivos en los directorios reloc o root del paquete distribuido si pertenecen a la clase nombrada. Esto es necesario en todas las clases archivadas, porque esos archivos ya no se encuentran en un directorio reloc o root. Son un archivo de formato privado en el directorio archive.

PKG_DST_QKVERIFY

Los archivos de estas clases se verifican después de la instalación mediante un algoritmo rápido con poca o ninguna salida de texto. La verificación rápida configura primero los atributos de cada archivo correctamente y después comprueba si la operación ha sido satisfactoria. Después hay una prueba de la hora de modificación y el tamaño del archivo con el pkgmap. No se lleva a cabo una verificación checksum y la recuperación de errores es más deficiente que la ofrecida por el mecanismo estándar de verificación. En el caso de interrupción de la alimentación o fallo en el disco durante la instalación, es posible que falte coherencia al archivo de contenido respecto a los archivos instalados. Esta falta de coherencia se puede solucionar siempre con un comando pkgrm.

PKG_CAS_PASSRELATIVE

Por lo general, la secuencia de comandos de acción de clase de instalación recibe de stdin una lista de pares de origen y de destino para indicar qué archivos se deben instalar. Las clases asignadas a PKG_CAS_PASSRELATIVE no obtienen los pares de origen y de destino. En su lugar reciben una lista única, cuya primera entrada es la ubicación del paquete de origen y el resto son las rutas de destino. La finalidad específica es simplificar la extracción de un archivo de almacenamiento. A partir de la ubicación del paquete de origen, puede buscar el archivo de almacenamiento en el directorio archive. Las rutas de destino pasan a la función responsable de extraer el contenido de un archivo de almacenamiento. Cada ruta de destino proporcionada es absoluta o relativa en relación al directorio base, según si la ruta se encontraba originalmente en root o reloc. Si se elige esta opción, puede que sea difícil combinar las rutas relativas y absolutas en una única clase.

Se precisa una secuencia de comandos de acción de clase para cada clase archivada. Se trata de un archivo que contiene comandos de shell Bourne, ejecutado por pkgadd para instalar los archivos desde el archivo de almacenamiento. Si se encuentra una secuencia de comandos de acción de clase en el directorio install del paquete, pkgadd entrega toda la responsabilidad de la instalación a esa secuencia de comandos. La secuencia de comandos de acción de clase se ejecuta con permisos de usuario root y puede situar sus archivos en cualquier lugar del sistema de destino.


Nota –

La única palabra clave que es absolutamente necesaria para implementar un paquete de archivo de almacenamiento de clase es PKG_SRC_NOVERIFY. Las demás se pueden usar para aumentar la velocidad de la instalación o conservar el código.


La utilidad faspac

La utilidad faspac convierte un paquete ABI estándar en un formato de archivo de almacenamiento de clase utilizado para paquetes integrados. Esta utilidad realiza tareas de archivado mediante cpio y tareas de compresión mediante compress. El paquete resultante tiene un directorio adicional en el directorio superior llamado archive. En este directorio se encuentran todos los archivos de almacenamiento nombrados por clase. El directorio install contendrá las secuencias de comandos de acción de clase necesarias para desempaquetar cada archivo de almacenamiento. Las rutas absolutas no se archivan.

La utilidad faspac tiene el formato siguiente:


faspac [-m Archive Method] -a -s -q [-d Base Directory] /
[-x Exclude List] [List of Packages]

Cada opción del comando faspac se describe en la tabla siguiente.

Opción 

Descripción 

-m método_archivado

 

Indica un método para el archivado o la compresión. bzip2 es la utilidad de compresión predeterminada que se ha utilizado. Para conmutar el método de compresión o descompresión, utilice -m zip; para cpio o compress use - m cpio.

-a

Corrige atributos (debe ser root para ello). 

-s

Indica la traducción de paquetes de tipo ABI estándar. Esta opción toma un paquete comprimido o cpio y lo convierte en formato estándar de paquete compatible con ABI. 

-q

Indica el modo silencioso. 

-d directorio_base

Indica el directorio donde se actuará sobre todos los paquetes presentes según lo requiera la línea de comandos. Esto es incompatible con la entrada lista_paquetes.

-x lista_exclusión

Indica una lista de paquetes separados por espacios, entre comillas o separados por comas para excluirlos del proceso. 

Lista de paquetes

Indica la lista de paquetes que se van a procesar.