Lorsque vous utilisez Solaris Live Upgrade et créez un nouvel environnement d'initialisation, suivez les directives suivantes pour éviter tout problème :
Vos scripts de procédure doivent être indépendants de l'environnement d'initialisation actif. Les scripts de procédure définissent les actions qui surviennent à un moment donné pendant l'installation et la suppression de packages. Il est possible de créer quatre scripts de procédure avec les noms prédéfinis suivants : preinstall, postinstall, preremove et postremove. Étant donné qu'un environnement d'initialisation inactif peut être activé/désactivé à l'aide de Solaris Live Upgrade, les scripts de procédure du package doivent être indépendants de l'environnement d'exploitation actif.
Ces scripts ne doivent pas lancer ou arrêter de processus, ni dépendre de l'édition de commandes telles que ps ou truss, qui dépendent du système d'exploitation et fournissent des informations relatives au système d'exploitation actif.
Les scripts de procédure peuvent utiliser d'autres commandes UNIX telles que expr, cp et ls et d'autres commandes qui facilitent la génération de scripts shell. Toutefois, l'environnement d'initialisation inactif ne doit pas être modifié, sauf dans le cadre des règles présentées dans la rubrique Exigences d'environnement d'initialisation inactif pour le programme d'installation JumpStart personnalisée et pour Solaris Live Upgrade.
Tous les scripts doivent être rédigés en bourne shell (/bin/sh). Bourne shell est l'interpréteur utilisé par la commande pkgadd pour exécuter les scripts de procédure.
Les scripts de procédure ne doivent pas exécuter de commandes ne figurant pas dans 2.6 et les versions antérieures. Par exemple, ils ne peuvent pas exécuter la commande pgrep. Depuis la version 2.6, de nombreuses commandes ont été dotées de nouvelles fonctions. Les scripts de procédure ne doivent pas utiliser d'options de commande qui n'existaient pas dans la version 2.6. Par exemple, l'option de la commande -f umount a été ajoutée à la version 7 de Solaris. Pour vérifier la prise en charge d'une commande ou option dans la version Solaris 2.6, reportez-vous au document Solaris 2.6 Reference Manual AnswerBook sur le site http://docs.sun.com.
Tous les packages doivent être validés par pkgchk. Avant d'installer un package venant d'être créé, il doit être vérifié à l'aide de la commande suivante :
# pkgchk -d nom_rép nom_package |
Indique le nom du répertoire où le package réside.
Indique le nom du package.
Par exemple, si un package existe à l'adresse /export/SUNWvxvm, émettez la commande suivante :
# pkgchk -d /export SUNWvxvm |
Aucune erreur ne doit s'afficher.
Un package créé doit être testé. Pour cela, il doit être installé à un emplacement de l'environnement d'initialisation inactif à l'aide de l'option -R nom_rép de pkgadd. Après avoir installé le package, assurez-vous qu'il fonctionne correctement à l'aide de la commande pkgchk, comme dans l'exemple ci-dessous.
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
Aucune erreur ne doit s'afficher.
De même, les packages ne doivent pas exécuter de commandes contenues dans le package lui-même. Ceci permet de gérer la compatibilité sans disque et évite d'exécuter des commandes requérant des bibliothèques partagées qui ne sont pas encore installées.
Ces conditions de création, de modification et de suppression de fichiers peuvent être vérifiées à l'aide de diverses commandes. Par exemple, les commandes dircmp ou fssnap peuvent être utilisées pour vérifier que les packages fonctionnent correctement. De même, la commande ps peut servir à tester la compatibilité du démon en s'assurant que les démons ne sont pas arrêtés ou démarrés par le package. Les commandes truss, pkgadd -v et pkgrm peuvent tester la conformité de l'installation du package runtime, mais ne fonctionnent pas nécessairement dans toutes les circonstances. Dans l'exemple suivant, la commande truss supprime tous les accès en lecture seule non-$TEMPDIR et n'affiche que les accès en lecture/écriture vers des chemins qui n'appartiennent pas à l'environnement d'initialisation inactif indiqué.
# TEMPDIR=/a; export TEMPDIR # truss -t open /usr/sbin/pkgadd -R ${TEMPDIR} SUNWvxvm \ 2>&1 > /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${TEMPDIR} |
Pour de plus amples informations sur les commandes mentionnées dans cette section, reportez-vous aux pages de manuel dircmp(1), fssnap(1M), ps(1), truss(1), pkgadd(1M), pkgchk(1M), ou pkgrm(1M).