Packaging JOnAS version 2 1. Détermination des composants à packager : a. Choix de la base de données (à packager) Base de données Windows Linux Commentaires MySQL Ok Ok Très connus et très utilisé. Redistribuable Redistribuable Version stable 3.23. en GPL en GPL Compatible JBDC 2.0 http://www.mysql.org/ InstantDB Redistribuable Redistribuable Déjà testé avec Démo avec accord avec accord d’alarm. Non gratuit si Non gratuit si Designed for Java non GPL non GPL PostGreSQL Ok avec Ok Version 7.2 cygnus Redistribuable BD Objet Redistribuable http://www.fr.postgresql.org/ GNU SQL Server Non Ok Pas d’évolution depuis Sept. Redistribuable 1998 InterBase Redistribuable Redistribuable Produit OpenSource Borland avec accord avec accord Non gratuit si Non gratuit si non GPL non GPL mSQL Non Ok Version 2.0.12 http://www.hughes.com.au/ MacKoi SQL DB Ok Ok Beta Version 0.92 Redistribuable Redistribuable BD Java Object http://mckoi.com/database/ Berkeley DB Ok Ok Version 4.0.14 Redistribuable Redistribuable http://www.sleepycat.com/in en GPL en GPL dex.html … Le choix et le mode de packaging reste à déterminer b. Tomcat à packager ou non La version courante est la version 3.2.3. Faut-il le packager avec JOnAS ? Des RPMs existent déjà ; le mieux est d’ajouter une dépendance du RPM de JOnAS avec tomcat. c. JOnAS + dépendances Pour compiler, les dépendances sont : - jdk 1.2 minimum installée => la variable $JDKDIR doit indiquer le répertoire d’installation de java. Sinon, par défaut le répertoire /usr/java1.2 est pris - tomcat installé => la variable $TOMCAT_HOME doit indiquer le répertoire d’installation de tomcat. La compilation est stoppée si cette variable n’est pas initialisée. Pour l’exécution de jonas, les dépendances sont : - jdk 1.2 minimum installée => la variable $JAVA_HOME doit indiquer le répertoire d’installation de java. (Pas obligatoire si java est dans le path). - tomcat installé => la variable $TOMCAT_HOME doit indiquer le répertoire d’installation de tomcat (Pas obligatoire si tomcat n’est pas utilisé). - une base de données => voir la liste des variables des databases 2. Détermination des cibles d’installation : OS et plateformes Les 2 plateformes visées sont Windows et Linux dans un premier temps. Pour Linux, le format de package standard est le format RPM (Redhat Package Manager) qui est utilisé par 90% des distributions. Pour Windows, un outil comme InstallShield peut être envisagé. 3. Packaging RPM *Que permet de faire RPM ? a. installer un package en vérifiant les dépendances, les plateformes cibles, les versions déjà installées … rpm –ivh jonas-2.4.0-1-i686.rpm sous root b. désinstaller un package en ne supprimant pas les fichiers de configuration modifiés, en vérifiant que la désinstallation ne casse pas des dépendances … rpm –e jonas-2.4.0 sous root c. mise à jour d’un package pour installer une version plus récente, réinstaller des fichiers effacés … rpm –Uvh jonas-2.4.0-1-i686.rpm d. Vérifier un package rpm –V jonas-2.4.0 *Comment faire un RPM ? Un simple fichier de spécification appelé « spec file » est à créer. Deux possibilités : La manière la plus simple mais pas la plus propre est de partir d’un tar contenant les binaires et d’inclure la liste des fichiers du tar en ajoutant les dépendances, le numéro de version etc… Le problème, c’est qu’il ne s’agit pas des sources et qu’il est donc impossible de recompiler. La manière classique est de partir d’un tar contenant les sources et de laisser rpm le compiler. Dans ce cas, deux fichiers sont générés : a. un fichier <package>-<numéro>-<release>-<architecture>.rpm qui contient les binaires b. un fichier <package>-<numéro>-<release>-src.rpm qui contient les sources qu’il est possible de recompiler avec une commande rpm *Ce qui a été réalisé et comment La plateforme utilisée est un Linux Mandrake 7.2. BI-PIII 866 Mhz RPM est en version 3.0.5. Java est en version 1.2.2 et variable $JDKDIR initialisée Tomcat en version 3.2.3 installé et variable $TOMCAT_HOME initialisée (pour la dépendance avec servlet.jar) 1. Se mettre sous root 2. Placer le tar avec les sources sous /usr/src/RPM/SOURCES pour Mandrake ou sous /usr/src/redhat/SOURCES pour Redhat 3. Placer les patchs avec les sources sous /usr/src/RPM/SOURCES pour Mandrake ou sous /usr/src/redhat/SOURCES pour Redhat 4. Placer le « spec file » sous /usr/src/RPM/SPECS ou sous /usr/src/redhat/SPECS sous Redhat 5. Se placer à l’endroit du « spec file » et lancer la construction des rpms par la commande : rpm –ba <specfile> 6. Lorsque c’est terminé, le RPM des binaires se trouve sous sous /usr/src/RPM/RPMS pour Madrake ou sous /usr/src/redhat/RPMS pour Redhat et le RPM des sources se trouve sous sous /usr/src/RPM/SRPMS pour Madrake ou sous /usr/src/redhat/SRPMS pour Redhat 7. Installer les binaires par la commande : rpm –ivh ../RPMS/<package>-<version>-<release>-<architecture>.rpm 8. Désintaller le package par la commande : rpm –e <package>-<version> 1. JOnAS 2.4.0 a. Spec file 2.4.0-1 Choix effectués Je suis reparti du specfile de Stephane Fresnot en incluant la partie compilation. Le choix du groupe d’appartenance du package de jonas a été conservé : c’est System Environment/Daemons L’installation de jonas se fait comme il est conseillé dans le répertoire /usr/local/jonas J’ai rajouté la description du package telle qu’elle est préconisée en standard (url des sources, packager, version …) Le fichier tar contenant les sources provient de jonas version 2.4.0 et se nomme jonas_src.tgz. La structure de ce tar ne convient pas tout à fait, j’ai donc rajouté un petit script avant la compilation (dans la partie %pre) qui le transforme. Pour la compilation, c’est très simple, il suffit de placer la variable $OBJECTWEB_HOME et de faire un make. En réalité, deux compilations sont réalisées, une avec l’ORB RMI et l’autre avec JEREMIE. Ensuite la javadoc est générée (partie %build). Pour l’installation, il suffit de placer la variable $JONAS_ROOT et de faire un make install (partie %install). Liste des fichiers Voici les fichiers de configuration que j’ai choisi : /usr/local/jonas/config/InstantDB1.properties /usr/local/jonas/config/InterBase1.properties /usr/local/jonas/config/Oracle1.properties /usr/local/jonas/config/PostgreSQL1.properties /usr/local/jonas/config/a3servers.xml /usr/local/jonas/config/jonathan.xml /usr/local/jonas/config/java.policy /usr/local/jonas/config/jndi.properties /usr/local/jonas/config/jonas-users.properties /usr/local/jonas/config/jonas.properties /usr/local/jonas/config/trace.properties /usr/local/jonas/gmk/config.mk /usr/local/jonas/bin/nt/config_env.bat /usr/local/jonas/bin/unix/config_env Ces fichiers seront sauvegardés si le package est supprimé et qu’ils ont été modifiés. Ils ne seront pas écrasés lors d’une mise à jour de package. Voici les fichiers et répertoires de documentation : /usr/local/jonas/LicenceAgreement.txt /usr/local/jonas/ReleaseNotes.txt /usr/local/jonas/doc /usr/local/jonas/jdoc Ces fichiers sont marqués comme étant de la documentation. Le reste est des fichiers normaux. Tout est disponible sur http://ramses/jonas.htm b. Spec file 2.4.0-2 Choix effectués Idem Spec file 2.4.0-1 Prise en compte des remarques de François Exertier Copyright changé en OPL/JPL Champ Description modifié Liste des fichiers Idem Spec file 2.4.0-1 c. Spec file 2.4.0-3 Choix effectués Idem Spec file 2.4.0-2 Prise en compte des remarques de Nicolas Christin a) Définition de variables décrivant l’arborescence de JOnAS telles que : JONAS_SRC = jonas_src Nom du tarball contenant les sources JONAS_DIR = /usr/local/jonas Répertoire d’installation de JOnAS JONAS_DOC_DIR = /usr/share/doc Répertoire d’installation de la documentation de JOnAS JONAS_CONF_DIR = /etc/jonas Répertoire d’installation des fichiers de configuration de JOnAS JONAS_LIB_DIR = /usr/lib/jonas Répertoire d’installation des librairies de JOnAS JONAS_BIN = /usr/bin Répertoire d’installation des binaires de JOnAS Pour ne pas avoir à modifier les makefiles, les scripts … de JOnAS et respecter au plus près le FHS ; voici les compromis qui ont été effectués : Dans le répertoire JONAS_DIR se trouve tous les fichiers de JOnAS à l’exception de la documentation => répertoires doc et jdoc Dans le répertoire JONAS_DOC_DIR se trouve les répertoires doc et jdoc et les fichiers ReleaseNotes.txt et LicenceAgreement.txt (ces 2 fichiers se trouvent aussi sous JONAS_DIR) Dans le répertoire JONAS_CONF_DIR se trouve des liens durs vers les fichiers de configuration (cf liste des fichiers - section %config). Ainsi, ces fichiers peuvent être éditer directement sous JONAS_CONF_DIR mais reste aussi présents sous JONAS_DIR. Dans le répertoire JONAS_LIB_DIR se trouve des liens symboliques vers les jar sous JONAS_DIR/lib. Dans le répertoire JONAS_BIN se trouve des liens symboliques vers les fichiers sous JONAS_DIR/bin/unix. b) Ajout de la vérification des prérequis de compilation : Variable TOMCAT_HOME settée (bloquant) Variable JDKDIR settée (non bloquant) c) Inversion de l’ordre de la compilation : Compilation pour JEREMIE Compilation pour RMI Javadoc d) La variable JONAS_ROOT est initialisée dynamiquement dans les scripts sous le répertoire JONAS_DIR/bin/unix e) Modification de l’ordre d’installation des fichiers Installation pour JEREMIE Installation pour RMI Installation de la documentation f) A la post installation, création des liens symboliques et des liens durs g) A la pré-uninstallation, suppression des liens symboliques h) A la post-unistallation, suppression des liens durs vers les fichiers de configuration s’ils ont été supprimés (donc non modifiés). Liste des fichiers Idem Spec file 2.4.0-2 Ajout des préfixes des variables décrivant l’arborescence de JOnAS 2. JOnAS 2.4.3 a. Spec file 2.4.3-1 Choix effectués Idem Spec file 2.4.0-3 a) A l’installation, création du répertoire JONAS_DIR qui n’existent pas => dû à la modification d’un makefile de JOnAS dans cette version b) Ajout d’un message à la suite de l’installation qui indique de vérifier l’installation de Java (variable d’environnement JAVA_HOME notamment) Liste des fichiers Idem Spec file 2.4.0-3 Ajout des répertoires : JONAS_DIR/examples/output JONAS_DIR/examples/output/webapps Ajout des fichiers : JONAS_DIR/bin/template/SHome.java JONAS_DIR/examples/build.properties JONAS_DIR/examples/build.xml JONAS_DIR/examples/alarm/db1.prp JONAS_DIR/examples/alarm/web/images/alarmArchi.gif JONAS_DIR/examples/alarm/web/secured/removefilter.jsp JONAS_DIR/examples/output/webapps/README JONAS_DIR/examples/src/eb/db1.prp b. Spec file 2.4.3-2 JOnAS est lancé au démarrage de la machine => Ajout du patch « jonas-2.4.3-bootstartup.patch » qui contient 2 fichiers : JONAS_DIR/startup/jonas permet de lancer et d’arrêter jonas via les commandes jonas stop et jonas start. Ce fichier est installé sous /usr/bin. JONAS_DIR/startup/bin/jonas permet de démarrer jonas au démarrage de la machine. Ce fichier est installé sous /etc/rc.d/init.d. Il fait appel au fichier /usr/bin/jonas. Un fichier de lock « jonas » contenant le PID est créé sous /var/lock/subsys au démarrage. Un fichier de log « jonas.log » est créé sous /var/log. Choix effectués Idem Spec file 2.4.3-1 a) Ajout des 2 variables pour le patch. Une variable pour le répertoire d’installation et une autre pour le nom du fichier patch b) Ajout de la vérification du fichier tarball contenant les sources et du fichier patch avant la compilation c) Installation du patch sur les sources d) Installation du javadoc entre l’installation pour JEREMIE et RMI e) Installation du script de boot jonas sous /etc/rc.d/init.d et du script de lancement jonas sous /usr/bin f) A la pré-uninstallation, arrêt de JOnAS s’il est démarré avant la désinstallation Liste des fichiers Idem Spec file 2.4.3-1 Ajout des répertoires : JONAS_DIR/startup JONAS_DIR/startup/bin Ajout des fichiers : JONAS_DIR/startup/jonas JONAS_DIR/startup/bin/jonas Installation [root@mazuk SPECS]# rpm -ivh jonas-2.4.3-2.i686.rpm jonas ################################################## Don't forget to set JAVA_HOME in /etc/rc.d/init.d/jonas to your JDK/JRE directory since we didn't have these info at boot time. Don't forget to check the java JVM is in the path or the JAVA_HOME environment variable is set to your JDK/JRE directory. As supplied we assume you're using Java JVM >= 1.2 Editer le fichier /etc/rc.d/init.d/jonas et placer la variable $JAVA_HOME pour que JOnAS se lance au démarrage de la machine. Démarrage manuel [root@mazuk SPECS]# jonas start Start JOnAS [root@mazuk SPECS]# jonas stop EJBServer jonas stopped Au démarrage de la machine, on a : [root@mazuk SPECS]# /etc/rc.d/init.d/jonas start Starting JOnAS: [ OK ] [root@mazuk SPECS]# /etc/rc.d/init.d/jonas stop Shutting down JOnAS: [ OK ]