Je ne m’attendais pas à un tel engouement suite à l’annonce dans mon précédant billet, *DocBucket, où la gestion facile de son joyeux bordel*. Je dois dire que je suis assez content que ce développement puisse intéresser d’autres personnes que moi.

Je me suis donc attelé au packaging de l’application afin de rendre sa mise en place un peu moins acrobatique. Pour le moment, je ne me suis occupé que des packages Python, mais des packages pour au moins Debian devraient arriver assez vite. Au passage, si un mainteneur ou développeur Debian passe par ici est souhaite me donner un coup de main pour rendre disponible le package sur les dépôts officiels, ce serait avec plaisir :-).

Une documentation, localisation en français et l’ajout de fonctionnalités arriveront eux aussi très bientôt. En attendant, voici un petit tutoriel d’installation sur Debian Squeeze, les utilisateurs des autres distributions pourront, je pense, aisément l’adapter pour leurs distributions.

Installation des dépendances

Les dépendances sont assez nombreuses, heureusement, elles sont pratiquement toutes packagées par Debian :

1
# aptitude install python-django python-imaging python-whoosh python-pymongo cuneiform ghostscript exactimage

Malheureusement, mongoengine n’est pas disponible sur Debian, il faut donc l’installer depuis le package python, vous pouvez utiliser easy_install (package Debian python-setuptools) ou pip (package python-pip) pour l’installer :

Il vous faudra aussi un serveur faisant tourner mongodb, ça peut être la même machine ou une autre :

1
# aptitude install mongodb

Installation de DocBucket

Vous avez normalement déjà installé easy_install ou pip pour l’étape d’installation de mongoengine, il vous suffit donc de les utiliser pour installer DocBucket à son tour :

1
# easy_install docbucket

ou

1
# pip install docbucket

Création de la base de données

Commençons par créer une base de données et un utilisateur sur le mongodb que nous venons d’installer.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# mongo
MongoDB shell version: 1.6.3
connecting to: test
> use docbucket
switched to db docbucket
> db.addUser('docbucket', 'secret')
{
    "user" : "docbucket",
    "readOnly" : false,
    "pwd" : "2aed2908ebee85906effb373b061d354"
}

C’est tout !

Création du projet Django

Placez vous dans le répertoire que vous voulez utiliser pour stocker la configuration de votre instance de DocBucket. Vous pouvez par exemple créer un nouvel utilisateur et la mettre dans sa homedir.

Exécutez la commande suivante

1
$ django-admin startproject mydocbucket

(il est important que le nom du projet ne soit pas “docbucket”, l’application Django portant déjà ce nom)

Le script va vous créer un répertoire mydocbucket contenant l’arborescence standard des projets Django :

1
2
3
4
5
.
|-- __init__.py
|-- manage.py
|-- settings.py
`-- urls.py

Ce qui nous intéresse ici, ce sont les fichiers settings.py et urls.py. Le premier contient la configuration du projet Django, le second, le mapping d’urls. Si vous n’êtes pas familier avec Django, copiez simplement les exemples contenus dans le répertoire example de l’archive source.

Les options importantes à éditer dans le settings.py sont :

  • MONGO_* : configuration de la connexion à MongoDB.
  • MEDIA_ROOT : chemin absolu vers le répertoire contenant les médias. Celui-ci dépend de votre installation, le fichier d’exemple contient le chemin vers le répertoire media lors de mon installation pour vous aider à le trouver.
  • INCOMING_DIRECTORY : le chemin absolu vers le dossier où stocker les .tiff en sortie de votre scanner.
  • WHOOSH_INDEX : chemin absolu vers le dossier stockant les indexes de la base de recherche, vous pouvez le mettre dans le dossier courant par exemple.

Le reste ne devrait pas avoir à être changé.

Exécutez ensuite la commande python manage.py create_index pour créer l’index de la base de recherche.

À ce stade, DocBucket est installé et vous pouvez le tester en utilisant la commande python manage.py runserver avant d’ouvrir http://127.0.0.1:8000 dans votre navigateur. L’utilisation du serveur web embarqué à Django n’est pas recommandé pour la production, toutefois, si vous êtes le seul utilisateur de l’application, ça ne devrait pas poser de problème. Si vous souhaitez continuer par une installation en passant par un serveur web, je vous redirige vers les multiples documentations à ce sujet.

Pour terminer, les contributions sont évidemment ouvertes : la licence finalement choisie est la GPL3, j’ai aussi mis en place une forge pour ce projet, vous pouvez donc voir les sources, les modifier, m’envoyer des patchs ou même écrire sur le dépôt Git (moyennant un petit mail), mais aussi utiliser le bugtracker pour soumettre bugs et autres idées.