Utilisez la commande pkgmk pour créer votre package. La commande pkgmk effectue les opérations suivantes :
Enregistrement de tous les objets définis dans le fichier prototype au format répertoire.
Création du fichier pkgmap pour remplacer le fichier prototype.
Création d'un package pouvant être installé, utilisé comme entrée de la commande pkgadd.
La forme la plus simple de cette commande est la commande pkgmk sans aucune option. Avant d'utiliser la commande pkgmk sans aucune option, vérifiez que votre répertoire de travail actuel contient le fichier prototype du package. Les résultats de la commande, des fichiers et des répertoires sont consignés dans le répertoire /var/spool/pkg.
Lorsque vous créez un package à l'aide de la commande pkgmk, un fichier pkgmap est créé en remplacement du fichier prototype. Le fichier pkgmap de l'exemple précédent contient les données suivantes :
$ more pkgmap : 1 3170 1 d none SUNWcadap 0755 root sys 1 d none SUNWcadap/demo 0755 root bin 1 f none SUNWcadap/demo/file1 0555 root bin 14868 45617 837527496 1 d none SUNWcadap/lib 0755 root bin 1 f none SUNWcadap/lib/file2 0644 root bin 1551792 62372 837527499 1 d none SUNWcadap/man 0755 bin bin 1 d none SUNWcadap/man/man1 0755 bin bin 1 f none SUNWcadap/man/man1/file3.1 0444 bin bin 3700 42989 837527500 1 f none SUNWcadap/man/man1/file4.1 0444 bin bin 1338 44010 837527499 1 f none SUNWcadap/man/windex 0644 root other 157 13275 837527499 1 d none SUNWcadap/srcfiles 0755 root bin 1 f none SUNWcadap/srcfiles/file5 0555 root bin 12208 20280 837527497 1 f none SUNWcadap/srcfiles/file6 0555 root bin 12256 63236 837527497 1 i pkginfo 140 10941 837531104 $ |
Le format de ce fichier est très similaire au format du fichier prototype. Toutefois, le fichier pkgmap inclut les informations suivantes :
La première ligne indique le nombre de volumes balayés par le package et la taille approximative du package une fois installé.
Par exemple, : 1 3170 indique que le package balaye un seul volume et qu'il utilise environ 3170 blocs de 512 octets une fois installé.
Trois autres champs définissent la taille, la somme de contrôle et le temps de modification de chaque objet de package.
Les objets de package sont répertoriés par ordre alphabétique (par classe puis par nom de chemin) pour réduire le temps d'installation du package.
Si nécessaire, créez un fichier pkginfo.
Pour une procédure détaillée, reportez-vous à Procédure de création d'un fichier pkginfo.
Si nécessaire, créez un fichier prototype.
Pour une procédure détaillée, reportez-vous à Procédure de création d'un fichier prototype à l'aide de la commande pkgproto.
Faites du répertoire contenant le fichier prototype du package votre répertoire de travail.
Créez le package.
$ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device] [-f filename] [-l limit] [-p pstamp] [-r rootpath] [-v version] [PARAM=value] [pkginst] |
Remplace la version existante du package.
Remplace les informations sur l'architecture du fichier pkginfo.
Demande que rép-src-base soit ajouté au début des noms de chemin réadressables lorsque la commande pkgmk recherche des objets sur le système de création.
Indique que la package doit être copié sur le périphérique qui peut être un nom de chemin de répertoire absolu, une disquette ou un disque amovible.
Nomme le fichier nomdefichier utilisé comme fichier prototype. Les noms par défaut sont prototype ou Prototype.
Spécifie la taille maximale, en blocs de 512 octets, du périphérique de sortie.
Remplace la définition de l'horodatage de production figurant dans le fichier pkginfo.
Demande que le répertoire root cheminroot soit utilisé pour localiser les objets sur le système de développement.
Remplace les informations de version figurant dans le fichier pkginfo.
Définit des variables d'environnement globales. Les variables commençant par une minuscule sont résolues lors de la phase de création. Celles qui commencent par une majuscule sont placées dans le fichier pkginfo afin d'être utilisée lors de la phase d'installation.
Indique un package par son abréviation ou une instance spécifique (par exemple, SUNWcadap.4).
Pour plus d'informations, reportez-vous à la page de manuel pkgmk(1).
Vérifiez le contenu du package.
$ pkgchk -d device-name pkg-abbrev Checking uninstalled directory format package pkg-abbrev from device-name ## Checking control scripts. ## Checking package objects. ## Checking is complete. $ |
Indique l'emplacement du package. Notez que nom-périphérique peut être un nom de chemin d'accès à un répertoire complet ou être les identificateurs d'une bande ou d'un disque amovible.
Correspond au nom d'un ou plusieurs packages à vérifier (séparés par des espaces). En cas d'omission, la commande pkgchk vérifie tous les packages disponibles.
La commande pkgchk indique quels aspects du package sont vérifiés et, le cas échéant, affiche des avertissements ou des messages d'erreur. Pour plus d'informations sur la commande pkgchk, reportez-vous à Vérification de l'intégrité d'un package.
Les erreurs doivent être prises très au sérieux. Une erreur peut indiquer la nécessité de corriger un script. Consultez toutes les erreurs et ignorez-les si vous êtes en désaccord avec le résultat de la commande pkgchk.
L'exemple suivant utilise le fichier prototype créé à la rubrique Derniers ajustements à apporter à un fichier prototype créé à l'aide de la commande pkgproto.
$ cd /home/jane/InfoFiles $ pkgmk ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system990708093144" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. $ |
Si votre package contient des fichiers réadressables, vous pouvez utiliser l'option -b rép-src-base de la commande pkgmk pour spécifier un nom de chemin à ajouter au début des noms de chemin réadressables lors de la création du package. Cette option est utile lorsque vous n'avez pas utilisé le format chemin1=chemin2 pour les fichiers réadressables, ni spécifié de chemin de recherche à l'aide de la commande !search dans le fichier prototype.
La commande suivante crée un package doté des caractéristiques suivantes :
Le package est créé à partir de l'exemple de fichier prototype créé par la commande pkgproto. Reportez-vous à Exemple : Création d'un fichier prototype à l'aide de la commande pkgproto pour plus d'informations.
Le package est créé sans modifier les champs path.
Le package ajoute une entrée pour le fichier pkginfo.
$ cd /home/jane/InfoFiles $ pkgmk -o -b /home/jane ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system960716102636" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. |
Dans cet exemple, le package est créé dans le répertoire par défaut, /var/spool/pkg, en spécifiant l'option -o. Cette option remplace le package créé à l'Exemple 2–2.
Si vous placez les fichiers d'information de package (notamment pkginfo et prototype) et les objets de package dans deux répertoires distincts, vous pouvez créer votre package à l'aide des options -b rép-src-base et -r cheminroot dans la commande pkgmk. Si vous placez les objets de package dans un répertoire appelé /product/pkgbin et les autres fichiers d'information de package dans un répertoire appelé /product/pkgsrc, vous pouvez utiliser la commande suivante pour placer le package dans le répertoire /var/spool/pkg :
$ pkgmk -b /product/pkgbin -r /product/pkgsrc -f /product/pkgsrc/prototype |
(Facultatif) Vous pouvez utiliser les commandes suivantes pour obtenir le même résultat :
$ cd /product/pkgsrc $ pkgmk -o -b /product/pkgbin |
Dans cet exemple, la commande pkgmk utilise le répertoire de travail actuel pour localiser les autres éléments du package (notamment les fichiers d'information prototype et pkginfo).
Pour ajouter tout fichier d'information ou script d'installation facultatif à votre package, reportez-vous au Chapitre3Amélioration de la fonctionnalité d'un package (opérations). Sinon, une fois le package créé, vous devez vérifier son intégrité. Le Chapitre4Vérification et transfert d'un package vous explique comment vérifier l'intégrité du package et décrit sa procédure de transfert sur un support de distribution.