JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Guide du développeur de l'empaquetage d'applications     Oracle Solaris 10 1/13 Information Library (Français)
search filter icon
search icon

Informations document

Préface

1.  Conception d'un package

2.  Création d'un package

3.  Amélioration de la fonctionnalité d'un package (opérations)

4.  Vérification et transfert d'un package

5.  Création d'un package : Etudes de cas

6.  Techniques avancées de création de packages

Spécification du répertoire de base

Fichier de valeurs d'administration par défaut

S'habituer à l'incertitude

Utilisation du paramètre BASEDIR

Utilisation des répertoires de base paramétriques

Exemples : Utilisation des répertoires de base paramétriques

Fichier pkginfo

Fichier pkgmap

Gestion du répertoire de base

Prise en compte du réadressage

Parcours des répertoires de base

Utilisation du paramètre BASEDIR

Fichier pkginfo

Fichier pkgmap

Exemple : Analyse de scripts parcourant un BASEDIR

Script request

Script checkinstall

Utilisation de chemins paramétriques relatifs

Fichier pkginfo

Fichier pkgmap

Exemple : Script request parcourant un chemin paramétrique relatif

Prise en charge du réadressage dans un environnement hétérogène

Approche traditionnelle

Packages réadressables

Exemple : Package réadressable traditionnel

Fichier pkginfo

Fichier pkgmap

Packages absolus

Exemple : Package absolu traditionnel

Fichier pkgmap

Packages composites

Exemple : Solution traditionnelle

Fichier pkginfo

Fichier pkgmap

Au-delà de la tradition

Informations supplémentaires sur les packages composites

Noms de chemins absolus à l'apparence réadressable

Exemple : Modification d'un fichier

Description

Implémentation

Exemple

Exemple : Création d'un fichier

Description

Implémentation

Exemple

Exemple : Package composite

Fichier pkginfo

Fichier pkgmap

Création de packages pouvant être installés à distance

Exemple : Installation sur un système client

Exemple : Installation sur un serveur ou un système autonome

Exemple : Montage de systèmes de fichiers partagés

Application de patchs à des packages

Script checkinstall

Script preinstall

Script d'action de classe

Script postinstall

Script patch_checkinstall

Script patch_postinstall

Mise à niveau des packages

Script request

Script postinstall

Création de packages d'archives de classe

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

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

Utilitaire faspac

Glossaire

Index

Mise à niveau des packages

La procédure de mise à niveau d'un package est très différente de la procédure de remplacement d'un package. Bien qu'il existe des outils particuliers prenant en charge la mise à niveau des packages standard fournis dans le cadre du système d'exploitation Oracle Solaris, un package non fourni en standard peut être conçu pour prendre en charge sa propre mise à niveau. Plusieurs des exemples précédents décrivent des packages qui prévoient et contrôlent minutieusement la méthode d'installation sous la direction de l'administrateur. Vous pouvez concevoir le script request pour qu'il prenne aussi en charge la mise à niveau directe d'un package. Si l'administrateur décide d'installer un package en remplacement intégral d'un autre package, ne laissant aucun fichier obsolète, les scripts du package peuvent se charger de l'opération.

Le script request et le script postinstall de cet exemple fournissent un package simple pouvant être mis à niveau. Le script request communique avec l'administrateur et définit ensuite un fichier simple dans le répertoire /tmp pour supprimer l'ancienne instance du package. Bien que le script request crée un fichier (ce qui est interdit), l'opération est passée outre car tous les utilisateurs ont accès au fichier /tmp.

Le script postinstall exécute ensuite le script shell dans /tmp, lequel exécute la commande pkgrm requise sur l'ancien package avant de s'auto-supprimer.

Cet exemple illustre une mise à niveau de base. Il se compose de moins de cinquante lignes de code et contient d'assez longs messages. Il pourrait être étendu afin de désinstaller la mise à niveau ou d'apporter d'autres transformations majeures au package en fonction des besoins du concepteur.

Le concepteur de l'interface utilisateur d'une option de mise à niveau doit être certain que l'administrateur connaît la procédure et qu'il a expressément demander une mise à niveau plutôt qu'une installation en parallèle. La réalisation d'une opération complexe bien comprise telle qu'une mise à niveau est tout à fait acceptable tant que l'interface utilisateur clarifie l'opération.

Script request

# request script
control an upgrade installation
 
PATH=/usr/sadm/bin:$PATH
UPGR_SCRIPT=/tmp/upgr.$PKGINST
 
UPGRADE_MSG="Do you want to upgrade the installed version ?"
 
UPGRADE_HLP="If upgrade is desired, the existing version of the \
    package will be replaced by this version. If it is not \
    desired, this new version will be installed into a different \
    base directory and both versions will be usable."
 
UPGRADE_NOTICE="Conflict approval questions may be displayed. The \
    listed files are the ones that will be upgraded. Please \
    answer \"y\" to these questions if they are presented."
 
pkginfo -v 1.0 -q SUNWstuf.\*
 
if [ $? -eq 0 ]; then
      # See if upgrade is desired here
      response=`ckyorn -p "$UPGRADE_MSG" -h "$UPGRADE_HLP"`
      if [ $response = "y" ]; then
            OldPkg=`pkginfo -v 1.0 -x SUNWstuf.\* | nawk ' \
            /SUNW/{print $1} '`
            # Initiate upgrade
            echo "PATH=/usr/sadm/bin:$PATH" > $UPGR_SCRIPT
            echo "sleep 3" >> $UPGR_SCRIPT
            echo "echo Now removing old instance of $PKG" >> \
            $UPGR_SCRIPT
            if [ ${PKG_INSTALL_ROOT} ]; then
                  echo "pkgrm -n -R $PKG_INSTALL_ROOT $OldPkg" >> \
                  $UPGR_SCRIPT
            else
                  echo "pkgrm -n $OldPkg" >> $UPGR_SCRIPT
            fi
            echo "rm $UPGR_SCRIPT" >> $UPGR_SCRIPT
            echo "exit $?" >> $UPGR_SCRIPT
 
            # Get the original package's base directory
            OldBD=`pkgparam $OldPkg BASEDIR`
            echo "BASEDIR=$OldBD" > $1
            puttext -l 5 "$UPGRADE_NOTICE"
       else
             if [ -f $UPGR_SCRIPT ]; then
                   rm -r $UPGR_SCRIPT
             fi
       fi
fi
 
exit 0

Script postinstall

# postinstall
to execute a simple upgrade
 
PATH=/usr/sadm/bin:$PATH
UPGR_SCRIPT=/tmp/upgr.$PKGINST
 
if [ -f $UPGR_SCRIPT ]; then
      sh $UPGR_SCRIPT &
fi
 
exit 0