INSTALLATION DE POSTGRES95 SUR LINUX Gilles DAROLD, darold@neptune.fr v1.0, 23 novembre 1996 Ce document decrit comment installer Postgres95 ou PostgreSQL sur Linux pour les versions 1.01 a 1.09. 11.. CCrreeeerr uunn llooggiinn ppoossttggrreess Avant toute operation il faut creer un compte utilisateur postgres. Ceci requiert les privileges de root, certaines autres parties aussi, donc restez en root. 22.. RReeccuuppeerraattiioonn eett iinnssttaallllaattiioonn ddeess ffiicchhiieerrss ssoouurrcceess L'URL pointe sur l'ensemble des adresses ou l'on peut recuperer les fichiers sources de POSTGRES95. Les man en ligne des commandes de postgres95 sont disponibles a cette adresse : . Le Guide d'implementation en ligne est quant a lui accessible depuis l'url : . Je vous conseille surtout un site tres complet sur PostgreSQL a : . Copiez le fichier archive dans le repertoire /usr/local/. Il faut ensuite decomprimer le fichier avec gunzip puis le desarchiver avec la commande tar -xvf nomfichier.tar ou directement avec la commande : tar xvzf nomfichier.tar.gz 33.. CCoommppiillaattiioonn eett iinnssttaallllaattiioonn Note : cette installation a ete faite sur un systeme linux slackware 3, avec une configuration par defaut utilisant le format binaire ELF (format des executables de Linux). Les Makefiles utilises pour compiler Postgres95 necessitent GNU make. Le fichier /usr/local/postgres95/src/Makefile.global contient les parametres de compilation a modifier : PPOORRTTNNAAMMEE specifie la plate-forme sur laquelle Postgres sera installe. Il faut donc changer la valeur par defaut (alpha) par la valeur -> linux. PPOOSSTTGGRREESSLLOOGGIINN specifie l'utilisateur qui realisera initdb et lancera le daemon postmaster. La valeur par defaut est postgres et c'est tres bien comme ca. PPOOSSTTGGRREESSDDIIRR specifie le plus haut repertoire contenant tous les fichiers de postgres95, ici : /usr/local/postgres95/ SSRRCCDDIIRR specifie ou sont disposes les fichiers sources. Ici et par defaut dans $(POSTGRESDIR)/src. Apres avoir edite et modifie le fichier src/Makefile.global, vous pouvez commencer a 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 realisez l'installation. Apres cette installation complete de POSTGRES95, verifiez 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 terminee et il ne reste plus qu'a changer le nom de l'utilisateur et de groupe de tous les fichiers qui, pour l'instant appartiennent a root. Pour cela, si vous avez deja cree un utilisateur et un groupe postgres (cf plus bas), placez-vous dans le repertoire /usr/local/ et tapez les commandes suivantes : % chown -R postgres postgres95/ % chgrp -R postgres postgres95/ ainsi, recursivement (-R) tous les fichiers a partir du repertoire /usr/local/postgres95/, lui compris, appartiendront a l'utilisateur postgres et au groupe postgres. Pour creer un groupe sur linux, editez le fichier /etc/group et ajoutez la ligne suivante : postgres::500:root,postgres,darold ou postgres est le nom du groupe, 500 est le gid, et les noms suivants sont les utilisateurs appartenant a ce groupe (attention a ne pas affecter un numero de gid deja existant). 44.. IInniittiiaalliissaattiioonn ddeess bbaasseess ddee ddoonnnneeeess Apres avoir realise avec succes l'installation de postgres95 il reste a initialiser les bases de donnees. Attention, toutes les bases deja existantes seront effacees. Logez-vous en tant qu'utilisateur postgres et tapez : % initdb 55.. DDeemmaarrrreerr llee ddaaeemmoonn ppoossttmmaasstteerr Pour rendre POSTGRES95 operationnel, il faut lancer le daemon postmaster, mais avant, il faut exporter les variables d'environnement dont il a besoin. C'est-a-dire : % export PGDATA=/usr/local/postgres95/data/ % export PGPORT=5432 % echo $PGDATA $PGPORT (pour voir si elles sont positionnees). Le lancement de postmaster repond a la commande : % postmaster -S Celui-ci tournera donc en background et ne sera visible que par la commande : % ps -exf 66.. TTeesstt ddee rreeqquueetteess ssuurr ppoossttggrreess Afin de s'assurer que tout va bien, il est recommande de creer une base de donnees a partir du repertoire contenant les executables 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 apparaitre : essai => Faites un essai de creation de table, d'insertion, de selection et de mise a jour sur une table. Un manuel d'utilistion de POSTGRES95 est disponible dans le repertoire /usr/local/postgres95/doc/. Le login postgres ayant par defaut tous les droits, si vous voulez que d'autres utilisateurs puissent utiliser les bases de donnees, il vous faut creer ces utilisateurs en tapant la commande a partir de bin/ si vous n'avez pas encore ajoute le repertoire a votre path (voir plus loin) : % createuser darold Repondez oui aux droits que vous souhaitez donner a ce nouvel utilisateur POSTGRES. Attention : ceci ne donne que les droits de cre,ation et d'effacement sur les bases de cet utilisateur. Si vous voulez que d'autres utilisateurs puissent utiliser cette base de donnees, vous devez le faire en SQL avec le mot reserve GRANT et connecte a la base. 77.. LLaanncceemmeenntt dduu ddaaeemmoonn ddee ppoossttggrreess9955 aauu bboooott LLIINNUUXX Afin de realiser un lancement automatique du daemon postmaster et de permettre aux utilisateurs, des le login, d'acceder a l'utilisation de postgres, il faut generer une procedure d'automatisation par l'intermediaire d'un script et du fichier /etc/inittab, comme suit : 11)) -- Creer un fichier en script shell nomme postgres-start, placez-le dans le repertoire /usr/local/scripts. Il doit etre execute par le systeme. Ce fichier contient tous les parametres d'initialisation et de lancement du daemon postmaster. Le source de ce fichier /usr/local/scripts/postgres-start est joint a la fin de ce document. Comme ce script utilise un fichier de debogage nomme postmaster.log, vous devrez le creer et le placer dans un repertoire, a creer aussi, tel que propose dans ce script : /usr/local/postgres95/log/postmaster.log ou, si vous avez un repertoire a cet effet, modifiez en consequence le script. 22)) -- Il vous faut ensuite taper les lignes suivantes dans votre fichier /etc/inittab. Ce fichier sert au lancement de procedures lors du boot systeme, et ici le lancement du script precedent (selon un run_level) : # Lancement du daemon de postgres95 p1:45:wait:/usr/local/scripts/postgres-start ou p1 est le nom de la procedure, 45 le run level, et wait veut dire d'attendre la fin du deroulement du fichier inittab avant de continuer. 33)) -- Rebootez la machine, et reportez-vous a la documentation de Postgres95 pour de plus amples informations. 88.. CCooddee ssoouurrccee dduu ssccrriipptt ppoossttggrreess--ssttaarrtt #!/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 problemes... #---------------------------------------------------------------------- # Lancement du daemon de Postgres95 su postgres --command="postmaster -d 1 1>$LOGf 2>&1 &" # End of /usr/local/scripts/postgres-start ####################################################################### 99.. NNoottee 1>$LOGf correspond a une redirection du canal de sortie sur le fichier LOGf. 2>&1 correspond a la redirection du canal d'erreur sur le canal de sortie. Les erreurs sortiront donc sur le fichier LOGf. .