blog.bressure.net

Carnet professionnel d'un informaticien

Application

Base Geneweb sur Cdrom

admin
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" http://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.

Tags:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Back to top