Lors de l'assemblage d'une image, vous pouvez faire des essais de fonctionnement de l'image lorsque des packages sont ajoutés ou supprimés d'un jeu de travail. Ce type de tests est pris en charge par le constructeur de distribution. Des packages supplémentaires peuvent être ajoutés à la liste existante dans la section package d'un fichier manifest. Les packages à supprimer peuvent être ajoutés à la section post_install_remove_package. Après avoir apporté des modifications au fichier manifest pour ajouter ou supprimer des packages, vous devez relancer le processus de création depuis le début et télécharger de nouveau l'ensemble des packages. Cette opération peut prendre du temps. Vous pouvez effectuer ces modifications plus rapidement en utilisant les scripts de finalisation.
Les scripts personnalisés suivants ajoutent un package IPS à l'image à partir d'un autre référentiel spécifié dans le fichier manifest. Le package est ajouté à la zone d'image du package. Le nom du package à ajouter est inclus dans le script. Cet exemple montre également comment utiliser le programme ManifestRead pour obtenir des valeurs à partir du fichier manifest.
#!/bin/ksh # # # Name: # add_my_pkg # # Description: # This script will add the package SUNWcdrw from # the alternate repository specified in the manifest # at pkg_repo_addl_authority. # # Args: # # 5 arguments are passed in by default from the DC. # # MFEST_SOCKET: Socket needed to get manifest data via ManifestRead object # PKG_IMG_PATH: Package image area # TMP_DIR: Temporary directory # BR_BUILD: Area where boot archive is put together (not used in this example) # MEDIA_DIR: Area where the media is put (not used) # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if [ "$#" != "5" ] ; then print -u2 "Usage: $0: Requires 5 args:" print -u2 " Reader socket, pkg_image area, tmp dir," print -u2 " boot archive build area, media area" exit 1 fi MFEST_SOCKET=$1 PKG_IMG_PATH=$2 if [ ! -d $PKG_IMG_PATH ] ; then print -u2 "$0: Image package area $PKG_IMG_PATH is not valid" exit 1 fi PKGCMD="/bin/pkg" #Install this package TEST_PKGS="SUNWcdrw" # # You would have specified the additional repository like this in the manifest # # # <pkg_repo_addl_authority> # <main url="http://localhost:10000" authname="localtest"/> # </pkg_repo_addl_authority> # Get the alternate repository URL from the manifest add_url=/usr/bin/ManifestRead ${MFEST_SOCKET} \ "img_params/pkg_repo_addl_authority/main/url" # Get the alternate repository authority from the manifest add_auth=/usr/bin/ManifestRead ${MFEST_SOCKET} \ "img_params/pkg_repo_addl_authority/main/authname" added_authority=0 # # Check if authority is already set in the package image area # if not, add it in # ${PKGCMD} -R $PKG_IMG_PATH authority $add_auth > /dev/null 2>& 1 if [ $? != 0 ] ; then ${PKGCMD} -R $PKG_IMG_PATH set-authority -O ${add_url} ${add_auth} added_authority=1 fi if [ $? != "0" ] ; then print -u2 "$0: Unable to set additional authority" exit 1 fi for t in ${TEST_PKGS} ; do pkg_name="pkg://${add_auth}/${t}" ${PKGCMD} -R $PKG_IMG_PATH install ${pkg_name} if [ $? != "0" ] ; then print -u2 "$0: Unable to install ${pkg_name}" exit 1 fi done # if we have added the additional authority, unset it so it doesn't pollute what's # originally there if [ $added_authority == 1 ] ; then ${PKGCMD} -R $PKG_IMG_PATH unset-authority ${add_auth} fi exit 0 |
Une fois que vous avez préparé votre script personnalisé, vous devez ajouter une référence au script dans le fichier manifest. Vous êtes ensuite prêt à utiliser le script lors de la création de l'image.
Vous devez mettre à jour le fichier manifest pour qu'il désigne les scripts personnalisés que vous souhaitez utiliser. Par exemple, si vous avez créé un script, /export/home/user1/test_my_pkg, pour tester votre package personnalisé, vous devez référencer le script comme suit dans la section de finalisation du fichier manifest. Le point de contrôle my_test indique où la création va redémarrer.
<finalizer> <script name="/export/home/user1/test_my_pkg"> <checkpoint name="my_test" message="Running my test package"/> </script> <script name="/usr/share/distro_const/pre_boot_archive_pkg_image_mod"> <checkpoint name="im-mod" message="Image area modifications"/> </script> ........ </finalizer> |
Le script personnalisé ci-dessus est conçu pour ajouter ou supprimer des packages de la zone d'image du package. Vous devez donc référencer ce script comme premier script de finalisation dans la section <finalizer> du fichier manifest. Incluez dans cette référence un nom de point de contrôle qui indique le point du processus de création d'image à partir duquel vous voulez relancer la création afin de tester le package ajouté.
L'exemple de script ci-dessus suppose qu'un autre référentiel a été spécifié dans le fichier manifest, à l'aide du champ pkg_repo_addl_authority. Le fichier manifest par défaut est indiqué lorsque le champ pkg_repo_addl_authority est mis en commentaire et, par conséquent, inutilisé. Supprimez donc la balise de commentaire de ce champ, et mettez à jour ses valeurs pour fournir une URL et un authname valides.
Par exemple, si l'autorité supplémentaire est disponible sur le localhost sur le port 10000, avec le nom localtest, vous devez modifier le champ pkg_repo_addl_authority dans le fichier manifest comme suit :
<pkg_repo_addl_authority> <main url="http://localhost:10000" authname="localtest"/> <mirror url="" /> </pkg_repo_addl_authority> |
Une fois que vous avez terminé d'appliquer des modifications dans le fichier manifest pour référencer votre nouveau script, vous pouvez commencer à créer votre image à partir du début. Par la suite, si vous apportez des modifications à votre package, vous n'avez plus besoin de relancer le processus depuis le début. Vous pouvez générer une image avec votre package modifié à partir du point de contrôle qui exécute votre script.
Cette option suppose que la zone de construction se trouve dans un système de fichiers ZFS. Sans système ZFS, vous ne pouvez pas utiliser les points de contrôle.
Vous trouverez ci-dessous la séquence de commandes qu'un utilisateur doit exécuter afin de tester plusieurs fois les modifications apportées aux packages.
Lancez la création à partir du début après avoir modifié le fichier manifest. Vous n'avez besoin d'effectuer cette étape qu'une seule fois.
distro_const build my_updated_manifest.xml |
Vérifiez les étapes qui peuvent être reprises.
distro_const build -l my_updated_manifest.xml |
Relancez le processus à partir de l'étape de votre modification de package. Vous pouvez redémarrer à partir de cette étape autant de fois que nécessaire au cours du débogage de votre contenu modifié.
distro_const build -r my_test my_updated_manifest.xml |
Pour en savoir plus sur l'utilisation de la commande distro_const avec les options de points de contrôle, comme illustré dans l'exemple, reportez-vous à la section Création d'une image par étapes.