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
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 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
Ce package installe un pilote.
Cette étude de cas illustre les techniques suivantes :
Installation et chargement d'un pilote à l'aide d'un script postinstall
Déchargement d'un pilote à l'aide d'un script preremove
Pour plus d'informations sur ces scripts, reportez-vous à Rédaction de scripts de procédure.
Créer un script request.
Le script request détermine l'emplacement d'installation des objets du pilote en interrogeant l'administrateur et en appliquant la réponse obtenue au paramètre $KERNDIR.
Le script se termine par une routine permettant de mettre les deux paramètres CLASSES et KERNDIR à disposition de l'environnement d'installation et du script postinstall.
Créer un script postinstall.
Le script postinstall effectue l'installation du pilote. Il est exécuté une fois que les deux fichiers buffer et buffer.conf sont installés. Le fichier postinstall illustré dans cet exemple effectue les opérations suivantes :
Il utilise la commande add_drv pour charger le pilote sur le système.
Il crée un lien vers le périphérique à l'aide de la commande installf.
Il termine l'installation à l'aide de la commande installf -f.
Il crée un script preremove.
Le script preremove utilise la commande rem_drv pour décharger le pilote du système, puis supprime le lien /dev/buffer0 .
PKG=bufdev NAME=Buffer Device CATEGORY=system BASEDIR=/ ARCH=INTEL VERSION=Software Issue #19 CLASSES=none
Pour installer un pilote lors de l'installation, vous devez inclure les fichiers d'objets et de configuration du pilote dans le fichier prototype.
Dans cet exemple, le module exécutable du pilote est nommé buffer ; la commande add_drv opère sur ce fichier. Le noyau utilise le fichier de configuration, buffer.conf pour aider à configurer le pilote.
i pkginfo i request i postinstall i preremove f none $KERNDIR/buffer 444 root root f none $KERNDIR/buffer.conf 444 root root
Remarquez les points suivants dans le fichier prototype de cet exemple :
Les objets du package ne nécessitant aucun traitement particulier, vous pouvez les placer dans la classe standard none. Le paramètre CLASSES est défini sur none dans le fichier pkginfo.
Les noms de chemin de buffer et buffer.conf commencent par la variable $KERNDIR. Cette variable est définie dans le script request et permet à l'administrateur de choisir l'emplacement d'installation des pilotes. Le répertoire par défaut est /kernel/drv.
Le script postinstall (script effectuant l'installation du pilote) dispose d'une entrée.
trap 'exit 3' 15 # determine where driver object should be placed; location # must be an absolute path name that is an existing directory KERNDIR=`ckpath -aoy -d /kernel/drv -p \ “Where do you want the driver object installed”` || exit $? # make parameters available to installation service, and # so to any other packaging scripts cat >$1 <<! CLASSES='$CLASSES' KERNDIR='$KERNDIR' ! exit 0
# KERNDIR parameter provided by `request' script err_code=1 # an error is considered fatal # Load the module into the system cd $KERNDIR add_drv -m '* 0666 root sys' buffer || exit $err_code # Create a /dev entry for the character node installf $PKGINST /dev/buffer0=/devices/eisa/buffer*:0 s installf -f $PKGINST
err_code=1 # an error is considered fatal # Unload the driver rem_drv buffer || exit $err_code # remove /dev file removef $PKGINST /dev/buffer0 ; rm /dev/buffer0 removef -f $PKGINST