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) |
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
Demande de participation de l'administrateur
Création d'un fichier lors de l'installation et enregistrement du fichier lors de la suppression
Script d'action de classe i.admin
Script de suppression r.cfgdata
Définition des compatibilités et des dépendances d'un package
Modification d'un fichier à l'aide de classes standard et de scripts d'action de classe
Script d'action de classe d'installation i.inittab
Script d'action de classe de suppression r.inittab
Modification d'un fichier à l'aide de la classe sed et d'un script postinstall
Modification d'un fichier à l'aide de la classe build
Modification de fichiers crontab au cours de l'installation
Script d'action de classe d'installation i.cron
Script d'action de classe de suppression r.cron
Installation et suppression d'un pilote à l'aide de scripts de procédure
Installation d'un pilote à l'aide de la classe sed et de scripts de procédure
Script d'action de classe sed (/etc/devlink.tab)
Script d'installation postinstall
Script de suppression preremove
Cette étude de cas modifie un fichier présent sur la machine d'installation lors de l'installation du package. Elle utilise une des trois méthodes de modification disponibles. Les deux autres méthodes sont décrites dans les rubriques Modification d'un fichier à l'aide de classes standard et de scripts d'action de classe et Modification d'un fichier à l'aide de la classe build. Le fichier modifié est /etc/inittab.
Cette étude de cas illustre les techniques suivantes :
Utilisation de la classe sed
Pour plus d'informations sur la classe sed, reportez-vous à Script de classe sed.
Utilisation d'un script postinstall
Pour plus d'informations sur ce script, reportez-vous à Rédaction de scripts de procédure.
Pour modifier /etc/inittab lors de l'installation à l'aide de la classe sed, vous devez effectuer les opérations suivantes :
Ajouter le script de la classe sed dans le fichier prototype.
Le nom du script doit être le nom du fichier à modifier. Dans l'exemple, le fichier à modifier est /etc/inittab et le script sed est de ce fait nommé /etc/inittab. Les champs mode, owner et groupe d'un script sed n'ont aucune spécification (ce qui est indiqué dans l'exemple prototype par des points d'interrogation). Le type de fichier du script sed doit être e (indiquant qu'il s'agit d'un fichier modifiable).
Inclure dans le paramètre CLASSES la classe sed.
Comme l'illustre l'exemple de fichier, sed est la seule classe à installer. Il pourrait cependant s'agir de bien d'autres classes.
Créer un script d'action de classe sed.
Votre package ne peut pas fournir de copie de /etc/inittab à l'apparence souhaitée, car /etc/inittab est un fichier dynamique ; il est donc impossible de prévoir son apparence à l'installation du package. Toutefois, l'utilisation d'un script sed vous permet de modifier le fichier /etc/inittab lors de l'installation du package.
Créer un script postinstall.
Vous devez exécuter la commande init q pour informer le système que le fichier /etc/inittab a été modifié. Dans l'exemple, cette opération ne peut être effectuée que dans un script postinstall. En examinant l'exemple du script postinstall, vous remarquerez que son seul objectif est d'exécuter la commande initq.
Cette démarche de modification du fichier /etc/inittab lors de l'installation présente un inconvénient ; elle nécessite un script complet (le script postinstall) pour la simple exécution de la commande init q.
PKG=case4 NAME=Case Study #4 CATEGORY=applications BASEDIR=/opt ARCH=SPARC VERSION=Version 1d05 CLASSES=sed
i pkginfo i postinstall e sed /etc/inittab ? ? ?
!remove # remove all entries from the table that are associated # with this package, though not necessarily just # with this package instance /^[^:]*:[^:]*:[^:]*:[^#]*#ROBOT$/d !install # remove any previous entry added to the table # for this particular change /^[^:]*:[^:]*:[^:]*:[^#]*#ROBOT$/d # add the needed entry at the end of the table; # sed(1) does not properly interpret the '$a' # construct if you previously deleted the last # line, so the command # $a\ # rb:023456:wait:/usr/robot/bin/setup #ROBOT # will not work here if the file already contained # the modification. Instead, you will settle for # inserting the entry before the last line! $i\ rb:023456:wait:/usr/robot/bin/setup #ROBOT
# make init re-read inittab /sbin/init q || exit 2 exit 0