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

Création d'un package

Utilisez la commande pkgmk pour créer votre package. La commande pkgmk effectue les opérations suivantes :

Utilisation de la commande pkgmk la plus simple

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.

Fichier pkgmap

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 :

ProcedureProcédure de création d'un package

  1. 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.

  2. 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.

  3. Faites du répertoire contenant le fichier prototype du package votre répertoire de travail.

  4. 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]
    -o

    Remplace la version existante du package.

    -a arch

    Remplace les informations sur l'architecture du fichier pkginfo.

    -b rép-src-base

    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.

    -d périphérique

    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.

    -f nomdefichier

    Nomme le fichier nomdefichier utilisé comme fichier prototype. Les noms par défaut sont prototype ou Prototype.

    -l limite

    Spécifie la taille maximale, en blocs de 512 octets, du périphérique de sortie.

    -p horodp

    Remplace la définition de l'horodatage de production figurant dans le fichier pkginfo.

    -r cheminroot

    Demande que le répertoire root cheminroot soit utilisé pour localiser les objets sur le système de développement.

    -v version

    Remplace les informations de version figurant dans le fichier pkginfo.

    PARAM=valeur

    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.

    instpkg

    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).

  5. 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.
    $
    -d nom-périphérique

    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.

    pkg-abrév

    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.


    Attention – Attention –

    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.



Exemple 2–2 Création d'un package

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.
$


Exemple 2–3 Spécification d'un répertoire source pour les fichiers réadressables

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 :


$ 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.



Exemple 2–4 Spécification de répertoires source distincts pour les fichiers d'information et les objets de package

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).


Voir aussi

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.