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 :
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.
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.
Les composants d'un package se répartissent en deux catégories.
Les objets du package correspondent aux fichiers d'application à installer.
Les fichiers de contrôle contrôlent la méthode, l'emplacement et la décision de l'installation.
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 :
Objets du package (fichiers et répertoires de l'application logicielle)
Deux fichiers d'information obligatoires (les fichiers pkginfo et prototype)
Fichiers d'information facultatifs
Scripts d'installation facultatifs
La figure suivante illustre le contenu d'un package.
Vous devez créer les composants suivants avant de créer un package :
Objets du package
Ces composants entrent dans la composition de l'application. Il peut s'agir des éléments suivants :
Fichiers (fichiers exécutables ou fichiers de données)
Répertoires
Tubes nommés
Liens
Périphériques
Fichier pkginfo
Le fichier pkginfo est un fichier d'information de package obligatoire qui définit les valeurs des paramètres. Les valeurs des paramètres incluent le nom abrégé du package, le nom complet du package et l'architecture du package. Pour plus d'informations, reportez-vous à Création d'un fichier pkginfo et à la page de manuel pkginfo(4).
Deux pages de manuel pkginfo(1) sont disponibles. La première décrit une commande de section 1 qui affiche des informations sur les packages installés. La deuxième décrit un fichier de section 4 qui répertorie les caractéristiques d'un package. Lorsque vous accédez aux pages de manuel, n'oubliez pas d'indiquer la section applicable à la page de manuel. Exemple : man -s 4 pkginfo.
Fichier prototype
Le fichier prototype est un fichier d'information obligatoire de package qui répertorie les composants d'un package. Chaque objet, fichier d'information et script d'installation d'un package dispose d'une entrée. Chaque entrée se compose de plusieurs champs d'information qui décrivent le composant en question, y compris son emplacement, ses attributs et le type de fichier. Pour plus d'informations, reportez-vous à Création d'un fichier prototype et à la page de manuel prototype(4).
Vous pouvez inclure quatre fichiers d'information facultatifs dans votre package :
Ce fichier indique les versions précédentes du package qui sont compatibles avec la version actuelle de votre package.
Ce fichier répertorie les packages qui disposent d'un lien particulier avec votre package.
Ce fichier indique l'espace disque requis sur l'environnement cible, outre l'espace requis par les objets définis dans le fichier prototype. De l'espace supplémentaire peut par exemple être nécessaire pour des fichiers créés dynamiquement lors de l'installation.
Ce fichier contient le texte du message de copyright qui s'affiche lors de l'installation du 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.
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 :
Le script se compose de commandes Bourne shell.
Les droits d'accès au fichier du script doivent être définis sur 0644.
Le script ne doit pas nécessairement contenir l'identificateur de shell ( #! /bin/sh).
Les quatre types de script sont les suivants :
Script request
Le script request demande à l'administrateur qui installe le package de saisir des informations.
Script checkinstall
Le script checkinstall procède à certains contrôles du système de fichiers.
Le script checkinstall n'est disponible que pour la version 2.5 de SolarisTM et les versions compatibles.
Les scripts de procédure définissent les actions qui se déroulent à des moments donnés de l'installation ou de la désinstallation d'un package. Vous pouvez créer quatre scripts de procédure avec les noms prédéfinis suivants : preinstall, postinstall, preremove et postremove.
Les scripts d'action de classe définissent une série d'opérations à effectuer sur un groupe d'objets.
Reportez-vous à Création de scripts d'installation pour plus d'informations sur les scripts d'installation.
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.
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.
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.
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.
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.
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.
É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.
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.
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 |
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 |
Génère un fichier prototype à saisir dans la commande pkgmk. |
Exemple : Création d'un fichier prototype à l'aide de la commande pkgproto |
|
Crée un package à installer. |
|
||
Installation, suppression et transfert de packages |
Installe un package logiciel sur un système. | ||
Stocke les réponses à un script request. |
|
||
Copie des packages sur un support de distribution. |
|
||
Supprime un package d'un système. |
|
||
Obtention d'informations sur des packages |
Vérifie l'intégrité d'un package logiciel. | ||
Affiche des informations sur un package logiciel. |
|
||
Affiche les valeurs des paramètres d'un package. |
|
||
Modification des packages installés |
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 |
|
Supprime un objet de package d'un package déjà installé. |
|
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 |
---|---|---|
Fichier des paramètres par défaut de l'installation d'un package | ||
Fichier de compatibilité d'un package | ||
Fichier d'information sur le copyright d'un package | ||
Fichier des dépendances d'un package | ||
Fichier des caractéristiques d'un package | ||
Fichier de description du contenu d'un package | ||
Fichier d'information d'un package | ||
Fichier de l'espace disque requis d'un package |
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. | |
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. | |
postinstall |
Effectue toute opération d'installation personnalisée après l'installation de tous les volumes. | |
preremove |
Effectue toute opération de suppression personnalisée avant la suppression des classes. | |
postremove |
Effectue toute opération de suppression personnalisée après la suppression de toutes les classes. | |
Action de classe |
Effectue une série d'opérations sur un groupe d'objets spécifique. |