PHP 5.x(cli) et extension pgsql
`dynacase-te' est écrit en PHP et nécessite donc l'interpréteur PHP (php-cli) et l'extension pgsql.
Java Runtime Environment 6
`dynacase-te' nécessite un environnement Java 6 pour utiliser l'API Java d'OpenOffice en mode serveur (http://openjdk.java.net/install/, http://www.oracle.com/technetwork/java/javase/downloads/index.html).
OpenOffice.org 3.2.1
`dynacase-te' est préconfiguré pour fonctionner avec OpenOffice.org 3.2.1 tels que livré par les paquets du site officiel OpenOffice.org (installé par défaut dans `/opt/openoffice.org3').
tika-app-0.9.jar
`dynacase-te' utilise l'outils `tika-app', du projet Apache Tika, pour l'extraction de texte (c.f. tika-app).
Xvfb
`dynacase-te' nécessite le serveur X virtual-frame-buffer (Xvfb) pour exécuter OpenOffice.org.
SimpleXML
`dynacase-te' nécessite SimpleXML (installé par défaut avec php5-cli sur Debian Squeeze).
a2ps et ps2pdf14
`dynacase-te' utilise l'outils `a2ps' (fournit par a2ps) et `ps2pdf14' (fournit avec Ghostscript), pour les conversions texte → PDF.
recode
`dynacase-te utilise recode (fournit par GNU recode).
perl
`dynacase-te utilise perl (fournit par Perl).
convert
`dynacase-te utilise l'outil de conversion d'image convert (fournit par ImageMagick).
zip/unzip
`dynacase-te utilise zip et unzip (fournit par Info-ZIP).
`dynacase-te' est disponible sous forme d'archive à installer sur un serveur dédié (ou non) qui assurera la fonction de serveur de transformation pour un serveur Dynacase.
# wget http://eec.anakeen.com/public/tengine/dynacase-te-current.tar.gz # tar zxvf dynacase-te-current.tar.gz
L'archive se décompresse et crée un sous-répertoire `dynacase-te-{VERSION}-{RELEASE}' avec le numéro de {VERSION} et de {RELEASE} de dynacase-te.
Exemple d'install dans `/opt/dynacase-te' :
# TE_HOME=/opt/dynacase-te # mv dynacase-te-1.0.0-1 $TE_HOME
Le répertoire `/opt/dynacase-te' sera par la suite référencé dans la documentation par `$TE_HOME'.
# su postgres -c psql postgres=# CREATE DATABASE "te" WITH OWNER "dynacaseowner";
# vi $PGSYSCONFDIR/pg_service.conf ... [te] host=127.0.0.1 port=5432 user=dynacaseowner password=password dbname=te
Note: La valeur de `$PGSYSCONFDIR est dépendante de votre distribution, et peut être trouvée avec la commande : `pg_config –sysconfdir'.
# PGSERVICE=te psql te=# \q
L'archive `tika-app-0.9.jar' peut être obtenue en compilant les sources de Apache Tika 0.9, ou bien sous forme pré-compilée sur notre dépôt `third-party' : http://ftp.dynacase.org/third-party/tika-app-0.9.jar.
La compilation de `apache-tika-0.9-src.zip' avec maven (`mvn') peut nécessiter l'augmentation des limites mémoire de la JVM :
$ cd apache-tika-0.9 $ MAVEN_OPTS=-Xmx2048m mvn -e clean install
L'archive JAR de `tika-app' doit ensuite être déposée dans le sous-répertoire `$TE_HOME/lib/engines' :
# cp tika-app/target/tika-app-0.9.jar $TE_HOME/lib/engines/
Les paramètres du serveur TE sont définis dans le fichier `$TE_HOME/etc/te.conf'.
Lors de la première utilisation il vous faudra copier le fichier d'exemple `te.conf.sample' dans `te.conf :
# cp $TE_HOME/etc/te.conf.sample $TE_HOME/etc/te.conf
Les paramètres à ajuster en fonction de votre environnement sont :
REQUEST_DIRECTORY=/var/tmp | Répertoire temporaire de travail du serveur request et des scripts engines. |
RENDERING_DIRECTORY=/var/tmp | Répertoire temporaire de travail du serveur rendering. |
LISTEN_ADDRESS=0.0.0.0 | Adresse d'écoute du serveur TE. |
PORT=51968 | Port d'écoute du serveur TE. |
TE_PG_SERVICE=te | Contient le le nom du service pour l'accès à la base `te'. |
URL_CALLBACK_LOGIN=te | Login dans le cas ou le serveur Dynacase est derrière une authentification HTTP Basic non gérée par dynacase (frontal/reverse proxy HTTP avec authentification HTTP Basic par exemple). |
URL_CALLBACK_PASSWORD=secret | Le mot de passe associé au login URL_CALLBACK_LOGIN pour l'authentification HTTP Basic. |
root TE_SERVER_USER=root | L'utilisateur sous lequel lancer les serveurs de TE (root par défaut). |
Note : Il est recommandé de ne pas lancer les serveurs de TE sous le compte root mais d'utiliser plutôt un compte utilisateur dédié.
TE_OOO_BASE_DIR=/opt/openoffice.org3 | Le chemin d'accès au répertoire racine d'installation de OpenOffice.org. |
TE_OOO_SERVER_PYTHON=${TE_OOO_BASE_DIR}/program/python | Le chemin d'accès à l'interpréteur Python de OpenOffice.org. |
TE_OOO_SERVER_SOFFICE=${TE_OOO_BASE_DIR}/program/soffice | Le chemin d'accès au programme `soffice' de OpenOffice.org. |
TE_OOO_SERVER_UNOPKG=${TE_OOO_BASE_DIR}/program/unopkg | Le chemin d'accès au programme `unopkg' de OpenOffice.org. |
TE_OOO_CLASSPATH=“${TE_OOO_BASE_DIR}/basis-link/program/classes/unoil.jar:${TE_OOO_BASE_DIR}/basis-link/ure-link/share/java/juh.jar:${TE_OOO_BASE_DIR}/basis-link/ure-link/share/java/jurt.jar:${TE_OOO_BASE_DIR}/basis-link/ure-link/share/java/ridl.jar” | Le classpath Java pour accéder aux librairies Java d'OpenOffice. Les classes nécessaires sont contenus dans `unoil.jar', `juh.jar', `jurt.jar' et `ridl.jar'. |
TE_OOO_JVM_OPTS=”” | Variable pour positionner des paramètres spécifiques pour la JVM si besoin. |
TE_OOO_SERVER_HOST=127.0.0.1 | L'adresse IP d'écoute du serveur TE. |
TE_OOO_SERVER_PORT=8123 | Le port d'écoute du serveur TE. |
TIKA_APP_JAR=“${TE_HOME}/lib/engines/tika-app-0.9.jar” | Le chemin d'accès à l'archive `tika-app-0.9.jar'. |
Une fois les éléments installés, il vous faut initialiser la base de données TE.
# $TE_HOME/bin/ted init * Initializing ted service: OK
L'initialisation crée les tables `engine' et `task' dans la base TE.
TE démarre trois services qui sont :
# $TE_HOME/bin/ted start Starting OOO server... 27023 Starting te_request_server... 27041 Starting te_rendering_server... 27043 * Starting ted service: OK
Le script `ted s'occupe de lancer les trois composants, et affiche leur PID.
# $TE_HOME/bin/ted status Request server running (27041) Rendering server running (27043) OOO server running (27023)
Le script `ted' affiche pour chacun des trois composants s'ils tournent ou non, et leur PID.
Le script `ted' permet de lancer une vérification des moteurs de transformations. Pour cela, il faut démarrer les composants (voir `ted start' ci-dessus), et ensuite exécuter la commande suivante :
# $TE_HOME/bin/ted check * Checking conversion from ODT to PDF... Ok: '/tmp/test.odtn27155.pdf' (7957 bytes) * Checking conversion from ODT to PDF/A-1... Ok: '/tmp/test.odtQ27176.pdfa' (14430 bytes) * Checking conversion from ODT to TXT... Ok: '/tmp/test.odtu27199.txt' (22 bytes) * Checking conversion from ODT to MS-Word... Ok: '/tmp/test.odtSy4BuE.doc' (9216 bytes) * Checking conversion from HTML to ODT... Ok: '/tmp/test.htmlF27220.odt' (9067 bytes) * Checking conversion from HTML to PDF... Ok: '/tmp/test.htmlj27253.pdf' (8066 bytes) * Checking conversion from HTML to PDF/A-1... Ok: '/tmp/test.htmlW27300.pdfa' (14764 bytes) * Checking conversion from HTML to TXT... Ok: '/tmp/test.htmll27348.txt' (39 bytes) * Checking conversion from PDF to TXT... Ok: '/tmp/test.pdfq27356.txt' (22 bytes) * Checking conversion from TXT to PDF... Ok: '/tmp/test.txtK27363.pdf' (2559 bytes)
hostname') et le nom de domaine (tel que retourné par la commande `dnsdomainname') sont corrects, et que le fichier `/etc/hosts' est correctement renseigné.
# $TE_HOME/bin/ted stop Stopping te_request_server... 27041 Stopping te_rendrering_server... 27043 Stopping OOO server... 27023 * Stopping ted service: OK
L'option “cleantmpfiles” permet de supprimer les fichiers temporaires nommés `tes-*' et `ter-*', présents dans les répertoire $REQUEST_DIRECTORY et $RENDERING_DIRECTORY qui ont plus de 7 jours (valeur par défault).
# $TE_HOME/bin/ted cleantmpfiles
Si vous voulez spécifier votre propre durée, vous pouvez ajouter le nombre de jours après l'option “cleantmpfiles”.
Exemple pour supprimer les fichiers temporaires de plus de 15 jours :
# $TE_HOME/bin/ted cleantmpfiles 15
Pour effectuer le nettoyage régulièrement, vous pouvez exécuter cette commande à partir d'une crontab.
Pour que TE démarre, et s'arrête, lors du démarrage, et l'arrêt, du système, il faut enregistrer le script `ted' dans le système rc/init de votre système.
Les distribution de type RedHat utilisent la commande `chkconfig' pour administrer les scripts rc/init.
Faire un lien symbolique de `$TE_HOME/bin/ted' dans le répertoire `/etc/rc.d/init.d/' :
# ln -sf $TE_HOME/bin/ted /etc/rc.d/init.d/ted
Enregistrer `ted' :
# chkconfig --add ted # chkconfig ted on # chkconfig --list ted ted 0:arrêt 1:arrêt 2:marche 3:marche 4:marche 5:marche 6:arrêt
Les distributions de type Debian utilisent la commande `update-rc.d' pour administrer les scripts rc/init.
Faire un lien symbolique de `$TE_HOME/bin/ted' dans le répertoire `/etc/init.d/' :
# ln -sf $TE_HOME/bin/ted /etc/init.d/ted
Enregistrer `ted' :
# # update-rc.d ted defaults Adding system startup for /etc/init.d/ted ... /etc/rc0.d/K20ted -> ../init.d/ted /etc/rc1.d/K20ted -> ../init.d/ted /etc/rc6.d/K20ted -> ../init.d/ted /etc/rc2.d/S20ted -> ../init.d/ted /etc/rc3.d/S20ted -> ../init.d/ted /etc/rc4.d/S20ted -> ../init.d/ted /etc/rc5.d/S20ted -> ../init.d/ted
Rendez vous ensuite à la page Configuration de Dynacase pour utiliser TE pour configurer Dynacase
La partie cliente de dynacase-te est à présent intégré dans Dynacase-platform-3.X
dynacase-te' et `dynacase-te-client' à l'aide du gestionnaire de paquet.dynacase-te-current.tar.gz' comme indiqué ci-dessus.$TE_HOME/etc/te.conf à partir du fichier `$TE_HOME/etc/te.conf.sample', et ajuster les paramètres en fonction de votre installation précédente.engine' :# PGSERVICE=te psql te=# UPDATE engine SET command = regexp_replace(command, '^/usr/share/(php|pear)/TE/engines/', '@TE_HOME@/lib/engines/');
ted check'.
Le paramètre `TE_OOO_SERVER_USER' est renommé en `TE_SERVER_USER' et sert à lancer tous les serveurs de TE sous cette identité.
Vérifier votre configuration `te.conf' pour rétablir ce paramètre si vous utilisiez `TE_OOO_SERVER_SERVER'.
Cette version introduit l'utilisation par défaut de Beagle pour l'extraction du texte des documents.
Vérifier votre configuration `te.conf' avec les paramètres `BEAGLE_*', et ré-initialiser la table `engine' pour incorporer `beagle2txt' comme moteur de transformation pour l'extraction de texte :
engine' :# PGSERVICE=te psql te=# DELETE FROM engine;
# PGSERVICE=te psql te=# \i $TE_HOME/lib/engines/engine_init.sql
Correction bug #254 : la librairie `Lib.TEUtil.php' a été renommée en `Lib.TE.php' pour éviter les conflits avec la librairie `Lib.TEUtil.php' livrée par l'ancien paquet `freedom-te-client'.
Cette version introduit trois nouveaux moteurs de transformation qui sont :
Leur rôle est de prendre en entrée une archive ZIP contenant des fichiers texte compréhensibles par OpenOffice.org (.odt, .doc, etc. ; sont donc exclus les .xls, .ods, .ppt, etc.), et de produire en sortie un fichier au format ODT, PFD ou PDF/A résultat de la concaténation (merge) des fichiers contenus dans l'archive.
Pour la mise à jour de la liste des moteurs :
engine' :# PGSERVICE=te psql te=# DELETE FROM engine;
# PGSERVICE=te psql te=# \i $TE_HOME/lib/engines/engine_init.sql
Une petit mise-à-jour de TE afin de contourner le dysfonctionnement de `beagle2txt' pour l'extraction de texte depuis les fichiers MS/Word sur les systèmes x86-64.
La commande `beagle-extract-content' ne fonctionnant pas correctement sur ces systèmes x86-64, nous avons donc ajouté un moteur `beagledoc2txt' dédié pour l'extraction texte des .doc (en utilisant `beagle-doc-extractor').
Si vous faites une mise-à-jour de TE, il faudra mettre à jour manuellement la base TE pour utiliser ce nouveau moteur :
# PGSERVICE=te psql te=# UPDATE engine SET command = '@TE_HOME@/lib/engines/beagledoc2txt' WHERE name = 'utf8' AND mime = 'application/msword';
Vérifiez ensuite le fonctionnement de la conversion en lançant un `ted check' et en vérifiant le statut de la conversion “from MS-Word to TXT” :
# /etc/init.d/ted check [...] * Checking conversion from MS-Word to TXT... Ok: '/tmp/test.docgFZZHm.txt' (28 bytes) [...]
Cette version introduit un mécanisme pour définir le type MIME d'un fichier à partir de son extension, en définissant des règles d'associations dans un fichier XML.
Les règles personnelle, qui ne seront pas écrasés lors de la mise-à-jour de TE, sont a définir dans le fichier `$TE_HOME/etc/mime-user.conf' :
<?xml version="1.0" encoding="utf8"?> <mimes> <mime ext="eml" sys="text/x-mail" text="Mail text file" /> <mime ext="foo" sys="application/foo" text="Foo file" /> </mimes>
Cela vous permet, par la suite, de pouvoir déclarer un moteur de transformation/indexation personnel pour traiter les `application/x-mail'.
Cette version remplace le script de conversion utilisant l'API Python d'OpenOffice par un script utilisant l'API Java.
Les scripts `lib/engines/ooo-server-convert.py' et `lib/engines/ooo-server-merge.py' sont donc supprimés et remplacés par le script `lib/engines/ooo-server' qui combine les fonctions de convert et merge.
Il faut donc un environnement de runtime Java 6 pour utiliser cette version de `dynacase-te'.
Cette version introduit aussi un nouveau moteur `ooo2doc' pour générer des fichiers au format MS-Word 97. Si vous faite une mise à jour il faudra ajouter la déclaration de ce moteur dans votre table `engine' :
INSERT INTO engine (name, mime, command, "comment") VALUES ('doc', 'application/vnd.oasis.opendocument.text', '@TE_HOME@/lib/engines/ooo2doc', NULL);
IMPORTANT
Le port d'écoute par défaut du serveur TE a été changé et est à présent 51968 (l'ancien port étant le 10000). Suite à la mise à jour il vous faudra soit modifier la configuration des serveurs Dynacase qui utilisent ce TE pour leur indiquer le nouveau port à utliser, ou bien modifier la configuration de TE `$TE_HOME/etc/te.conf' pour rétablir l'écoute sur le port 10000 en positionnant la variable `PORT=10000'.
Autres changements :
Cette version remplace les moteurs d'extraction de texte basés sur Beagle par un moteur (`tika2txt') utilisant `tika-app' du projet Apache Tika.
Voir détails sur l'installation de ce composant dans la section 2.4.1. tika-app.
L'utilisation de `tika-app' apporte aussi le support de l'extraction de texte pour les documents au format MS-Office Open XML (`.docx', `.xlsx' et `.pptx'), Apple iWork (`.pages', `.numbers' et `.keynote'), Rich Text Format (`.rtf'), ePub (`.epub') et Outlook Mail Message (`.msg').
La liste des moteurs doit être mise à jour en base de données. Pour cela, il faudra re-initialiser le contenu de la table `engine' et rajouter par la suite vos éventuels moteurs spécifiques.
Pour la mise à jour de la liste des moteurs :
engine' :# PGSERVICE=te psql te=# DELETE FROM engine;
# PGSERVICE=te psql te=# \i $TE_HOME/lib/engines/engine_init.sql
Le fichier de configuration ($TE_HOME/etc/te.conf) doit être modifié afin de référencer le programme tika
# -- Tika-app Jar file
TIKA_APP_JAR="${TE_HOME}/lib/engines/tika-app-0.9.jar"
Cette version améliore la gestion des fichiers temporaires et ajoute une option au script rc-init ted pour nettoyer les fichiers temporaires de TE qui ont plus de X jours.
Voir Nettoyage des fichiers temporaires (''ted cleantmpfiles'')
Cette version corrige un problème de détection du type MIME des fichiers OpenOffice.org.