Guide du développeur pour l'empaquetage d'applications

Création de packages d'archives de classe

Un package d'archive de classe, qui est une amélioration par rapport à l'ABI (Application Binary Interface), est un package dans lequel certains fichiers ont été regroupés en un seul fichier (ou archive) puis compressés ou chiffrés. Les formats d'archive de classe augmentent la vitesse initiale d'installation de 30 % et améliorent la fiabilité de la procédure d'installation des packages et des patchs sur des systèmes de fichiers potentiellement actifs.

Les sections suivantes fournissent des informations sur la structure du répertoire d'un package d'archive, les mots clés et l'utilitaire faspac.

Structure du répertoire d'un package d'archive

L'entrée du package illustrée sur la figure suivante représente le répertoire contenant les fichiers du package. Ce répertoire doit porter le même nom que le package.

Figure 6–1 Structure du répertoire d'un package

Le diagramme suivant représente cinq sous-répertoires directement placés sous le répertoire du package : pkginfo, pkgmap, reloc, root et install. Il indique également leurs propres sous-répertoires.

Le tableau suivant répertorie les fonctions des fichiers et répertoires contenus dans le répertoire du package.

Élément 

Description 

pkginfo

Fichier décrivant le package dans son ensemble, y compris les variables spéciales d'environnement et la procédure d'installation. 

pkgmap

Fichier décrivant chaque objet à installer, tel qu'un fichier, un répertoire ou un tube. 

reloc

Répertoire facultatif contenant les fichiers à installer par rapport au répertoire de base (objets réadressables). 

racine

Répertoire facultatif contenant les fichiers à installer par rapport au répertoire root (objets racine).

install

Répertoire facultatif contenant les scripts et autres fichiers auxiliaires (à l'exception de pkginfo et de pkgmap, tous les fichiers ftype i sont inclus).

Le format d'archive de classe permet au développeur du package de regrouper des fichiers provenant des répertoires reloc et root dans des archives qui peuvent être compressées, chiffrées ou autrement traitées afin d'accélérer l'installation, de réduire la taille du package ou de renforcer la sécurité du package.

L'ABI permet à tout fichier d'un package d'être attribué à une classe. Tous les fichiers d'une classe donnée peuvent être installés sur le disque à l'aide d'une méthode personnalisée définie par un script d'action de classe. Cette méthode personnalisée peut faire appel à des programmes installés sur le système cible ou à des programmes fournis avec le package. Le format résultant ressemble de près au format ABI standard. Comme l'illustre la figure suivante, un autre répertoire est ajouté. Toute classe de fichiers destinée à l'archivage est tout simplement convertie en un seul fichier et placée dans le répertoire archive. Tous les fichiers archivés sont supprimés des répertoires reloc et root, et un script d'action de classe d'installation est placé dans le répertoire install.

Figure 6–2 Structure du répertoire d'un package d'archive

Le diagramme représente la même structure de répertoire d'un package que celle de la Figure 6-1, à laquelle a été ajouté le sous-répertoire archive.

Mots clés de prise en charge des packages d'archive de classe

Pour prendre en charge ce nouveau format d'archive de classe, trois nouvelles interfaces représentées par des mots clés ont une signification particulière dans le fichier pkginfo. Ces mots clés sont utilisés pour désigner les classes requérant un traitement particulier. Le format de la déclaration de chaque mot clé est le suivant : keyword=class1[class2 class3 ...]. Chaque valeur de mot clé est définie dans le tableau suivant :

Mot-clé 

Description 

PKG_SRC_NOVERIFY

Ce mot clé indique à pkgadd de ne pas vérifier l'existence ni les propriétés des fichiers figurant dans les répertoires reloc ou root du package fourni s'ils appartiennent à une classe nommée. Il est obligatoire pour toutes les classes archivées car ces fichiers ne se trouvent plus dans un répertoire reloc ni un répertoire root. Il s'agit de fichiers au format privé stockés dans le répertoire archive.

PKG_DST_QKVERIFY

Les fichiers appartenant à ces classes sont vérifiés après l'installation à l'aide d'un algorithme rapide ne nécessitant pas ou peu de données. Cette vérification rapide définit en premier lieu les attributs de chaque fichier puis vérifie que l'opération s'est déroulée correctement. Un test est ensuite effectué pour comparer la taille du fichier et le temps de modification au fichier pkgmap. Aucune somme de contrôle n'est effectuée et la reprise sur erreur est moins efficace que celle offerte par le mécanisme de vérification standard. Dans l'éventualité d'une coupure de courant ou d'une défaillance du disque pendant l'installation, le fichier contenu risque de ne pas concorder avec les fichiers installés. Cette incohérence peut toujours être résolue avec pkgrm.

PKG_CAS_PASSRELATIVE

Le script d'action de classe de l'installation reçoit en général de la part du fichier stdin une liste de paires source/destination lui indiquant quels fichiers installer. Les classes attribuées à PKG_CAS_PASSRELATIVE ne reçoivent pas ces paires source/destination. Elles reçoivent à la place une seule liste dont la première entrée correspond à l'emplacement du package source et les autres correspondent aux chemins de destination. Ceci sert spécifiquement à simplifier l'extraction d'une archive. À partir de l'emplacement du package source, vous pouvez trouver l'archive dans le répertoire archive. Les chemins de destination sont ensuite transmis à la fonction chargée d'extraire le contenu de l'archive. Chaque chemin de destination fourni est absolu ou relatif au répertoire de base selon que son emplacement d'origine se trouve dans root ou dans reloc. Lorsque cette option est sélectionnée, il peut être difficile d'utiliser des chemins relatifs et des chemins absolus dans une même classe.

Un script d'action de classe est nécessaire pour chaque classe archivée. Il s'agit d'un fichier contenant des commandes Bourne shell qui est exécuté par pkgadd pour installer les fichiers à partir de l'archive. Si un script d'action de classe est détecté dans le répertoire install du package, pkgadd délègue toute la responsabilité de l'installation au script. Le script d'action de classe est exécuté avec les droits d'accès à root et peut placer ses fichiers à tout endroit du système cible.


Remarque –

Le seul mot clé essentiel à l'implémentation d'un package d'archive de classe est PKG_SRC_NOVERIFY. Les autres peuvent être utilisés pour accélérer l'installation ou conserver le code.


Utilitaire faspac

L'utilitaire faspac convertit un package ABI standard en format d'archive de classe utilisé pour les packages fournis en standard. Cet utilitaire archive des fichiers à l'aide de cpio et compresse à l'aide de compress. Le package obtenu dispose d'un répertoire supplémentaire qui est stocké dans le répertoire supérieur archive. Ce répertoire doit contenir toutes les archives nommées par classe. Le répertoire install doit contenir les scripts d'action de classe nécessaires à la décompression de chaque archive. Les chemins absolus ne sont pas archivés.

L'utilitaire faspac a le format suivant :


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

Toutes les options de la commande faspac sont décrites dans le tableau suivant :

Option 

Description 

-m Méthode d'archivage

 

Spécifie une méthode d'archivage ou de compression. bzip2 est l'utilitaire de compression utilisé par défaut. Pour utiliser à la place la méthode zip/unzip, utilisez -m zip ou pour utiliser la méthode cpio/compress, utilisez -m cpio.

-a

Corrige les attributs (seul l'utilisateur root peut effectuer cette opération). 

-s

Indique la conversion des packages de type ABI standard. Cette option convertit un package cpio ou compressé en package conforme ABI standard. 

-q

Spécifie le mode silencieux. 

-d Répertoire de base

Indique le répertoire contenant tous les packages concernés par l'opération de la ligne de commande. Cette option et l'entrée Liste de packages s'excluent mutuellement.

-x Liste d'exclusions

Spécifie une liste de packages, séparés par des virgules ou entre guillemets, à exclure de l'opération. 

Liste de packages

Spécifie la liste des packages à traiter.