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

Chapitre 1 Conception d'un package

Avant de créer un package, vous devez déterminer les fichiers à créer et les commandes à exécuter. Vous devez également réfléchir à la configuration logicielle requise de l'application et aux besoins de votre clientèle. Vos clients sont les administrateurs chargés d'installer le package. Ce chapitre traite des fichiers, commandes et critères à connaître et à prendre en considération avant de commencer à créer un package.

La liste suivante répertorie les informations disponibles dans le présent chapitre :

Instructions relatives à la conception d'un package

Servez-vous de ces listes de tâches pour trouver des instructions détaillées sur la création et la vérification d'un package.

Package - De quoi s'agit-il ?

Une application logicielle est livrée sous forme d'unités appelées packages. Un package est un ensemble de fichiers et de répertoires requis par un produit logiciel. Un package est habituellement conçu et créé par le développeur d'applications après le développement du code de l'application. Chaque produit logiciel doit être créé sous forme d'un ou plusieurs packages afin de faciliter son transfert sur un support de distribution. Le produit logiciel peut ensuite être produit en série et installé par les administrateurs.

Un package est un ensemble de fichiers et de répertoires d'un format donné. Ce format se conforme à l'ABI (Application Binary Interface) qui complète la définition d'interface du système V.

Composants d'un package

Les composants d'un package se répartissent en deux catégories.

Les fichiers de contrôle se répartissent également en deux catégories : les fichiers d'information et les scripts d'installation. Certains fichiers de contrôle sont obligatoires. D'autres sont facultatifs.

Pour créer le package d'une application, vous devez au préalable créer les composants obligatoires ainsi que tout élément facultatif entrant dans la composition du package. Vous pouvez ensuite créer le package à l'aide de la commande pkgmk.

Pour créer un package, vous devez fournir les éléments suivants :

La figure suivante illustre le contenu d'un package.

Figure 1–1 Contenu d'un package

Les contextes précédent et suivant décrivent le graphique.

Composants obligatoires d'un package

Vous devez créer les composants suivants avant de créer un package :

Composants facultatifs d'un package

Fichiers d'information d'un package

Vous pouvez inclure quatre fichiers d'information facultatifs dans votre package :

Chaque fichier d'information du package doit avoir une entrée dans le fichier prototype. Reportez-vous à Création de fichiers d'information pour plus d'informations sur la création de ce type de fichier.

Scripts d'installation d'un package

Les scripts d'installation ne sont pas obligatoires. Vous pouvez cependant inclure des scripts qui effectuent des opérations personnalisées lors de l'installation de votre package. Un script d'installation dispose des caractéristiques suivantes :

Les quatre types de script sont les suivants :

Reportez-vous à Création de scripts d'installation pour plus d'informations sur les scripts d'installation.

Critères à prendre en considération avant de créer un package

Avant de créer un package, vous devez décider si votre produit doit être composé d'un ou plusieurs packages. Notez que l'installation de plusieurs packages de petite taille est en général plus longue que l'installation d'un seul package de grande taille. Bien que créer un seul package soit une bonne idée, cela n'est pas toujours possible. Si vous décidez de créer plusieurs packages, vous devez déterminer la segmentation du code de l'application. La présente section répertorie une liste de critères à utiliser pour planifier la création d'un package.

Bon nombre des critères de création d'un package ont des éléments en commun. Satisfaire à tous les critères de manière égale est souvent difficile. Ces critères sont présentés par ordre d'importance. Toutefois, cet ordre n'est qu'indicatif et peut être adapté à chaque circonstance. Bien que chaque critère soit important, leur optimisation afin de produire un ensemble de packages de qualité vous revient.

Pour voir d'autres idées de conception, reportez-vous au Chapitre6Techniques avancées de création de packages.

Packages pouvant être installés à distance

Tous les packages doivent pouvoir être installés à distance. Pouvoir être installé à distance signifie que l'administrateur chargé d'installer votre package a la possibilité de tenter son installation sur un système client et non pas nécessairement sur le système de fichiers root (/) sur lequel la commande pkgadd est exécutée.

Optimisation pour les configurations client-serveur

Prenez en compte les divers types de configurations logicielles système (par exemple, un système autonome et un serveur) lors de la création des packages. Une bonne conception de packages sépare les fichiers concernés afin d'optimiser l'installation de chaque type de configuration. Par exemple, le contenu des systèmes de fichiers root (/) et /usr doit être segmenté afin de pouvoir aisément prendre en charge les configurations serveur.

Package conçu d'après des limites fonctionnelles

Les packages doivent être autonomes et facilement identifiés d'après un groupe de fonctions. Par exemple, un package contenant UFS doit contenir toutes les fonctions UFS et être limité aux programmes binaires UFS.

Les packages doivent être organisés du point de vue du client en unités fonctionnelles.

Package en fonction des redevances

Placez le code requérant par contrat le versement d'une redevance dans un package ou groupe packages distinct. Ne répartissez pas le code dans des packages superflus.

Package en fonction des dépendances système

Placez les programmes binaires qui dépendent du système dans des packages distincts. Par exemple, le code du noyau doit être placé dans un package distinct, chaque architecture d'implémentation correspondant à un package différent. Cette règle s'applique également aux programmes binaires de diverses architectures. Par exemple, les programmes binaires d'un système SPARC peuvent être contenus dans un package et ceux d'un système x86, dans un autre.

Fonctions spécifiques à chaque package

Évitez autant que possible de créer des fichiers dupliqués lors de la création de vos packages. Toute duplication inutile se traduit par des problèmes de prise en charge et de version. Si votre produit se compose de plusieurs packages, comparez le contenu des packages régulièrement pour éviter de conserver des fichiers dupliqués.

Package en fonction de la localisation

Les éléments spécifiques à la localisation doivent se trouver dans un package à part. Le modèle idéal de création de packages d'un produit à localiser se compose d'un package par version localisée. Il arrive malheureusement que les limites organisationnelles entrent en conflit avec les critères des limites fonctionnelles et des limites du produit.

Les paramètres internationaux par défaut peuvent également être fournis dans un package distinct. Cette conception isole les fichiers concernés par des modifications à apporter au niveau de la localisation et standardise le format de livraison des packages de localisation.

Packages Image Packaging System (IPS)

Ce document traite des packages SVR4. Pour une livraison dans le système d'exploitation OpenSolaris, optez pour des packages IPS. Le système d'exploitation OpenSolaris prend en charge les packages SVR4 et IPS. Le logiciel IPS dialogue avec les référentiels réseau et utilise le système de fichiers ZFS. Dans le système d'exploitation OpenSolaris, il est possible de publier des packages SVR4 existants dans un référentiel IPS à l'aide de la commande pkgsend(1).

Le tableau suivant permet de comparer les commandes des systèmes de d'empaquetage SVR4 et IPS. Pour de plus amples informations sur IPS, voir Getting Started With the Image Packaging System.

Tableau 1–1 Conception d'un package : IPS et SVR4

Tâche 

Commande IPS 

Commande SVR4 

Installation d'un nouveau package 

pkg install

pkgadd -a

Affichage des informations sur l'état d'un package 

pkg list

pkginfo

Vérification de l'installation d'un package 

pkg verify

pkgchk -v

Afficher des informations sur un package 

pkg info

pkginfo -l

Listage du contenu d'un package 

pkg contents

pkgchk -l

Désinstallation d'un package 

pkg uninstall

pkgrm

Commandes, fichiers et scripts de conception d'un package

La section suivante décrit les commandes, fichiers et scripts que vous pouvez être amené à utiliser lors de la manipulation de packages. Ces éléments sont décrits dans les pages de manuel et détaillés tout au long de ce guide dans le cadre de l'opération qu'ils effectuent.

Le tableau suivant répertorie les commandes qui permettent de créer, vérifier et installer un package, ainsi que d'obtenir des informations sur celui-ci.

Tableau 1–2 Commandes de conception d'un package

Tâche 

Commande / Page de manuel 

Description 

Pour plus d'informations 

Création de packages 

pkgproto(1)

Génère un fichier prototype à saisir dans la commande pkgmk.

Exemple : Création d'un fichier prototype à l'aide de la commande pkgproto

pkgmk(1)

Crée un package à installer. 

Création d'un package

 

Installation, suppression et transfert de packages 

pkgadd(1M)

Installe un package logiciel sur un système. 

Installation de packages logiciels

pkgask(1M)

Stocke les réponses à un script request.

Règles de conception pour les scripts request

 

pkgtrans(1)

Copie des packages sur un support de distribution. 

Transfert d'un package sur un support distribution

 

pkgrm(1M)

Supprime un package d'un système. 

Suppression d'un package

 

Obtention d'informations sur des packages 

pkgchk(1M)

Vérifie l'intégrité d'un package logiciel. 

Vérification de l'intégrité d'un package

pkginfo(1)

Affiche des informations sur un package logiciel. 

Commande pkginfo

 

pkgparam(1)

Affiche les valeurs des paramètres d'un package. 

Commande pkgparam

 

Modification des packages installés 

installf(1M)

Incorpore un nouvel objet de package dans un package déjà installé. 

Règles de conception des scripts de procédure et Chapitre5Création d'un package : Études de cas

removef(1M)

Supprime un objet de package d'un package déjà installé. 

Règles de conception des scripts de procédure

 

Le tableau suivant répertorie les fichiers d'information permettant de créer un package.

Tableau 1–3 Fichiers d'information d'un package

Fichier 

Description 

Pour plus d'informations 

admin(4)

Fichier des paramètres par défaut de l'installation d'un package 

Fichier de valeurs d'administration par défaut

compver(4)

Fichier de compatibilité d'un package 

Définition des dépendances d'un package

copyright(4)

Fichier d'information sur le copyright d'un package 

Rédaction d'un message de copyright

depend(4)

Fichier des dépendances d'un package 

Définition des dépendances d'un package

pkginfo(4)

Fichier des caractéristiques d'un package 

Création d'un fichier pkginfo

pkgmap(4)

Fichier de description du contenu d'un package 

Fichier pkgmap

prototype(4)

Fichier d'information d'un package 

Création d'un fichier prototype

space(4)

Fichier de l'espace disque requis d'un package 

Réservation d'espace supplémentaire sur un système cible

Le tableau suivant répertorie les scripts d'installation facultatifs disponibles pour influencer la décision d'installer ou non un package et le choix de la méthode d'installation.

Tableau 1–4 Scripts d'installation d'un package

Script 

Description 

Pour plus d'informations 

request

Demande des informations au programme d'installation. 

Rédaction d'un script request

checkinstall

Recueille des données du système de fichiers. 

Recueil de données d'un système de fichiers à l'aide du script checkinstall

preinstall

Effectue toute opération d'installation personnalisée avant l'installation des classes. 

Rédaction de scripts de procédure

postinstall

Effectue toute opération d'installation personnalisée après l'installation de tous les volumes. 

Rédaction de scripts de procédure

preremove

Effectue toute opération de suppression personnalisée avant la suppression des classes. 

Rédaction de scripts de procédure

postremove

Effectue toute opération de suppression personnalisée après la suppression de toutes les classes. 

Rédaction de scripts de procédure

Action de classe 

Effectue une série d'opérations sur un groupe d'objets spécifique. 

Rédaction de scripts d'action de classe