Base Geneweb sur Cdrom

Logo of GeneWeb
Image via Wikipedia

Geneweb est un logiciel de généalogie libre qui fonctionne sur Linux, MacOS X et Windows. Ecrit en OCamel à l’INRIA, geneweb se présente sous la forme d’une application web. Cela a l’avantage de permettre l’accès à la base de données généalogiques à de nombreuses personnes aussi bien en lecture qu’écriture.

Cependant on peut avoir envie de diffuser la base sous forme de cdrom. C’est le cas quand l’accès au réseau n’est pas possible ou que l’on souhaite archiver une version autonome de la base. La documentation de geneweb présente les manipulations à effectuer afin générer une arborescence que l’on peut ensuite graver sur un Cdrom. Si ces explications constituent une base dans l’automatisation de la tâche de création d’image ISO d’une base geneweb, ce billet explique comment arriver au but final sous Ubuntu 11.04.

En premier lieu, la manipulation consistant à compacter la base en faisant un export au format gw puis un import est à proscrire. En effet selon les cas (configuration de la base ou typologie de celle-ci comme la présence de branche), cette opération risque d’enlever des personnes dans la base. Nous recommandons donc de ne pas effectuer ces optimisations sauf si l’utilisateur en a l’habitude.

La suite des opérations est conforme à la documentation. Nous allons copier la base ainsi que les executables mais aussi mettre en place un autorun pour plateforme windows. Ainsi la base généalogique est distribuable auprès de tous les membres de votre famille même ceux qui ne sont pas (encore) passés dans la lumière du libre !

L’ensemble des opération est heureusement automatisable et nous proposons ici le script bash suivant qui va jusqu’à créer l’ISO. Attention l’exécutable gwd.exe pour Windows doit être mis à dans le répertoire à côté du script !

#!/bin/bash
#-----------------------------------------------
# generate cdrom iso ready to burn from geneweb
#-----------------------------------------------

# check if destination argument is present
if [ $# -ne 2 ]
then
  echo "Usage: $0 base destination"
  echo "base is the name of the base"
  echo "destination is the destination to write the cdrom tree where"
  exit 1
else
  BASE_NAME=$1
  DEST_DIR=$2
fi
# remove existing destination files
if [ -e $DEST_DIR ]
then
  rm -R $DEST_DIR
fi

#create destination
mkdir -p $DEST_DIR

# copy geneweb database
cp -R /var/lib/geneweb/$BASE_NAME.gwb $DEST_DIR/$BASE_NAME.gwb

# copy config file
cp /var/lib/geneweb/$BASE_NAME.gwf $DEST_DIR/

# copy lang, etc, images from /usr/share/geneweb
cp -R /usr/share/geneweb/lang $DEST_DIR/
cp -R /usr/share/geneweb/etc $DEST_DIR/
cp -R /usr/share/geneweb/images $DEST_DIR/

# copy images from /var/lib/geneweb
cp -R /var/lib/geneweb/images $DEST_DIR/

# copy Linux executable
mkdir $DEST_DIR/Linux
cp `which gwd` $DEST_DIR/Linux/

# create gwd.arg for Linux
echo "-wd" >> $DEST_DIR/Linux/gwd.arg
echo "/tmp/geneweb" >> $DEST_DIR/Linux/gwd.arg
echo "-hd" >> $DEST_DIR/Linux/gwd.arg
echo "../" >> $DEST_DIR/Linux/gwd.arg
echo "-bd" >> $DEST_DIR/Linux/gwd.arg
echo "../" >> $DEST_DIR/Linux/gwd.arg
echo "-dd" >> $DEST_DIR/Linux/gwd.arg
echo "../" >> $DEST_DIR/Linux/gwd.arg

# copy Windows executable
mkdir $DEST_DIR/Windows
cp gwd.exe $DEST_DIR/Windows/

# create gwd.arg for Windows
echo "-wd" >> $DEST_DIR/Windows/gwd.arg
echo "c:tempgeneweb" >> $DEST_DIR/Windows/gwd.arg
echo "-hd" >> $DEST_DIR/Windows/gwd.arg
echo "..\" >> $DEST_DIR/Windows/gwd.arg
echo "-bd" >> $DEST_DIR/Windows/gwd.arg
echo "..\" >> $DEST_DIR/Windows/gwd.arg
echo "-dd" >> $DEST_DIR/Windows/gwd.arg
echo "..\" >> $DEST_DIR/Windows/gwd.arg

# create a launcher for Windows
echo "call "cmd /c start ./Windows/gwd.exe"" >> $DEST_DIR/run.bat
echo "@start "" /b "C:\Program Files\Internet Explorer\iexplore.exe" //localhost:2317/$BASE_NAME" >> $DEST_DIR/run.bat

# create autorun for Windows
echo "[Autorun]" >> $DEST_DIR/autorun.inf
echo "open=run.bat" >> $DEST_DIR/autorun.inf    #create an iso
mkisofs -V "Geneweb $BASE_NAME" -o $BASE_NAME.iso -J $DEST_DIR

Ce script a été testé sous Ubuntu 11.04. L’ISO obtenue montée sur Windows XP sous VirtualBox (simulatiion d’une gravue et insertion physique). Une fois le cdrom introduit, un navigateur s’ouvre automatiquemen sur la page d’accueil de la base contenue dans le cdrom.

Bug Geneweb sous Ubuntu 10.04

Geneweb est une application de généalogie écrite en OCaml. Sous Ubuntu 9.10, l’application fonctionne parfaitement mais dans la version actuelle de Ubuntu 10.04 il y a un bug: on ne peut pas naviguer et rechercher les membres de l’arbre généalogique bien que l’on puisse créer les éléments de l’arbre.

La version de geneweb présente dans le dépôt de Lucid est une 5.02-exp et sans doute que le “exp” signifie expérimental…. Quoi qu’il en soit une recherche sur le net montre que le bug est connu depuis novembre 2009 mais uniquement dans le milieu des testeurs. Puis au fur-et-à mesure que les distributions Linux intégrèrent la branche 5.02 de geneweb, le commun des mortels commença à être impacté.

La lecture de l’historique du bug est très intéressante et montre la bonne volonté du mainteneur du paquet. Ce rôle est d’ailleurs très noble car il consiste à prendre un programme écrit par quelqu’un pour l’intégrer dans une distribution. Il est vrai que geneweb ne fait pas partie des programmes mis en avant par Ubuntu, ce qui est un signe de la limite des tests qui ont pu être fait sur cette application, mais il est agréable de constater que dès que le problème touche le grand public, les choses vont très vite même pour une application somme toute confidentielle telle que geneweb. Ainsi dès que Ubuntu 10.04 sort en avril, au fil des mises à jour des systèmes, les utilisateurs de geneweb sont confrontés au bug, se plaignent et la communauté se met en branle.

Finalement avant même que la distribution officielle d’Ubuntu ne mettent à jour le paquet, un patch est mis en ligne dès le 14 juillet. Pas mal pour une application qui ne s’appelle pas Firefox !

Application de généalogie: Geneweb

J’étais à la recherche d’une application pour tracer un arbre généalogique pour mon fils et je pensais utiliser un simple logiciel de dessin vectoriel mais je me décida de rechercher une vrai application dédiée. Je suis alors tombé sur geneweb issue de l’INRIA (Institut National de Recherche en Informatique et Automatique). De doux souvenirs de mes études sur le langage Caml issu de cet institut remontèrent à ma mémoire. Geneweb est écrit en OCaml (Objective Caml).

Sous Ubuntu 9.04 geneweb s’installe depuis le synaptic et la documentation Ubuntu permet d’initialiser rapidement une base de données. Geneweb peut gérer plusieurs base de données généalogique. Geneweb est un serveur http qui écoute sur le port 2317. L’interface graphique est plutôt vieillotte mais la prise en main est aisée. Le plus long est d’entrer les informations c’est alors que l’on peut appliquer la parallélisation du travail. Laissez donc toute votre famille participer au renseignement de la base de donnée.

Geneweb n’écoutant pas sur le port standard du web, le port 80 il est judicieux de configurer un serveur Apache en reverse proxy pour rendre geneweb accessible depuis internet. Nous allons voir comment procéder.

Il faut que le module proxy soit activé. Pour cela aller voir dans /etc/apache2/mods-enabled/ pour y trouver proxy.conf et proxy.load. Si ces fichiers ne sont pas présents aller voir dans mods-available, si ils y sont il suffit de lancer une commande:

a2enmod proxy

Si les fichiers ne sont pas dans mods-available il faudra installer ces modules apaches depuis le dépot.

Une fois le module proxy installer nous allons le configurer pour faire le lien avec Geneweb. Modifier le fichier /etc/apache2/modds-enabled/proxy.conf comme suit:

<IfModule mod_proxy.c>
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

ProxyPass /geneweb/  //127.0.0.1:2317/
ProxyPassReverse /geneweb/ //127.0.0.1:2317/
 </IfModul mod_proxy.c>

Afin que toute votre famille puisse enrichir la base, nous n’utilisons pas la restriction d’accès offerte par genweb en interne mais une simple authentification par apache.

<Location "/geneweb">
AuthType Basic
AuthName "Restricted App"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /etc/apache2/passwords
Require valid-user
</Location>

La génération du fichier passwords se fait avec la commande suivante

htpasswd -c passwords bidochon

Cela va créer un nouveau fichier de mots de passe avec un utilisateur bidochon pour lequel la commande va demander le mot de passe. Pour ajouter de nouvelles personnes la commande est légèrement différente :

htpasswd passwords tintin

Cela va ajouter l’utilisateur tintin au fichier.

Enfin si l’hébergement de votre propre serveur geneweb vous rebute, vous pourrez toujours vous retourner vers un service gratuit en ligne comme Geneanet

Application de généalogie: Geneweb

J’étais à la recherche d’une application pour tracer un arbre généalogique pour mon fils et je pensais utiliser un simple logiciel de dessin vectoriel mais je me décida de rechercher une vrai application dédiée. Je suis alors tombé sur geneweb issue de l’INRIA (Institut National de Recherche en Informatique et Automatique). De doux souvenirs de mes études sur le langage Caml issu de cet institut remontèrent à ma mémoire. Geneweb est écrit en OCaml (Objective Caml).

Sous Ubuntu 9.04 geneweb s’installe depuis le synaptic et la documentation Ubuntu permet d’initialiser rapidement une base de données. Geneweb peut gérer plusieurs base de données généalogique. Geneweb est un serveur http qui écoute sur le port 2317. L’interface graphique est plutôt vieillotte mais la prise en main est aisée. Le plus long est d’entrer les informations c’est alors que l’on peut appliquer la parallélisation du travail. Laissez donc toute votre famille participer au renseignement de la base de donnée.

Geneweb n’écoutant pas sur le port standard du web, le port 80 il est judicieux de configurer un serveur Apache en reverse proxy pour rendre geneweb accessible depuis internet. Nous allons voir comment procéder.

Il faut que le module proxy soit activé. Pour cela aller voir dans /etc/apache2/mods-enabled/ pour y trouver proxy.conf et proxy.load. Si ces fichiers ne sont pas présents aller voir dans mods-available, si ils y sont il suffit de lancer une commande:

a2enmod proxy

Si les fichiers ne sont pas dans mods-available il faudra installer ces modules apaches depuis le dépot.

Une fois le module proxy installer nous allons le configurer pour faire le lien avec Geneweb. Modifier le fichier /etc/apache2/modds-enabled/proxy.conf comme suit:

<IfModule mod_proxy.c>
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

ProxyPass /geneweb/  //127.0.0.1:2317/
ProxyPassReverse /geneweb/ //127.0.0.1:2317/
 </IfModul mod_proxy.c>

Afin que toute votre famille puisse enrichir la base, nous n’utilisons pas la restriction d’accès offerte par genweb en interne mais une simple authentification par apache.

<Location "/geneweb">
AuthType Basic
AuthName "Restricted App"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /etc/apache2/passwords
Require valid-user
</Location>

La génération du fichier passwords se fait avec la commande suivante

htpasswd -c passwords bidochon

Cela va créer un nouveau fichier de mots de passe avec un utilisateur bidochon pour lequel la commande va demander le mot de passe. Pour ajouter de nouvelles personnes la commande est légèrement différente :

htpasswd passwords tintin

Cela va ajouter l’utilisateur tintin au fichier.

Enfin si l’hébergement de votre propre serveur geneweb vous rebute, vous pourrez toujours vous retourner vers un service gratuit en ligne comme Geneanet