INSTALLATION DE POSTGRES95 SUR LINUX

Gilles DAROLD, darold@neptune.fr

v1.0, 23 novembre 1996
Ce document décrit comment installer Postgres95 ou PostgreSQL sur Linux pour les versions 1.01 à 1.09.

1. Créer un login postgres

Avant toute opération il faut créer un compte utilisateur postgres. Ceci requiert les privilèges de root, certaines autres parties aussi, donc restez en root.

2. Récupération et installation des fichiers sources

L'URL http://www.postgresql.org/ pointe sur l'ensemble des adresses où l'on peut récupérer les fichiers sources de POSTGRES95. Les man en ligne des commandes de postgres95 sont disponibles à cette adresse : http://www.eol.ists.ca/~dunlop/postgres95/. Le Guide d'implémentation en ligne est quant à lui accessible depuis l'url : http://www.postgresql.org/impguide/. Je vous conseille surtout un site très complet sur PostgreSQL à : http://logical.thought.net/postgres95/.

Copiez le fichier archive dans le répertoire /usr/local/. Il faut ensuite décomprimer le fichier avec gunzip puis le désarchiver avec la commande 

tar -xvf nomfichier.tar
ou directement avec la commande :
tar xvzf nomfichier.tar.gz

3. Compilation et installation

Note : cette installation a été faite sur un système linux slackware 3, avec une configuration par défaut utilisant le format binaire ELF (format des exécutables de Linux).

Les Makefiles utilisés pour compiler Postgres95 nécessitent GNU make.

Le fichier /usr/local/postgres95/src/Makefile.global contient les paramètres de compilation à modifier :

PORTNAME

spécifie la plate-forme sur laquelle Postgres sera installé. Il faut donc changer la valeur par défaut (alpha) par la valeur -> linux.

POSTGRESLOGIN

spécifie l'utilisateur qui réalisera initdb et lancera le daemon postmaster. La valeur par défaut est postgres et c'est très bien comme ça.

POSTGRESDIR

spécifie le plus haut répertoire contenant tous les fichiers de postgres95, ici : /usr/local/postgres95/

SRCDIR

spécifie où sont disposés les fichiers sources. Ici et par défaut dans $(POSTGRESDIR)/src.

Après avoir édité et modifié le fichier src/Makefile.global, vous pouvez commencer à compiler et installer POSTGRES95. Pour cela il faut, toujours en login root, taper les commandes suivantes :

% cd /usr/local/postgres95/src
% make
% make install

ce qui peut prendre entre 1/4 d'heure et 1/2 heure suivant la machine sur laquelle vous réalisez l'installation.

Après cette installation complète de POSTGRES95, vérifiez que vous avez bien les fichiers suivants :

- Dans /usr/local/postgres95/bin/

cleardbdir*   destroydb*    monitor*      postgres*
createdb*     destroyuser*  pg_id*        postmaster@
createuser*   initdb*       pg_version*   psql*

- Dans /usr/local/postgres95/data/files/

global1.bki           local1_template1.bki
global1.bki.source    local1_template1.bki.source

Si c'est le cas, l'installation est terminée et il ne reste plus qu'à changer le nom de l'utilisateur et de groupe de tous les fichiers qui, pour l'instant appartiennent à root. Pour cela, si vous avez déjà créé un utilisateur et un groupe postgres (cf plus bas), placez-vous dans le répertoire /usr/local/ et tapez les commandes suivantes :

% chown -R postgres postgres95/
% chgrp -R postgres postgres95/

ainsi, récursivement (-R) tous les fichiers à partir du répertoire /usr/local/postgres95/, lui compris, appartiendront à l'utilisateur postgres et au groupe postgres.

Pour créer un groupe sur linux, éditez le fichier /etc/group et ajoutez la ligne suivante :

postgres::500:root,postgres,darold

où postgres est le nom du groupe, 500 est le gid, et les noms suivants sont les utilisateurs appartenant à ce groupe (attention à ne pas affecter un numéro de gid déjà existant).

4. Initialisation des bases de données

Après avoir réalisé avec succès l'installation de postgres95 il reste à initialiser les bases de données. Attention, toutes les bases déjà existantes seront effacées. Logez-vous en tant qu'utilisateur postgres et tapez :

% initdb

5. Démarrer le daemon postmaster

Pour rendre POSTGRES95 opérationnel, il faut lancer le daemon postmaster, mais avant, il faut exporter les variables d'environnement dont il a besoin. C'est-à-dire :

% export PGDATA=/usr/local/postgres95/data/
% export PGPORT=5432
% echo $PGDATA $PGPORT  (pour voir si elles sont positionnees).

Le lancement de postmaster répond à la commande :

% postmaster -S

Celui-ci tournera donc en background et ne sera visible que par la commande :

% ps -exf

6. Test de requêtes sur postgres

Afin de s'assurer que tout va bien, il est recommandé de créer une base de données à partir du répertoire contenant les exécutables de postgres95 (/usr/local/postgres95/bin) et par la commande :

% createdb essai

puis de s'y connecter en tapant :

% psql essai

Si tout se passe bien, vous verrez le prompt postgres apparaître :

essai =>

Faites un essai de création de table, d'insertion, de sélection et de mise à jour sur une table. Un manuel d'utilistion de POSTGRES95 est disponible dans le répertoire /usr/local/postgres95/doc/.

Le login postgres ayant par défaut tous les droits, si vous voulez que d'autres utilisateurs puissent utiliser les bases de données, il vous faut créer ces utilisateurs en tapant la commande à partir de bin/ si vous n'avez pas encore ajouté le répertoire à votre path (voir plus loin) :

% createuser darold

Répondez oui aux droits que vous souhaitez donner à ce nouvel utilisateur POSTGRES. Attention : ceci ne donne que les droits de cré,ation et d'effacement sur les bases de cet utilisateur. Si vous voulez que d'autres utilisateurs puissent utiliser cette base de données, vous devez le faire en SQL avec le mot réservé GRANT et connecté à la base.

7. Lancement du daemon de postgres95 au boot LINUX

Afin de réaliser un lancement automatique du daemon postmaster et de permettre aux utilisateurs, dés le login, d'accéder à l'utilisation de postgres, il faut générer une procédure d'automatisation par l'intermédiaire d'un script et du fichier /etc/inittab, comme suit :

1) -

Créer un fichier en script shell nommé postgres-start, placez-le dans le répertoire /usr/local/scripts. Il doit être exécuté par le système. Ce fichier contient tous les paramètres d'initialisation et de lancement du daemon postmaster.

Le source de ce fichier /usr/local/scripts/postgres-start est joint à la fin de ce document.

Comme ce script utilise un fichier de débogage nommé postmaster.log, vous devrez le créer et le placer dans un répertoire, à créer aussi, tel que proposé dans ce script :

/usr/local/postgres95/log/postmaster.log

ou, si vous avez un répertoire à cet effet, modifiez en conséquence le script.

2) -

Il vous faut ensuite taper les lignes suivantes dans votre fichier /etc/inittab. Ce fichier sert au lancement de procédures lors du boot système, et ici le lancement du script précédent (selon un run_level) :

# Lancement du daemon de postgres95
p1:45:wait:/usr/local/scripts/postgres-start

où p1 est le nom de la procédure, 45 le run level, et wait veut dire d'attendre la fin du déroulement du fichier inittab avant de continuer.

3) -

Rebootez la machine, et reportez-vous à la documentation de Postgres95 pour de plus amples informations.

8. Code source du script postgres-start

#!/bin/sh

#######################################################################
#
# MACHINE         : gdpc 
# SCRIPT_NAME     : postgres-start
# SCRIPT LANGUAGE : sh
#
#       Created by: Gilles DAROLD
#       Modify by : Gilles DAROLD on Sun Nov 24 18:36:24 1996
#######################################################################

# Variables d'environnement pour Postgres95 :
POSTGRESHOME=/usr/local/postgres95
PGDATA=$POSTGRESHOME/data
PGPORT=5432

# Chemin d'acces
POSTGRESPATH=$POSTGRESHOME/bin

# Ajout au path
PATH=/sbin:/bin:/usr/bin:$POSTGRESPATH

echo ""
echo "Lancement du daemon de postgres95 : postmaster"

# fichier de debugage du lancement de postmaster
LOGf=$POSTGRESHOME/log/postmaster.log

if [ -f $LOGf ] ; then
   mv $LOGf $LOGf.OLD
fi

#----------------------------------------------------------------------
# Attention, le lancement du deamon doit se faire sous l'UID postgres!
# Ne jamais lancer POSTMASTER en superutilisateur root, sinon vous
# pouvez avoir de graves problèmes...
#----------------------------------------------------------------------
# Lancement du daemon de Postgres95
su postgres --command="postmaster -d 1 1>$LOGf 2>&1 &"

# End of /usr/local/scripts/postgres-start 
#######################################################################

9. Note

1>$LOGf correspond à une redirection du canal de sortie sur le fichier LOGf.

2>&1 correspond à la redirection du canal d'erreur sur le canal de sortie. Les erreurs sortiront donc sur le fichier LOGf.