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
Modification d'un fichier à l'aide de la classe sed et d'un script postinstall
Script d'action de classe sed (/etc/inittab)
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 existant lors de l'installation d'un package à l'aide de classes standard et de scripts d'action de classe. 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 la classe sed et d'un script postinstall et Modification d'un fichier à l'aide de la classe build. Le fichier modifié est /etc/inittab .
Cette étude de cas illustre la façon d'utiliser les scripts d'action de classe d'installation et de suppression. Pour plus d'informations, reportez-vous à Rédaction de scripts d'action de classe.
Pour modifier /etc/inittab au cours de l'installation à l'aide de classes et de scripts d'action de classe, vous devez effectuer les opérations suivantes :
Créer une classe.
Créez une classe appelée inittab . Vous devez fournir un script d'action de classe d'installation et de suppression pour cette classe. Définissez la classe inittab dans le paramètre CLASSES du fichier pkginfo.
Créer un fichier inittab.
Ce fichier contient les informations de l'entrée à ajouter dans /etc/inittab . Remarquez dans le fichier prototype que inittab appartient à la classe inittab et que son type de fichier est e (modifiable).
Créer un script d'action de classe d'installation (i.inittab).
N'oubliez pas que les scripts d'action de classe doivent produire les mêmes résultats chaque fois qu'ils sont exécutés. Le script d'action de classe effectue les procédures suivantes :
Il regarde si cette entrée a déjà été ajoutée.
Si elle a déjà été ajoutée, il supprime toutes les versions de l'entrée qu'il trouve.
Il modifie le fichier inittab et ajoute des lignes de commentaires indiquant d'où provient l'entrée.
Il replace le fichier temporaire dans /etc/inittab.
Il exécute la commande init q lorsqu'il reçoit l'indicateur ENDOFCLASS.
Notez que la commande init q peut être effectuée par ce script d'installation. Cette démarche ne requiert pas de script postinstall d'une ligne.
Créer un script d'action de classe de suppression (r.inittab).
Le script de suppression est très similaire au script d'installation. Les informations ajoutées par les scripts d'installation sont supprimées et la commande init q est exécutée.
Cette étude de cas est plus complexe que la suivante ; reportez-vous à Modification d'un fichier à l'aide de la classe sed et d'un script postinstall. Au lieu de fournir deux fichiers, trois sont nécessaires et le fichier /etc/inittab fourni n'est qu'un substituant contenant un segment de l'entrée à insérer. Ce segment aurait pu être placé dans le fichier i.inittab mais la commande pkgadd doit avoir un fichier à transmettre au fichier i.inittab. En outre, la procédure de suppression doit être placée dans un fichier distinct (r.inittab ). Bien que cette méthode fonctionne bien, il est recommandé de la réserver aux situations impliquant l'installation complexe de plusieurs fichiers. Reportez-vous à Modification de fichiers crontab au cours de l'installation.
Le programme sed utilisé dans Modification d'un fichier à l'aide de la classe sed et d'un script postinstall prend en charge plusieurs instances d'un package puisque le commentaire situé à la fin de l'entrée inittab se base sur l'instance d'un package. L'étude de cas de la rubrique Modification d'un fichier à l'aide de la classe build illustre une démarche plus rationalisée de modification du fichier /etc/inittab pendant l'installation.
PKG=case5 NAME=Case Study #5 CATEGORY=applications BASEDIR=/opt ARCH=SPARC VERSION=Version 1d05 CLASSES=inittab
i pkginfo i i.inittab i r.inittab e inittab /etc/inittab ? ? ?
# PKGINST parameter provided by installation service while read src dest do # remove all entries from the table that # associated with this PKGINST sed -e "/^[^:]*:[^:]*:[^:]*:[^#]*#$PKGINST$/d" $dest > /tmp/$$itab || exit 2 sed -e "s/$/#$PKGINST" $src >> /tmp/$$itab || exit 2 mv /tmp/$$itab $dest || exit 2 done if [ "$1" = ENDOFCLASS ] then /sbin/init q || exit 2 fi exit 0
# PKGINST parameter provided by installation service while read src dest do # remove all entries from the table that # are associated with this PKGINST sed -e "/^[^:]*:[^:]*:[^:]*:[^#]*#$PKGINST$/d" $dest > /tmp/$$itab || exit 2 mv /tmp/$$itab $dest || exit 2 done /sbin/init q || exit 2 exit 0
rb:023456:wait:/usr/robot/bin/setup