PostgreSQL 8.3.x sous Mac OS X 10.5

Comme je suis développeur Web, et que MAMP ne me convient pas tout à fait, je suis parti pour une installation manuel des services dont j’ai besoin. Je commence donc par l’installation de PostgreSQL, base de données relationnelles avec laquelle je travaille principalement.

Note, le 18.11.2008 : ce billet décrit comment installer manuellement une version de PostgreSQL sur Mac OS X. S’il est intéressant de savoir compiler PostgreSQL manuellement, il faut admettre qu’il est bien plus simple d’utiliser MacPorts. Si votre seul but est d’installer PostgreSQL, consulter directement ce billet puis celui ci.

Commencez par installer Xcode fourni sur le DVD d’installation de Mac OS X si ce n’est pas déjà fait.

remarque : si vous choisissez de suivre les manipulations suivantes, vous l’effectuez sous votre responsabilité, une mauvaise manipulation pouvant entrainer la perte de données ou l’instabilité de votre système. Pensez à sauvegarder vos données avant toutes manipulations.
Téléchargez les sources de PostgreSQL et de Readline :

PostgreSQL : http://www.postgresql.org/ftp/source/ (testé avec PostgreSQL 8.3.3)
ReadLine : ftp://ftp.gnu.org/gnu/readline/ (testé avec realine 5.2)

Ouvrez le terminal,

Choisissez un répertoire de travail ( « /Users/fabien/Sources/ » pour l’exemple)
Copiez les sources téléchargées dans les répertoires créés pour chaque application ou librairie

cd /Users/fabien/Sources
mkdir postgresql
mkdir readline
mv /Users/fabien/telechargements/postgresql-8.3.3.tar.gz postgresql
mv /Users/fabien/telechargements/readline-5.2.tar.gz readline

Compilation de la librairie Readline

cd readline
tar -xzvf readline-5.2.tar.gz
cd readline-5.2
./configure
make static
sudo make install-static

Readline est maintenant installée dans « /usr/local/lib »

Passons à la compilation de PostgreSQL. Placez vous dans le répertoire des sources de PostgreSQL.

cd /Users/fabien/Sources/postgresql
tar -xzvf postgresql-8.3.3.tar.gz
cd postgresql-8.3.3
./configure
make
sudo make install

PostgreSQL est installé dans « /usr/local/pgsql ». Pour que PostgreSQL puisse fonctionner, il est nécessaire d’initialiser PostgreSQL.

Commencez par ajouter un utilisateur et un groupe « _postgres ». Sous Mac OS X, les commandes « useradd » et « groupadd » n’existent pas, il faut utiliser la commande « dscl« .

Nous allons utiliser un ID de groupe et d’utilisateur valué à 100. Vérifions qu’ils ne sont pas déjà utilisés.

Listez les IDs de groupes :

sudo dscl . -list /Groups PrimaryGroupID | cut -c 32-34 | sort
sudo dscl . -list /Groups PrimaryGroupID | cut -c 32-34 | grep "100"

Dans mon cas, l’ID 100 pour le groupe est bien libre.

Listez les IDs d’utilisateurs :

sudo dscl . -list /Users UniqueID | cut -c 20-22 | sort
sudo dscl . -list /Users UniqueID | cut -c 20-22 | grep "100"

L’ID 100 pour l’utilisateur est aussi libre.

Passons à la création du groupe et de l’utilisateur :

sudo dscl . -create /Groups/_postgres
sudo dscl . -create /Groups/_postgres PrimaryGroupID 100
sudo dscl . -append /Groups/_postgres RecordName postgres

sudo dscl . -create /Users/_postgres
sudo dscl . -create /Users/_postgres UniqueID 100
sudo dscl . -create /Users/_postgres PrimaryGroupID 100
sudo dscl . -create /Users/_postgres UserShell /bin/bash
sudo dscl . -create /Users/_postgres RealName "PostgreSQL Server"
sudo dscl . -create /Users/_postgres NFSHomeDirectory /usr/local/pgsql
sudo dscl . -append /Users/_postgres RecordName postgres

Nous avons utilisé « _postgres » comme d’utilisateur, Léopard utilise le « _ » comme préfixe pour le nom des démons.

Vérifiez que les informations concernant l’utilisateur « _postgres » sont correctes :

sudo dscl . -read /Users/_postgres

Initialisez le server de base de données :

sudo mkdir /usr/local/pgsql/data
sudo chown postgres:postgres /usr/local/pgsql/data

Créer les variables d’environnement pour l’utilisateur « _postgres » :

sudo nano /usr/local/pgsql/.bash_profile

Placez les lignes suivantes dans le fichier « .bash_profile » :

PATH=$PATH:/usr/local/pgsql/bin
export PATH
sudo chown postgres:postgres /usr/local/pgsql/.bash_profile

Se loger en tant qu’utilisateur « _postgres », initialisez le serveur :

sudo su - postgres
initdb -D /usr/local/pgsql/data

Démarrer le serveur « postgresql » :

pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile start

Testez le serveur en ligne de commande :

psql postgres

postgres=# \l
         List of databases
   Name    |   Owner   | Encoding
-----------+-----------+-----------
 postgres  | _postgres | SQL_ASCII
 template0 | _postgres | SQL_ASCII
 template1 | _postgres | SQL_ASCII
(3 rows)

postgres=# \q

Vous pouvez aussi tester le fonctionnement du serveur en utilisant le client graphique « pgadmin III ».
Téléchargez l’application à l’adresse suivante : http://www.pgadmin.org/download/macosx.php

Une fois connecté avec l’utilisateur « _postgres » sur l’hôte « localhost », voici en exemple les informations du serveur :

Voilà, l’installation de PostgreSQL sur Mac OS X est terminée ou presque. En effet, je n’ai pas abordé le script de démarrage et d’arrêt du démon (thème que j’espère abordé un peu plus tard), mais cela n’empêche pas d’utiliser le serveur.

sudo su - postgres
// Pour démarrer le serveur :
pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile start
// Pour arrêter le serveur :
pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile stop

Pour le démarrage automatique du serveur, vous pouvez quand même jeter un oeil dans le répertoire « /contrib/start-scripts/osx/ » des sources de « postgresql ».

Ce billet est le premier billet d’une série où j’essaierai d’expliquer l’installation à partir des sources de :

  • MySQL 5.0.x sous Mac OS X
  • Apache 2.2.x sous Max OS X
  • PHP 5 (ou 6) sous Mac OS X

remarque : si comme moi vous n’utilisez pas le login automatique de Mac OS X, vous devez voir dans la liste des utilisateurs l’utilisateur « PostgreSQL Server ».

Pour le cacher, voici la commande :

// Pour cacher le compte "_postgres" :
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add _postgres
// Pour supprimer tous les comptes cachés :
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add

5 réponse à PostgreSQL 8.3.x sous Mac OS X 10.5

  1. le mai 3, 2016 à 9:23 , Éric dit:

    Excellent tutoriel. Merci pour ce partage

  2. le décembre 28, 2012 à 7:21 , Fabien dit:

    Le tuto date un peu maintenant. Il se peut qu’il y ait des choses à revoir pour OS X récent, avec PostgreSQL 9.x.

  3. le décembre 25, 2012 à 12:38 , Mehdi dit:

    Merci pour le tuto.
    Par contre il me demande un pwd quand le me connecte avec le user postgres. A aucun moment j’ai défini un pwd, en revanche après 3 essais il m’a qd même positionner sur ~postgres.

  4. le décembre 13, 2011 à 1:24 , MarOnii dit:

    Merci pour l’explication détaillée

    Par contre je croie qu’il y a une erreurs dans le code de :

     » Initialisez le server de base de données  »
    la commande chow ne passe pas j’ai donc remplacer par chown je pense que c’est juste un erreur de frappe.

    Sinon encore merci cela ma été tres utile.

    • le décembre 14, 2011 à 8:58 , Fabien dit:

      Merci, c’est exact, la typo est corrigée.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *