Création de packages sans snapshot

mardi 27 janvier 2009
par  f
popularité : 1%

Dans la version 1.6IBE+, deux nouvelles méthodes ont été développées pour assouplir la création de packages sous JeDDLaJ. La première est particulièrement adaptée aux logiciels hors distribution de Linux et aux logiciels possédant un mode d’installation unattended sous Windows. La seconde, exclusive à Windows, s’appuie sur un logiciel tiers pour déterminer les fichiers à inclure dans un package.

Rappel sur la méthode classique par photographies (snapshots)

Jusqu’à la version 1.4IBE, la création d’une image d’un logiciel, appelée package, ne pouvait se faire qu’en suivant un processus rigoureux.

Résumons les étapes essentielles de ce processus (décrit en détails dans cet article) :

  1. on photographie le système sous JeDDLaJ ;
  2. on boote sur le système et on installe le logiciel à packager ;
  3. on retourne sous JeDDLaJ et on photographie à nouveau le système : cette seconde photographie génère un fichier (un log) listant les différences survenue depuis la première photographie (tout ce qui a été ajouté, modifié, supprimé : l’incrément) ;
  4. on édite éventuellement ce fichier pour retirer des changements qui n’incomberaient pas à l’installation du logiciel ;
  5. on crée le package à partir des éléments listés dans le log.

Dans ce processus, l’édition du log est une étape cruciale car il contient, en nombre plus au moins important, des modifications du système qui n’ont pas de rapport avec le logiciel à imager. Et il en contient forcément, ne serait-ce que parce que l’action de se logguer sous le système pour réaliser l’installation du logiciel modifie le système. Ce n’est pas catastrophique d’inclure ces modifications dans le package, mais elles peuvent avoir des effets de bords plus ou moins gênants au moment de son déploiement (comme rendre impossible une ouverture de session !).

Sur quoi peut-on s’appuyer pour éliminer efficacement le bruit généré dans le log :
- connaissance du fonctionnement du système sur lequel on installe le logiciel ;
- des mois de pratiques de créations de packages ;
- un mélange des deux ;
- connaissance à priori des changements apportés par l’installation du logiciel ;
- un logiciel tiers qui trace l’installation depuis le système ;
- ...

La méthode "Add to package"

Contexte d’utilisation

N’y a-t-il pas des cas où l’on sait facilement déterminer les modifications apportées par l’installation d’un logiciel :

- les logiciels ne venant pas avec une distribution Linux sont souvent donnés sous forme d’archives. Leur installation se résume alors à une décompression sous un dossier bien identifié, et éventuellement à la création de liens (ou copie) des exécutables dans un répertoire faisant partie des chemins d’exécution ;
- toujours sous Linux, des logiciels installés après compilation sont facilement localisables, soit parce qu’on a explicitement indiqué le répertoire d’installation au lancement de ./configure soit parce qu’on a tracé l’exécution de la commande make install ;
- sous Windows, il existe aussi des logiciels dont l’installation se résume à la décompression d’une archive. C’est la cas par exemple de nombreuses applications écrites en Java.

Pour tous ces cas, la version 1.6IBE+ va vous permettre de vous affranchir du processus de photographies (snapshots) en transformant le processus de fabrication de packages en une simple sélection de fichiers via un explorateur.

En quelques clics...

Toutes les opérations suivantes peuvent être réalisées depuis la machine que vous avez choisie pour faire l’image de votre logiciel :

- installer le logiciel ;
- passer la machine en état package depuis l’interface JeDDLaJ au travers d’un navigateur ;
- rebooter la machine ;
- cliquer sur le bouton "1..2..3..4" :

- sélectionner la distribution sur laquelle le logiciel a été installé s’il y a plusieurs distributions sur la machine ;
- naviguer dans l’arborescence du système et sélectionner dans la partie droite de l’explorateur les fichiers et répertoires faisant partie du logiciel : utiliser le clic gauche et les touches SHIFT et CTRL pour les sélections multiples ;
- cliquer sur le bouton "Windows" de l’explorateur de fichiers et cliquer sur le menu "Add To package" pour ajouter les fichiers et répertoires sélectionnés dans le package à créer. Les fichiers ajoutés au futur package disparaîtront alors de l’arborescence ;
- une fois que tous les fichiers et répertoires du logiciels ont été ajoutés au package, cliquer sur le bouton "Create Package" ;
- terminer l’insertion du package dans la base en répondant aux questions comme indiqué dans l’étape 10 du chapitre les étapes de la création d’un package.

Remarques :
- n’utilisez pas le bouton "File" de l’explorateur de fichier : il fait disparaître les menus nécessaires à la création des packages ;
- les fichiers ajoutés au package disparaissent seulement dans l’explorateur de fichier, pas sur le disque : si vous vous êtes trompé dans vos ajouts, vous pouvez simplement fermer l’exportateur et recommencer l’opération ;
- l’ajout d’un répertoire provoque l’ajout de tous les fichiers et sous-répertoires qu’il contient ;
- les liens symboliques n’apparaissent pas dans l’explorateur de fichiers, il est donc impossible de les sélectionner pour les ajouter dans un package. Par contre, tous les liens symboliques contenus dans un répertoire sont ajoutés au package en même temps que le répertoire. Pour palier à l’impossibilité d’ajouter un lien symbolique hors d’un répertoire, vous pouvez :

  • soit créer ce lien symbolique via un script de post-installation à l’aide de la commande Symlink ;
  • soit dans l’installation du logiciel remplacer le lien symbolique par une copier du fichier vers lequel il pointe.

Illustration avec un logiciel possédant un mode d’installation unattended

Dans l’utilisation normale d’un outil de déploiement fonctionnant avec la méthode d’images incrémentales, les packages sont le reflet de logiciels installés sur un système, le résultat d’un processus d’installation. Le déploiement du logiciel sous forme de package devient alors en quelque sorte une copie de fichiers, plus rapide qu’un processus d’installation et ne nécessitant plus d’interaction avec un utilisateur. Cependant il existe de nombreux logiciels qui peuvent s’installer seuls grâce à un installateur dont le comportement est guidé par des options qu’il est possible de donner en ligne de commandes. Ces options propres à chacun, sont grandement inventoriées sur ce site. Certaines personnes préfèrent déployer ces installateurs et lancer silencieusement leur exécution car ils considèrent que le rendu est "plus propre" que la méthode incrémentale (il y a plus de fichiers parasites).
Pour utiliser ces installateurs dans JeDDLaJ, il suffit de les mettre sous forme de packages, et de faire suivre leur déploiement d’un démarrage du système pour qu’il s’exécute avec les options qui conviennent. Rappelons que la commande MSWindowsRunOnce (décrite dans Workgroups, Domaines et MSWindowsRunOnce) permet de démarrer Windows le temps de l’exécution d’une commande donnée en argument.

Voici un exemple de création de package pour l’installateur d’Adobe Reader 8.12 :

- ouvrir une session sous Windows ;
- créer le répertoire C :\unattended s’il n’existe pas ;
- télécharger depuis le site Adobe l’installateur AdbeRdr812_en_US.msi et le déposer dans le répertoire C :\unattended ;
- mettre la machine en état package en se connectant sur la page de JeDDLaJ ;
- redémarrer la machine ;
- cliquer sur le bouton "1..2..3..4" ;
- sélectionner le répertoire unattended s’il ne contient que le fichier AdbeRdr812_en_US.msi, ou bien double-cliquer sur ce répertoire puis sélectionner le fichier AdbeRdr812_en_US.msi ;
- cliquer sur "Add To package" via le bouton "Windows" ;
- créer le package via le menu "Create Package" via le bouton "Windows" ;
- répondre "oui" à la question "Voulez-vous insérer le package dans la base ?
- répondre "oui" à la question "Est-ce un nouveau package ?" ;
- remplir le formulaire :

  • Nom : Adode Reader
  • Version : 8.12 unattended
  • Nom du package : adobereader_8.12_unattended
  • Spécificité : aucune
    - valider avec le bouton "Insérer les données dans la base"
    - quitter le mode création de package.

Il ne reste maintenant plus qu’à créer et à associer le script de post-installation adobereader_8.12_unattended.rbc, contenant la ligne de commandes récupérées sur le site indiqué plus haut. Il faudra le déposer sous le répertoire réservé au scripts de post-installation :

De même, si l’on utilise la méthode de "vraie" désinstallation, il faut créer, associer et déposer dans le répertoire réservé au scripts de pré-désinstallation, le fichier adobereader_8.12_unattended.rbc suivant :

La méthode Create Package From CSV

Remarque préalable : cette méthode n’est pas exploitable !

L’idée de cette méthode est d’utiliser un programme capable de tracer toutes les opérations d’écriture réalisées par et pendant l’installation d’un logiciel. La création du package s’appuie alors sur le résultat, fourni sous forme texte, de ce programme.

Le meilleur utilitaire gratuit que nous ayons trouvé pour réaliser cette opération sous Windows est Process Monitor v2.03, qui est capable de monitorer aussi bien les modifications de fichiers que les modifications de registres.

Utiliser Process Monitor : les filtres

Process Monitor affiche en temps réel toutes les opérations faites sur le système de fichiers et la base de registres de Windows. Pour faire le tri dans cette masse d’informations, il propose un outil de filtres définis par des quadruplets (critère, relation, valeur, action) :
- le critère peut être un chemin, un nom de processus, un nom d’utilisateur, etc. ;
- la relation qui lie le critère à la valeur peut être "est", "comme par", "fini par", etc. ;
- la valeur est définie par l’utilisateur ou prédéfinie suivant le critère choisi ;
- l’action est soit "inclure" soit "exclure".

On peut définir plusieurs quadruplets, en tenant compte que :
- une relation OU est établie entre les quadruplets de même critère et d’action "inclure" ;
- une relation ET est établie entre tous les autres quadruplets.

Illustrons tout de suite ceci par le filtre qui nous intéresse dans le cas de l’exécution d’un installateur nommé pour l’exemple installer.exe :

- on ne veut INCLURE que les opérations concernant le processus installer.exe ;
- ET seulement celles catégorisées comme écriture ;
- ET seulement celles qui ont réussi ;
- ET seulement celles qui concernent des emplacements se trouvant sur le disque C OU dans la ruche HKLM du registre ;
- ET parmi ces emplacements on souhaite EXCLURE :

  • ceux terminant par pagefile.sys (fichier de swap) ;
  • ET commençant par C :\$ ;
  • ET concernant le profil de l’utilisateur installant le programme (fred dans cet exemple) ;
  • ET contenant _restore ;
  • ET terminant par .tmp ;
ColumnRelationValueAction
Process Name is installer.exe Include
Category is Write Include
Result is SUCCESS Include
Path begins with C :\ Include
Path begins with HKLM\ Include
Path ends with pagefile.sys Exclude
Path contains _restore Exclude
Path begins with C :\$ Exlude
Path begins with C :\documents and settings\fred Exclude
Path begins with C :\docume \fred Exclude
Path ends with .tmp Exclude

Utilisation dans JeDDLaJ

Process Monitor permet de récupérer les information filtrées sous forme de fichier CSV. Pour cela, il faut :

- aller dans le menu "Tools" ;
- cliquer sur l’item "Unique Values..." ;
- choisir "Path" dans la liste "Column"
- cliquer sur le bouton "Show" : les fichiers et clefs de registre apparaissent alors triés par ordre alphabétique ;
- cliquer enfin sur le bouton "Save..." et choisir l’emplacement sur le disque où l’on veut sauver le fichier au format CSV. Le fichier devant être lu sous JeDDLaJ, il faut que l’emplacement choisi soit celui où le système est installé, donc quelque part sur C :.

Une fois qu’on est en possession du fichier CSV correspondant au monitoring du logiciel à packager, on met la machine en état package
, via l’interface web de JeDDLaJ, et on redémarre pour retrouver l’interface de création de packages. On procède alors comme suit :

- on clique sur le bouton "1..2..3..4" :

- on sélectionne la distribution sur laquelle le logiciel a été installé s’il y a plusieurs distributions sur la machine ;
- on commence par ajouter des fichiers qui ne feraient pas partie du fichier CSV, comme par exemple des raccourcis qu’on aurait ajoutés après l’installation du logiciel : on sélectionne dans la partie droite de l’explorateur les fichiers désirés et on clique sur le menu "Add To Package" accessible par le bouton "Window" ;
- on sélectionne ensuite, toujours dans la partie droite de l’explorateur, le fichier CSV issu du monitoring et on clique sur le menu "Create Package From CSV" également accessible par le bouton "Window" ;
- on répond "OUI" à la question "Voulez-vous conserver les fichiers (éventuellement) déjà ajoutés dans le package ?" si l’on a ajouté des fichiers non listés dans le CSV ;
- on termine l’insertion du package dans la base en répondant aux questions comme indiqué dans l’étape 10 du chapitre les étapes de la création d’ un package.

Remarques :
- reportez-vous aux remarques de la méthode "Add To package" ;
- il est possible de sélectionner plusieurs fichiers CSV, si par exemple le package correspond à l’installation de plusieurs logiciels.

Pourquoi cette méthode n’est pas exploitable

Il y a hélas de nombreuses raisons qui n’ont pas de contournements :

- la majorité des installateurs s’éclatent en plusieurs processus fils que le filtre ne va pas prendre en compte car ceux-ci portent des noms différents de celui indiqué dans le filtre. On pourrait :

  • ajouter un à un les noms de processus au filtre, mais il est difficile de tous les repérer malgré l’outil "Process Tree" disponible ;
  • supprimer le filtrage du nom de processus, mais on retombe dans le problème des écritures parasites ;
  • remplacer le filtrage du nom de processus par un filtrage sur le login utilisé pour l’installation, mais les processus fils tournent majoritairement en tant qu’utilisateur SYSTEM ;

- la catégorie Write ne contient pas les opérations de création de fichiers (CreateFile), et pour cause, celles-ci ne correspondent pas, la plupart du temps, à des créations de fichiers mais à des consultations de fichiers ;
- certains installateurs créent des fichiers temporaires qui sont ensuite renommés : le renommage n’est pas considéré comme une opération d’écriture ;
- d’autres nécessitent un redémarrage du système pour poursuivre l’installation. Celle-ci va reprendre avant que l’on puisse relancer le monitoring.

Donc à part dans le cas de quelques logiciels, généralement de petite taille, cette méthode ne peut pas être utilisée. Mais il est diffciel de le savoir avant d’avoir lancé l’installation.

Peut-être que des versions futures de Process Monitor permettront de rendre cette méthode de création de packages utilisable...


Brèves

12 février 2009 - JeDDLaJ passe sur SourceSup à partir de la version 1.6IBE+

La communauté JeDDLaJ manquait jusqu’alors cruellement de certains services et moyens de (...)

12 février 2009 - 11/2/2009 : La version 1.6 IBE+ est disponible !!!

Ça y est. Après tant de mois (18 à peu près...) de gestation, d’hésitations, de :wq et autres (...)

12 février 2009 - JeDDLaJ gagne le concours DEVA => nouvelles fonctionnalités pour vous !!!

JOIE !!! BONHEUR !!! FIERTÉ !!!
JeDDLaJ remporte le concours DEVA (DEVeloppements (...)

9 juillet 2007 - Précision importante sur la compatibilité MySQL 5 de JeDDLaJ 1.4IBE

Dans le cas d’un serveur Rembo sous Windows, 2 moyens pour pouvoir utiliser MySQL 5 :
soit (le (...)

9 juillet 2007 - Déjà le SP1 pour JeDDLaJ 1.4IBE : désormais TPMfOSd-ready !!!

Description
Ce service pack n’apporte principalement qu’une amélioration... mais de taille... (...)