Vous êtes sur le wiki de développement du projet SLIS

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

devel:initial-config [2008/05/18 21:35] (Version actuelle)
Ligne 1: Ligne 1:
 +Voici le contenu d'un mail de Raphael Herzog sur la configuration initiale des paquets :
 +
 +
 +SLIS comme LCS (et peut-être SE3) est confrontée à une problématique de
 +création des tables nécessaires dans la base de données (Postgresql ou
 +Mysql) et ces opérations sont traditionnellement effectuées dans le
 +scripts "​postinst"​ des paquets respectifs.
 +
 +Malheureusement aucun des démons n'est démarré lorsque ces paquets sont
 +installés au cours de l'​installation initiale avec debian-installer. Ce
 +qui fait que ces scripts échouent et que l'​installation avorte...
 +
 +Pour répondre à ce problème, j'ai développé une petite infrastructure dans
 +le paquet "​slis-common"​ [1]. Au lieu de faire la configuration initiale
 +directement dans le postinst, on crée un script dédié. Ce script nécessite
 +un argument et accepte 3 valeurs pour cet argument: possible, needed,
 +configure.
 +
 +Lorsqu'​on l'​appelle avec "​possible"​ le script doit dire si tous les
 +pré-requis nécessaires à la configuration sont satisfaits. Typiquement il
 +faut vérifier si le serveur postgresql/​mysql tourne (avec pgrep par
 +exemple). Un code de retour nul signifie "oui c'est possible de
 +configurer",​ un code retour non-nul signifie "non ce n'est pas possible,
 +merci de réessayer plus tard".
 +
 +Lorsqu'​on l'​appelle avec "​needed",​ on fait la supposition que les
 +pré-requis sont satisfaits parce que l'​utilisateur aura vérifié avec
 +"​possible"​ juste avant. "​needed"​ répond à la question "​est-ce que je dois
 +faire quelque chose ou bien le service est-il déjà configuré"​ ?
 +un code de retour nul signifie "oui la configuration est nécessaire"​ et
 +non-nul signifie l'​inverse.
 +
 +Enfin lorsqu'​on l'​appelle avec "​configure",​ on effectue pour de bon la
 +configuration... on se connecte à la base de données, on crée les tables,
 +etc.
 +
 +Le paquet qui doit être configuré doit dépendre de slis-common et dans le
 +script de post-installation il doit faire ceci à la place de la configuration
 +initiale actuellement en place:
 +    . /​usr/​share/​slis-common/​slis.sh
 +    handle_initial_config monscript-config 20
 +
 +monscript-config est le nom du script de configuration,​ il doit être dans
 +le $PATH, j'ai choisi pour SLIS de les mettre dans /usr/sbin/. 20 est un
 +numéro d'​ordre qui trie les scripts de configuration s'il y en a plusieurs
 +(j'y reviens de suite).
 +
 +handle_initial_config est une fonction shell qui va vérifier si "​possible"​
 +et "​needed"​ renvoie tous deux oui: dans ce cas la confuration est exécutée
 +immédiatement depuis le postinst. Si possible renvoie "​non",​ un lien
 +symbolique vers le script de configuration est rajouté dans
 +/​etc/​slis/​toconfigure/​. slis-common fournit aussi un script qui est
 +exécuté au démarrage de l'​ordinateur (mais après le démarrage des
 +différents services) et qui va vérifier s'il y a des scripts de
 +configuration à exécuter depuis /​etc/​slis/​toconfigure/​. Tant que le script
 +répond "​non"​ à "​possible",​ le lien symbolique est conservé et des essais
 +périodiques sont effectués. Sinon, "​needed"​ est demandé, s'il répond
 +"​non"​ le lien symbolique est supprimé sans exécuter "​configurer",​ s'il
 +répond "​oui",​ alors "​configure"​ est exécuté et si "​configure"​ ne retourne
 +pas de code d'​erreur,​ alors le lien symbolique est supprimé.
 +
 +Voilà, l'​explication est un peu compliquée mais c'est tout simple en fait.
 +Voici à quoi ressemble un script de configuration chez nous:
 +
 +#!/bin/sh
 +set -e
 +. /​usr/​share/​slis/​slis-common.sh
 +load_slis_config
 +
 +case "​$1"​ in
 +    possible)
 +        if [ -e "​$POSTGRES_CONF"​ ] && slis-test-postgres;​ then
 +            exit 0
 +        else
 +            exit 1
 +        fi
 +    ;;
 +    needed)
 +        exit 0
 +    ;;
 +    configure)
 +        # Configure the SQL database with dnsmachine,
 +        # dnsslavezone,​ dnszone and options for DNS service
 +        /​usr/​share/​interfacedu/​install/​slis-dns-postgres-init.sh
 +    ;;
 +    *)
 +        echo "​usage:​ $0 {configure|possible|needed}"​ >&2
 +        exit 1
 +    ;;
 +esac
 +
 +
 +
 +Actuellement l'​installation de lcs-imap, lcs-smtp et donc lcs-squirrelmail
 +n'est pas possible dans debian-installer à cause de ce problème de
 +configuration de base de données. J'​aimerai donc vous inviter à mettre à
 +jour vos paquets pour profiter de ce service de slis-common afin que
 +l'​installateur de Slis 4.1 puisse aussi installer les paquets LCS.
 +
 +On peut récupérer slis-common ici:
 +http://​ftp.slis.fr/​slis/​pool/​main/​s/​slis-core/​slis-common_4.1.0_all.deb
  

QR Code
QR Code devel:initial-config (generated for current page)