Chapitre 1. Compilation et Installation sur GNU/Linux pour Debian Testing à partir des sources

Table des matières

1.1. Création des répertoires des sources
1.2. PostgreSQL
1.2.1. Création du super-utilisateur de PostgreSQL
1.2.2. Pré-requis
1.2.3. Téléchargement et décompression
1.2.4. Configuration
1.2.5. Compilation et installation
1.2.6. Ajout des outils/supports contributifs pour PostgreSQL
1.2.7. Commandes post-installation
1.2.8. Jeu de caractères Europe occidentales, LATIN9
1.2.9. Initialisation du serveur
1.2.10. Installation de PostgreSQL en tant que service
1.2.11. Optionnel: Pouvoir créer tous les paquets .deb nécessaires sous Debian
1.3. Geos et Proj
1.3.1. Téléchargement
1.3.2. Compilations et Installations
1.4. PostGIS
1.4.1. Téléchargement
1.4.2. Compilation et Installation
1.4.3. Tests de régression

Nous allons ici procéder aux diverses compilations et installations. Les diverses étapes doivent avoir lieu dans l'ordre chronologique des sections successives de ce chapitre. Nous commencerons par définir une hiérarchie des répertoires des sources pour pouvoir mieux nous retrouver pour la suite et accueillier les sources que nous aurons téléchargées.

Le dossier de téléchargement pour les sources auront lieu vers le répertoire-racine /mnt/sources/

Nous allons lancer un terminal. Nous profiterons aussi lors de ce chapitre pour fournir les commandes permettant d'installer Geos, Proj et PostGIS

Note

Je pars ici du prinicpe que les commandes apt-get et apt-cache de Debian vous sont familiés. Je ne ferais pas ici usage des outils tel que synaptics et aptitude

1.1. Création des répertoires des sources

Tapez la commande suivante

mkdir /mnt/sources

Pour simplifer la création des répertoires précédents, on peut aussi utiliser une boucle FOR:

for i in PostgreSQL PostGIS Geos Proj;do mkdir -p /mnt/sources/$i;done

1.2. PostgreSQL

1.2.1. Création du super-utilisateur de PostgreSQL

Les programmeurs de PostgreSQL pour des raisons de sécurité (impliquant des failles/fuites de sécurités selon les droits accordés à cet utilisateur sous Linux qui peuvent être dûe à des attaques de requêtes de type "SQL injection" par le réseau ou par une mauvaise utilisation des modules objets chargés dans les bases par de simples utilisateurs etc...) ont imposés que cet utilisateur devait avoir des droits limités sur la machine sur lequel tourne PostgreSQL.Cellà a toutjours été le cas sous des systèmes autres que Windows. Cette règle fut ensuite pris en compte - pour Windows -lors du développement de la 7.5 devel juste avant la sortie de la 8.0.0.

Créons donc cet utilisateur qui a l'accoutumée et pour des raison d'habitude est appelé postgres.

Note

Vous pouvez appeler cet utilisateur comme bon vous semblera. Veuillez alors adapter la suite de la documentation à votre choix.

adduser postgres

qui nous renvoit

Ajout de l'utilisateur « postgres »...
Ajout du nouveau groupe « postgres » (1002).
Ajout du nouvel utilisateur « postgres » (1002) avec le groupe « postgres ».
Création du répertoire personnel « /home/postgres ».
Copie des fichiers depuis « /etc/skel »
Enter new UNIX password:
Retype new UNIX password:
passwd : le mot de passe a été mis à jour avec succès
Modification des informations relatives à l'utilisateur postgres
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
        Nom complet []:
        N° de bureau []:
        Téléphone professionnel []:
        Téléphone personnel []:
        Autre []:
Ces informations sont-elles correctes [o/N] ? o

Dans la suite, je ne propose pas de passer en revue les diverses options de compilation de PostgreSQL mais de retenir celles que j'ai l'habitude d'utiliser.

1.2.2. Pré-requis

Ce qui est bon à savoir avant de commencer à compiler PostgreSQL.

Sur le système, il faut commencer par vérifier la présences des outils suivants notamment dans le cadre d'un environnement de compilation complet

  • make: version supérieure à la 3.7 que l'on peut vérifier en faisant make -v;

  • GCC: compilateur C de GNU;

  • tar utilitaire de décompression pour les sources de PostgreSQL;

  • libreadline bibliothèquequi permet d'avoir accès à l'historique de requête dans le moniteur interactif psql;

  • zlib bibiothèque nécessaire pour la création d'archives lors de la sauvegardes de bases de données en archive tar ou comrpessées par pg_dum ou pg_restore;

  • gettext Le package Gettext est utilisé pour l'internationalisation et la localisation. Les programmes peuvent êtres compilés avec le support de la langue native ('Native Language Support' ou NLS) qui leur permettent d'afficher les messages dans la langue native de l'utilisateur, notamment pour nous le français.

Par exemple sous debian, on pourrait faire

apt-cache search tar

et ainsi de suite pour les autres bibliothèques. Puis il faudrait installer l'ensemble manquant en fonction de ce qu'affiche la recherche par la ligne

apt-get update
apt-get install tar zlib1g zlib1g-dev libreadline5 libreadline5-dev gettext gettext-base

SI l'on souhaite compiler PostgreSQL avec des options spéciales, il est bon d'avoir d'installé

  • OpenSSL: pour chiffrer et sécuriser les connexions entre l'application client (par exemple psql ou pgadmin) et le serveur

  • Tcl/Tk indispensable pour utiliser PgAccess (application d'administration graphique pour PostgreSQL)

1.2.3. Téléchargement et décompression

Téléchargez les sources de PostgreSQL version 8.1.1 à cette URL

ftp://ftp.fr.postgresql.org/source/v8.1.1/postgresql-8.1.1.tar.gz

et copiez ce fichier vers /mnt/sources/PostgreSQL ou plus simplement en faisant

cd /mnt/sources/PostgreSQL
wget ftp://ftp.fr.postgresql.org/source/v8.1.1/postgresql-8.1.1.tar.gz

Pour la décompression, il nous suffira de faire

cd /mnt/sources/PostgreSQL
tar xvzf postgresql-8.1.1.tar.gz

1.2.4. Configuration

Cette section va nous permettre de configurer les sources avant leur compilation, nous allons faire appel à un script qui va également effectuer une vérification des dépendances logicielles. Voici la commande nécessaire pour utiliser ce script :

./configure

La commande suivante nous donnera des informations bien utiles sur les diverses options possibles de compilation

./configure --help
`configure' configures PostgreSQL 8.1.1 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/pgsql]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/pgsql/bin', `/usr/local/pgsql/lib' etc.  You can specify
an installation prefix other than `/usr/local/pgsql' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR           user executables [EPREFIX/bin]
  --sbindir=DIR          system admin executables [EPREFIX/sbin]
  --libexecdir=DIR       program executables [EPREFIX/libexec]
  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
  --libdir=DIR           object code libraries [EPREFIX/lib]
  --includedir=DIR       C header files [PREFIX/include]
  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
  --infodir=DIR          info documentation [PREFIX/info]
  --mandir=DIR           man documentation [PREFIX/man]

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-integer-datetimes  enable 64-bit integer date/time support
  --enable-nls[=LANGUAGES]  enable Native Language Support
  --disable-shared        do not build shared libraries
  --disable-rpath         do not embed shared library search path in executables
  --disable-spinlocks     do not use spinlocks
  --enable-debug          build with debugging symbols (-g)
  --enable-depend         turn on automatic dependency tracking
  --enable-cassert        enable assertion checks (for debugging)
  --enable-thread-safety  make client libraries thread-safe
  --enable-thread-safety-force  force thread-safety in spite of thread test failure
  --disable-largefile     omit support for large files

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)

  --with-docdir=DIR       install the documentation in DIR [PREFIX/doc]
  --without-docdir        do not install the documentation
  --with-includes=DIRS    look for additional header files in DIRS
  --with-libraries=DIRS   look for additional libraries in DIRS
  --with-libs=DIRS        alternative spelling of --with-libraries
  --with-pgport=PORTNUM   change default port number 5432
  --with-tcl              build Tcl modules (PL/Tcl)
  --with-tclconfig=DIR    tclConfig.sh is in DIR
  --with-perl             build Perl modules (PL/Perl)
  --with-python           build Python modules (PL/Python)
  --with-krb5             build with Kerberos 5 support
  --with-krb-srvnam=NAME  name of the default service principal in Kerberos [postgres]
  --with-pam              build with PAM support
  --with-bonjour          build with Bonjour support
  --with-openssl          build with OpenSSL support
  --without-readline      do not use Readline
  --without-zlib          do not use Zlib
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
              headers in a nonstandard directory <include dir>
  CPP         C preprocessor
  LDFLAGS_SL
  DOCBOOKSTYLE
              location of DocBook stylesheets

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to <pgsql-bugs@postgresql.org>.

Le script configure accepte diverses options qui permettent de configurer précisément la façon dont est construit PostgreSQL :

  1. --prefix=PREFIX : Installe tous les fichiers dans le répertoire PREFIX au lieu de /usr/local/pgsql. Les fichiers seront en fait installés dans divers sous-répertoires ; aucun fichier ne sera installé directement dans le répertoire PREFIX ;

  2. --exec-prefix=EXEC-PREFIX : Installe les fichiers exécutables dépendants de l'architecture dans le répertoire EXEC-PREFIX. Dans le cas où il n'est pas précisé, EXEC-PREFIX vaut PREFIX ;

  3. --bindir=DIRECTORY : Indique le répertoire des fichiers exécutables. Par défaut vaut EXEC-PREFIX/bin (soit /usr/local/pgsql/bin par défaut) ;

  4. --datadir=DIRECTORY : Indique le répertoire des fichiers en lecture seule utilisés par PostgreSQL. Par défaut vaut PREFIX/share. Cela n'a rien à voir avec l'emplacement des fichiers de base de données ;

  5. --sysconfdir=DIRECTORY : Répertoire pour les fichiers de configuration, PREFIX/etc par défaut ;

  6. --libdir=DIRECTORY : Emplacement des bibliothèques et des modules dynamiques. Par défaut, EXEC-PREFIX/lib ;

  7. --includedir=DIRECTORY : Répertoire d'installation des fichiers d'en-tête C et C++. Par défaut, PREFIX/include ;

  8. --mandir=DIRECTORY : Les pages de manuel de PostgreSQL seront installées dans ce répertoire. Par défaut, PREFIX/man ;

  9. --with-docdir=DIRECTORY : Les fichiers de documentations, sauf les pages de manuel, seront installées dans ce répertoire. Par défaut, PREFIX/doc ;

  10. --without-docdir : n'installe pas la documentation lors du make install ;

  11. --with-includes=DIRECTORIES : DIRECTORIES est une liste de répertoires séparés par deux-points dans lesquels seront recherchés les fichiers d'include en plus des répertoires standards. Utile si vous avez des bibliothèques (comme GNU Readline) installées dans des répertoires particuliers ;

  12. --with-libraries=DIRECTORIES : DIRECTORIES est une liste de répertoires séparés par deux-points dans lesquels seront recherchés les bibliothèques. Comme pour --with-includes, à n'utiliser que si vous disposez de packages installés dans des emplacements non standards ;

  13. --enable-nls[=LANGUAGES] : Active l'affichage des messages dans d'autres langues que l'anglais. LANGUAGES est une liste des codes à supporter séparés par des espaces. Si vous n'indiquez rien, toutes les traductions sont installées. Nécessite une implémentation de l'API Gettext ;

  14. --with-pgport=NUMBER : Paramètre le numéro de port par défaut du serveur et des clients. Par défaut, vaut 5432. A n'utiliser que si vous voulez lancer plusieurs instances de PostgreSQL sur la même machine ;

  15. --with-perl : Compile le langage PL/Perl coté serveur ;

  16. --with-python : Compile le langage PL/Python côté serveur ;

  17. --with-tcl : Compile le langage PL/Tclcôté serveur ;

  18. --with-tclconfig=DIRECTORY : Chemin contenant les informations de configuration pour l'interfaçage avec Tcl situées dans le fichier tclConfig.sh. A utiliser si vous voulez utiliser une version de Tcl différente de celle installée ;

  19. --with-krb4, --with-krb5 : support de l'authentification Kerberos 4 ou 5 mais pas les deux ;

  20. --with-krb-srvnam=NAME : Nom du service principal de Kerberos ;

  21. --with-openssl : Support pour les connexions SSL (cryptées). Requiert le package OpenSSL ;

  22. --with-pam : Support PAM (Pluggable Authentication Modules) ;

  23. --without-readline : Evite l'utilisation de la bibliothèque Readline ce qui désactive l'historique des commandes et l'édition de la ligne en cours ;

  24. --with-rendezvous : Support Rendezvous (recommandé sur Mac OS X) ;

  25. --disable-spinlocks : Permet de compiler PostgreSQL même si aucun support pour le spinlock CPU de la plateforme. Résulte en des performances médiocres ;

  26. --enable-thread-safety : Rend les bibliothèques client thread-safe ;

  27. --without-zlib : Evite l'utilisation de la bibliothèque Zlib. Désactive les archives compressées de pg_dump (à n'utiliser que si vous ne disposez pas de zlib) ;

  28. --enable-debug : Inclut les informations de débuggage dans les binaires et les bilbiothèques, uniquement pour le développement ;

  29. --enable-cassert : Active les vérifications d'assertions, uniquement pour le développement ;

  30. --enable-depend ; Active la surveillance automatique des dépendances. Les makefiles résultants forceront la recréation des binaires si un des headers a changé. Ne fonctionne que sur GCC, pour le développement ;

  31. Comme pour les scripts configure classiques, vous pouvez paramétrer le compilateur via la variable d'environnement CC (par défaut, GCC est utilisé), les drapeaux du compilateur via CFLAGS, vous pouvez passer ces variables sur la ligne de commande (./configure CC=/opt/bin/gcc CFLAGS=’-O2 -pipe’).

Nous essayerons de compiler PostgreSQL avec l'options suivante

  • --enable-nls: permet d'avoir le support de langue adéquate nls (Native Language Support), notamment le français.

1.2.5. Compilation et installation

Si la ligne de configuration s'est passé sans problème alors, on peut passer à la suite, la compilation

make

Il ne reste plus qu'à installer nos binaires en faisant

make install

Nous rappelerons au passage que si l'option --prefix dans la ligne de ./configure n'a pas été déteminé par défaut notre distribution sera alors installé par défaut dans le répertoire /usr/local/pgsql contenant les sous répertoire bin, include, lib, doc, share

1.2.6. Ajout des outils/supports contributifs pour PostgreSQL

C'est dans le répertoire contrib des sources de PostgreSQL que se trouvent les supports (une bonne partie) offrant plus de fonctionnalités type. Pour pouvoir les ajouter à notre distribution, il nous suffira de faire:

cd /mnt/sources/PostgreSQL/postgresql-8.1.1/contrib
make
make install

1.2.7. Commandes post-installation

Afin de pouvoir accéder librement à nos utilitaires de PostgreSQL et comme ce dernier dispose de variable d'environnement utiles - que nous verrons en temps utile - comme PGDATA, qui précise le chemin d'accès vers notre groupe de bases de données, nous allons renseigner ces informations en modifiant le fichier /etc/profile :

PATH=/usr/local/pgsql/bin:$PATH
PGDATA="/mnt/pgdata"
export PATH PGDATA

Au lieu de préciser ici la modification à la variable d'environnement LD_LIBRARY_PATH lui demandant de pointer vers le répertoire des librairies de PostgreSQL (/usr/local/pgsql/lib), ouvrons le fichier /etc/ld.so.conf et ajoutons la ligne suivante

/usr/local/pgsql/lib

modification que l'on peut aussi obtenir en faisant

echo /usr/local/pgsql/lib >> /etc/ld.so.conf

Rechargeons maintenant les librairies dans le "cache" du système de manière à pouvoir les prendre en comptes en faisant

ldconfig

Si nous sommes toujours dans le même termina ou un autre, rechargeons la variable d'environnement PATH du système en faisant

source /etc/profile

Vérifions que tout semble avoir bien été installé en faisant par exemple

if [ ! -z $(which pg_config) ]; then for i in '--version' '--configure' '--includedir';do \
pg_config ${i};done;else echo "PostgreSQL est introuvable";fi

qui devrait renvoyer

PostgreSQL 8.1.1
'-with-openssl' '--enable-nls'
/usr/local/pgsql/include

Personnellement, pour avoir un PATH et un PGDATA accessible par défaut pour tous les utilsiateurs, je mets aussi celà dans le fichier /etc/bash.bashrc

# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
export PATH="${PATH}:/usr/local/pgsql/bin"
export PGDATA="/mnt/pgdata"
[...]

1.2.8. Jeu de caractères Europe occidentales, LATIN9

Pour faire l'initialisation qui sera l'objectif de la prochaine section, il nous faut mettre à jour nos locales. Commencez par exécuter la commande suivante en tant que root locale -a et voyez si elle vous renvoit au moins les lignes suivantes

[...]
fr_FR
fr_FR@euro
fr_FR.iso88591
fr_FR.iso885915@euro
[...]

Note

Pour les jeux d'encodage supportés par PostgreSQL 8.1.1, merci de consultez le lien suivant bien utile

http://traduc.postgresqlfr.org/pgsql-8.1.1-fr/multibyte.html qui explique bien les jeux de caractères supportés par le serveur

Si c'est la case vous pouvez passer directement à la section suivante. Sinon il vous faut le jeu de caractères propres à la France, le LATIN9. A cette fin, tapez donc la commande suivante

dpkg-reconfigure locales

Dans la liste apparaissant sur fond bleu, faites défiler la liste - en utilisant les flèches de votre clavier - et sélectionnez

  1. [*] fr_FR ISO-8859-1

  2. [*] fr_FR.UTF-8 UTF-8

  3. [*] fr_FR@euro ISO-8859-15

Note

Pour sélectionner ces options, utilisez la touche [BARRE ESPACE] de votre clavier

Pour sélectionner, le bouton situé en bas appuyez sur la touche [TABULATION] de votre clavier de manière à ce que ce dernier apparaisse sur un fond rouge - voir figure - et appuyez sur [ENTER]

Figure 1.1. Configuration des locales: choix des jeux régionaux possibles

Configuration des locales: choix des jeux régionaux possibles

Il ne reste pus qu'à préciser le jeu de paramètres régionaux apparaissant sur la nouvelle fenêtre, à savoir fr_FR@euro. Pour vérifier que tout s'est bien passé, il suffit de faire cat /etc/environment qui doit renvoyer au moins LANG=fr_FR@euro

Figure 1.2. Configuration de la locale: choix en fr_FR@euro

Configuration de la locale: choix en fr_FR@euro

1.2.9. Initialisation du serveur

L'initialisation - au sens du système de fichiers - consiste à la création du (premier) groupe de vos futures bases de données par défaut - faisant parti d'un cluster au sens des bases de données -. Cela va consister "à remplir" le répertoire correspondant à la variable d'environnement PGDATA de PostgreSQL qui n'existe pas encore. Elle répond aux besoins suivants. Quel encodage choisir par défaut? Quel doit être le mode de connexion par défaut? etc...Mais le reste des configurations des paramètrages du serveur peut par la suite être reprise dans les fichiers .conf de PostgreSQL..

C'est l'utilitaire initdb qui précise et fait tout celà. Pour obtenir un résumé succint des possibilités offertes par cet utilitaire, il suffit de saisir

$initdb --help
initdb initialise un groupe de bases de données PostgreSQL.

Usage :
  initdb [OPTION]... [REP_DONNEES]

Options :
 [-D, --pgdata=]REP_DONNEES emplacement de ce groupe de bases de données
  -E, --encoding=CODAGE     initialise le codage par défaut des nouvelles
                            bases de données
  --locale=LOCALE           initialise le groupe de bases de données avec la
                            locale donnée
  --lc-collate, --lc-ctype, --lc-messages=LOCALE
  --lc-monetary, --lc-numeric, --lc-time=LOCALE
                            initialise le groupe de bases de données avec la
                            locale précisée dans la catégorie respective
                            (prise, par défaut, dans l'environnement)
  --no-locale               équivalent à --locale=C
  -A, --auth=MÉTHODE        méthode d'authentification par défaut pour les connexions locales
  -U, --username=NOM        nom du superutilisateur de la base de données
  -W, --pwprompt            demande un mot de passe pour le nouveau
                            superutilisateur
  --pwfile=nomfichier       lit le mot de passe du nouveau superutilisateur
                            à partir d'un fichier
  -?, --help                affiche cette aide puis quitte
  -V, --version             affiche la version puis quitte

Options moins utilisées :
  -d, --debug               génère un grand nombre de traces de déboguage
  -s, --show                affiche les paramètrages internes
  -L DIRECTORY              indique où trouver les fichiers d'entrées
  -n, --noclean             ne nettoie pas après des erreurs

Si le répertoire des données n'est pas spécifié, la variable d'environnement
PGDATA est utilisée.

Créeons maintenant notre répertorie de groupe de bases de données - qui correspond à la variable PGDATA - en faisant

mkdir /mnt/pgdata
chown -R postgres:postgres /mnt/pgdata

Connectons-nous en tant qu'utilisateur postgres (=super-utilisateur de PostgreSQL) depuis le terminal.

su postgres

Vérifions malgré tout que le répertoire des utilitaires de PostgreSQL (/usr/local/pgsql/bin) soient accessibles en les voyant apparaitre dans notre PATH , depuis PGDATA respectivement

env | grep PATH=
env |grep PGDATA

sinon mettons là à jour en faisant

source /etc/profile

Remplissons maintenant notre répertoire de données selon les spécifications suivantes

  • Connexions sans mot de passe (mode trusting) sur la machine en locale à tous les utisateurs créés ultérieurement par le super-utilisateur (option -A trust à passer à initdb);

  • encodage selon les locales supportées par la machine

    Note

    Les locales de la machine peuvent être listées en utilisant la commande locale -a sur la machine

Ces spécifications sont pris en compte par initdb en lui passant les options suivantes

initdb -A trust
Les fichiers appartenant à ce système de bases de données doivent appartenir à l'utilisateur «postgres».
Cet utilisateur doit aussi posséder le processus serveur.

Le groupe de bases de données sera initialisé avec la locale fr_FR@euro.
Le codage de la base de données par défaut a été correctement configuré avec LATIN9.

création du répertoire /mnt/pgdata ... ok
création du répertoire /mnt/pgdata/global... ok
création du répertoire /mnt/pgdata/pg_xlog... ok
création du répertoire /mnt/pgdata/pg_xlog/archive_status... ok
création du répertoire /mnt/pgdata/pg_clog... ok
création du répertoire /mnt/pgdata/pg_subtrans... ok
création du répertoire /mnt/pgdata/pg_twophase... ok
création du répertoire /mnt/pgdata/pg_multixact/members... ok
création du répertoire /mnt/pgdata/pg_multixact/offsets... ok
création du répertoire /mnt/pgdata/base... ok
création du répertoire /mnt/pgdata/base/1... ok
création du répertoire /mnt/pgdata/pg_tblspc... ok
sélection de la valeur par défaut de max_connections... 100
sélection de la valeur par défaut de shared_buffers... 1000
création des fichiers de configuration... ok
création de la base de données template1 dans /mnt/pgdata/base/1... ok
initialisation de pg_authid... ok
activation de la taille illimitée des lignes pour les tables systèmes... ok
initialisation des dépendances... ok
création des vues système... ok
chargement de pg_description... ok
création des conversions... ok
initialisation des privilèges sur les objets intégrés... ok
création du shéma d'informations... ok
lancement du vacuum sur la base de données template1... ok
copie de template1 vers template0... ok
copie de template1 vers postgres... ok

Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant:

    postmaster -D /mnt/pgdata
or
    pg_ctl -D /mnt/pgdata -l journaltrace start

Pour les jeux d'encodage supportés par PostgreSQL 8.1.1, merci de consultez le lien suivant bien utile

http://traduc.postgresqlfr.org/pgsql-8.1.1-fr/multibyte.html qui explique bien les jeux de caractères supportés par le serveur

A savoir, si vous ne souhaitez pas installer PostgreSQL en tant que service mais pouvoir le démarrer/arrêter manuellement, il suffit de faire respectivement

pg_ctl start

ou

pg_ctl stop

1.2.10. Installation de PostgreSQL en tant que service

Le script permettant d'installer PostgreSQL en tant que service se trouve à /mnt/sources/PostgreSQL/postgresql-8.1.1/contrib/start-scripts/linux Par exemple sous Debian, on copiera le script linux vers /etc/init.d/postgresql

cp /mnt/sources/PostgreSQL/postgresql-8.1.1/contrib/start-scripts/linux /etc/init.d/postgresql 

Il est nécessaire de modifier le script de démarrage afin de positionner différentes variables (des commentaires indiquent la zone où il peut être nécessaire d'apporter des modifications). Si vous n'avez rien changé, il n'est pas utile de modifier quoi que ce soit.

Ajoutons les droits nécessaires au fichier

chmod 744 /etc/init.d/postgresql

Ensuite il faut créer les liens symboliques pour que le service soit démarré aux bons niveaux d'exécution. Sous Debian

update-rc.d postgresql defaults

Le serveur est maintenant prêt à être démarré. Pour cela, il suffit d'utiliser le script que l'on vient de mettre en place :

/etc/init.d/postgresql start

A titre d'information voici le contenu de mon fichier /etc/init.d/postgresql

#! /bin/sh

# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS

# This is an example of a start/stop script for SysV-style init, such
# as is used on Linux systems.  You should edit some of the variables
# and maybe the 'echo' commands.
#
# Place this file at /etc/init.d/postgresql (or
# /etc/rc.d/init.d/postgresql) and make symlinks to
#   /etc/rc.d/rc0.d/K02postgresql
#   /etc/rc.d/rc1.d/K02postgresql
#   /etc/rc.d/rc2.d/K02postgresql
#   /etc/rc.d/rc3.d/S98postgresql
#   /etc/rc.d/rc4.d/S98postgresql
#   /etc/rc.d/rc5.d/S98postgresql
# Or, if you have chkconfig, simply:
# chkconfig --add postgresql
#
# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.

# Original author:  Ryan Kirkpatrick <pgsql@rkirkpat.net>

# $PostgreSQL: pgsql/contrib/start-scripts/linux,v 1.7 2004/10/01 18:30:21 tgl Exp $

## EDIT FROM HERE

# Installation prefix
prefix=/usr/local/pgsql

# Data directory
PGDATA="/mnt/pgdata"

# Who to run the postmaster as, usually "postgres".  (NOT "root")
PGUSER=postgres

# Where to keep a log file
#PGLOG="/var/log/pgsql"

## STOP EDITING HERE

# Check for echo -n vs echo \c
if echo '\c' | grep -s c >/dev/null 2>&1 ; then
    ECHO_N="echo -n"
    ECHO_C=""
else
    ECHO_N="echo"
    ECHO_C='\c'
fi

# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# What to use to start up the postmaster (we do NOT use pg_ctl for this,
# as it adds no value and can cause the postmaster to misrecognize a stale
# lock file)
DAEMON="$prefix/bin/postmaster"

# What to use to shut down the postmaster
PGCTL="$prefix/bin/pg_ctl"

set -e

# Only start if we can find the postmaster.
test -x $DAEMON || exit 0

# Parse command line parameters.
case $1 in
  start)
	$ECHO_N "Starting PostgreSQL: "$ECHO_C
	su - $PGUSER -c "$DAEMON -D '$PGDATA' &"  2>&1
	echo "ok"
	;;
  stop)
	echo -n "Stopping PostgreSQL: "
	su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
	echo "ok"
	;;
  restart)
	echo -n "Restarting PostgreSQL: "
	su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
	su - $PGUSER -c "$DAEMON -D '$PGDATA' &"  2>&1
	echo "ok"
	;;
  reload)
        echo -n "Reload PostgreSQL: "
        su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
        echo "ok"
        ;;
  status)
	su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
	;;
  *)
	# Print help
	echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
	exit 1
	;;
esac

exit 0

Ce qu'il est possible de faire afin d'avoir une trace de chaque fichier de log - lors du redémarrage de la machine - c'est de spécifier un répertoire de log où seront conservés les fichiers de log. Pour ma part, j'ai opté pour là création d'un sous-répertoire dans $PGDATA = /mnt/pgdata

su postgres
mkdir $PGDATA/pg_log

J'ai ensuite modifié mon fichier /mnt/pgdata/postgresql.conf de la ligne 203 à 240 dont voici un extrait

#---------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#---------------------------------------------------------------------------

# - Where to Log -

#log_destination = 'stderr'		# Valid values are combinations of 
					# stderr, syslog and eventlog, 
					# depending on platform.

# This is used when logging to stderr:
redirect_stderr = on			# Enable capturing of stderr into log 
					# files

# These are only used if redirect_stderr is on:
log_directory = 'pg_log'		# Directory where log files are written
					# Can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # Log file name pattern.
					# Can include strftime() escapes
log_truncate_on_rotation = off # If on, any existing log file of the same 
					# name as the new log file will be
					# truncated rather than appended to. But
					# such truncation only occurs on
					# time-driven rotation, not on restarts
					# or size-driven rotation. Default is
					# off, meaning append to existing files
					# in all cases.
log_rotation_age = 1440		# Automatic rotation of logfiles will 
					# happen after so many minutes.  0 to 
					# disable.
log_rotation_size = 10240		# Automatic rotation of logfiles will 
					# happen after so many kilobytes of log
					# output.  0 to disable.

# These are relevant when logging to syslog:
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'

Ce qui me permet à chaque redémarrage de ma machine ou du service - donc du serveur - d'avoir un fichier nommé en postgresql-(date)_(heure).log. Par exemple, pour le fichier postgresql-2006-03-14_152348 stocké dans le répertoire /mnt/pgdata/pg_log, je sais que le serveur a redémarré lors de la journée du 14 Mars 2006 à 15:23:48.

1.2.11. Optionnel: Pouvoir créer tous les paquets .deb nécessaires sous Debian

Il y aura surement une manipulation à faire dans le fichier qui répertorie les mirroirs pour les deb de debian /etc/apt/sources.list

Rendez vous ensuite dans le répertoire de root

cd /root/

Faites ensuite

#
# Mise à jour 
#
apt-get update
#
# Recherche des .deb sur la 8.1
#
apt-cache search postgresql | grep 8.1
[....]
postgresql-8.1 - object-relational SQL database, version 8.1 server
[....]
postgresql-server-dev-8.1 - development files for PostgreSQL 8.1 server-side programming
#
# Compilation pour la 8.1 à partir des sources qui seront téléchargées et les .deb construites
#
apt-get -b source postgresql-8.1
#
# Liste des différentes deb construites
#
ls 
#
# On ontiendra des paquets parmi les suivants
#libecpg5_8.1.0-3_i386.deb         postgresql-client-8.1_8.1.0-3_i386.deb
#libecpg-compat2_8.1.0-3_i386.deb  postgresql-contrib-8.1_8.1.0-3_i386.deb
#libecpg-dev_8.1.0-3_i386.deb      postgresql-doc-8.1_8.1.0-3_all.deb
#libpgtypes2_8.1.0-3_i386.deb      postgresql-plperl-8.1_8.1.0-3_i386.deb
#libpq4_8.1.0-3_i386.deb           postgresql-plpython-8.1_8.1.0-3_i386.deb
#libpq-dev_8.1.0-3_i386.deb        postgresql-pltcl-8.1_8.1.0-3_i386.deb
#postgresql-8.1_8.1.0-3_i386.deb   postgresql-server-dev-8.1_8.1.0-3_i386.deb
#
# Voir le contenu de la .deb principale
#
dpkg -c postgresql-server-dev-8.1_8.1.0-3_i386.deb | less 
#
# Installation
#
dpkg -i postgresql-server-dev-8.1_8.1.0-3_i386.deb

1.3. Geos et Proj

Nous allons maintenant nous intéresser à l'installation de Geos et de Proj

1.3.1. Téléchargement

Téléchargez les sources respectives de Geos et de Proj grâce à leurs URL respectives

http://geos.refractions.net/geos-2.2.1.tar.bz2

ftp://ftp.remotesensing.org/proj/proj-4.4.9.tar.gz

et copiez-les respectivement vers /mnt/sources/Geos et/mnt/sources/Proj

1.3.2. Compilations et Installations

Depuis votre terminal, tapez les commandes suivantes. Pour la compilation de Geos, un café ne serait pas de trop!!!

cd /mnt/sources/Geos

tar xvjf geos-2.2.1.tar.bz2

cd geos-2.2.1

./configure && make && make install

cd /mnt/sources/Proj

tar xvzf proj-4.4.9.tar.gz

cd proj-4.4.9

./configure && make && make install

Normalement le répertoire /usr/local/bin doit déjà être accessible par votre variable PATH. Voyez celà en l'affichant

 env | grep PATH=

qui devrait renvoyer quelque chose comme

PATH=...;/usr/local/bin

Si ce n'est pas le cas, veuillez alors ouvrir - comme pour PostgreSQL - le fichier /etc/profile et écrire

PATH=.../usr/local/bin:$PATH

Mettons à jour notre variable en faisant

source /etc/profile

Testons maintenant si Geos et Proj ont été installé convenablement on testant respectivement les commandes suivantes

geos-config --version

renvoyant

2.2.1

pour Proj, la commande suivante

proj

devant renvoyer

Rel. 4.4.9, 29 Oct 2004
usage: proj [ -beEfiIlormsStTvVwW [args] ] [ +opts[=arg] ] [ files ]

Il faut aussi que les libraires de Geos et de Proj soient chargés. Pour celà

echo /usr/local/lib >> /etc/ld.so.conf

puis

ldconfig

1.4. PostGIS

Nous allons maintenant nous intéresser à l'installation de PostGIS

1.4.1. Téléchargement

Téléchargez les sources de PostGIS version 1.1.2 à cette URL

http://postgis.refractions.net/download/postgis-1.1.2.tar.gz

et copiez ce fichier vers /mnt/sources/PostGIS

1.4.2. Compilation et Installation

Depuis votre terminal, commençons par décompresser les sources:

cd /mnt/sources/PostGIS

tar xvzf postgis-1.1.2.tar.gz

Puis depuis votre terminal, faites

cd /mnt/sources/PostGIS/postgis-1.1.2

./configure 

Il ne reste plus qu'à compiler et installer PostGIS:

cd ~/sources/PostGIS/postgis-1.1.2

make && make install

Nous verrons l'utilisation de PostGIS en temps utile.

1.4.3. Tests de régression

A partir de la version 1.1.2 de PostGIS, les tests de régression ont fortement été améliorés et mieux maintenues. Les tests de régression lorsqu'une version vient tout juste de sortir ou une prochaine version est sur le point de sortir permettent de vérifier que PostGIS fournira le minima vital attendu pour fonctionner avant toute utilisation ultérieure. Celà permet également de tester les futures nouveautés de la version car qui dit nouvelle version dit aussi nouveaux tests éventuels. En date de la version 1.1.2, 12 tests de régression sont fournis.

Note

Concernant les tests de régression, il est également possible de les effectuer avant d'installer PostGIS ("make install") mais la compilation ("make") est au moins nécessaire.

Rendez-vous dans le répertoire des sources de PostGIS. Et exécutez les commandes suivantes

cd /mnt/sources/PostGIS/postgis-POSTGIS_VERSION@
export PGUSER=postgres
make -C regress

Note

La commande export PGUSER=postgres nous évitera de déclarer l'utilisateur root en tant que super-utilisateur de PostgreSQL - ce qui pourrait conduire à la mise en danger du serveur et ce qui est vivement déconseillé.

De la dernière commande ci-dessus résultera l'affichage suivant

make: entrant dans le répertoire « /mnt/src/PostGIS/postgis-1.1.2/regress »
Creating spatial db postgis_reg

 PostgreSQL 8.1.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.0.3 20051201 (prerelease) (Debian 4.0.2-5)
 Postgis 1.1.2 - 2006-04-21 00:13:42
   GEOS: 2.2.1-CAPI-1.0.1
   PROJ: Rel. 4.4.9, 29 Oct 2004

Running tests

           regress: Ok.
     regress_index: Ok.
    lwgeom_regress: Ok.
       regress_lrs: Ok.
       removepoint: Ok.
          setpoint: Ok.
          simplify: Ok.
        snaptogrid: Ok.
            affine: Ok.
       regress_ogc: Ok.
    regress_bdpoly: Ok.
      regress_proj: Ok.

Run tests: 12
Successful: 12
Failed: 0
make: quittant le répertoire « /mnt/src/PostGIS/postgis-1.1.2/regress »

Tout est donc OK! Voilà vous disposez d'un serveur complet et digne de ce nom.