Semblable à mySQL, postgreSQL est très célèbre et riche en fonctionnalités base de données libre et open source .
Plus tôt, nous avons discuté de plusieurs installations, notamment l'installation de la pile LAMP, l'installation d'Apache2 à partir de la source, l'installation de PHP5 à partir de la source et l'installation de mySQL.
Dans cet article, voyons comment installer la base de données postgreSQL sur Linux à partir du code source.
Étape 1 :Télécharger le code source postgreSQL
Depuis le site de téléchargement de postgreSQL, choisissez le site miroir qui se trouve dans votre pays.
# wget http://wwwmaster.postgresql.org/redir/198/f/source/v8.3.7/postgresql-8.3.7.tar.gz
Étape 2 :Installez postgreSQL
# tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # ./configure checking for sgmlspl... no configure: creating ./config.status config.status: creating GNUmakefile config.status: creating src/Makefile.global config.status: creating src/include/pg_config.h config.status: creating src/interfaces/ecpg/include/ecpg_config.h config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s config.status: linking ./src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c config.status: linking ./src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c config.status: linking ./src/backend/port/dynloader/linux.h to src/include/dynloader.h config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port # make make[3]: Leaving directory `/usr/save/postgresql-8.3.7/contrib/spi' rm -rf ./testtablespace mkdir ./testtablespace make[2]: Leaving directory `/usr/save/postgresql-8.3.7/src/test/regress' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/src' make -C config all make[1]: Entering directory `/usr/save/postgresql-8.3.7/config' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/usr/save/postgresql-8.3.7/config' All of PostgreSQL successfully made. Ready to install. # make install make -C test/regress install make[2]: Entering directory `/usr/save/postgresql-8.3.7/src/test/regress' /bin/sh ../../../config/install-sh -c pg_regress '/usr/local/pgsql/lib/pgxs/src/test/regress/pg_regress' make[2]: Leaving directory `/usr/save/postgresql-8.3.7/src/test/regress' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/src' make -C config install make[1]: Entering directory `/usr/save/postgresql-8.3.7/config' mkdir -p -- /usr/local/pgsql/lib/pgxs/config /bin/sh ../config/install-sh -c -m 755 ./install-sh '/usr/local/pgsql/lib/pgxs/config/install-sh' /bin/sh ../config/install-sh -c -m 755 ./mkinstalldirs '/usr/local/pgsql/lib/pgxs/config/mkinstalldirs' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/config' PostgreSQL installation complete.
Options PostgreSQL ./configure
Voici différentes options qui peuvent être transmises au ./configure :
- –prefix=PREFIX installe des fichiers indépendants de l'architecture dans PREFIX. L'emplacement d'installation par défaut est /usr/local/pgsql
- –enable-integer-datetimes active la prise en charge de la date/heure entière 64 bits
- –enable-nls[=LANGUAGES] activer la prise en charge de la langue maternelle
- –disable-shared ne crée pas de bibliothèques partagées
- –disable-rpath ne pas intégrer le chemin de recherche de la bibliothèque partagée dans les exécutables
- –disable-spinlocks n'utilise pas de verrous tournants
- –enable-debug construit avec des symboles de débogage (-g)
- –enable-profiling construit avec le profilage activé
- –enable-dtrace construit avec la prise en charge de DTrace
- –enable-depend activer le suivi automatique des dépendances
- –enable-cassert activer les vérifications d'assertion (pour le débogage)
- –enable-thread-safety rend les bibliothèques clientes thread-safe
- –enable-thread-safety-force force la sécurité des threads malgré l'échec du test de thread
- –disable-largefile omettre la prise en charge des fichiers volumineux
- –with-docdir=DIR installer la documentation dans DIR [PREFIX/doc]
- –without-docdir ne pas installer la documentation
- –with-includes=DIRS recherche des fichiers d'en-tête supplémentaires dans DIRS
- –with-libraries=DIRS recherche des bibliothèques supplémentaires dans DIRS
- –with-libs=DIRS orthographe alternative de –with-libraries
- –with-pgport=PORTNUM modifier le numéro de port par défaut [5432]
- –with-tcl créer des modules Tcl (PL/Tcl)
- –with-tclconfig=DIR tclConfig.sh est dans DIR
- –with-perl construit des modules Perl (PL/Perl)
- –with-python construit des modules Python (PL/Python)
- –with-gssapi construit avec la prise en charge de GSSAPI
- –with-krb5 construit avec la prise en charge de Kerberos 5
- –with-krb-srvnam=NAME nom principal de service par défaut dans Kerberos [postgres]
- –with-pam construit avec le support PAM
- –with-ldap construit avec le support LDAP
- –with-bonjour créer avec l'assistance Bonjour
- –with-openssl construit avec la prise en charge d'OpenSSL
- –without-readline ne pas utiliser GNU Readline ni BSD Libedit pour l'édition
- –with-libedit-preferred préfère BSD Libedit à GNU Readline
- –with-ossp-uuid utilise la bibliothèque UUID OSSP lors de la création de contrib/uuid-ossp
- –with-libxml construit avec le support XML
- –with-libxslt utilise le support XSLT lors de la construction de contrib/xml2
- –with-system-tzdata=DIR utilise les données de fuseau horaire du système dans DIR
- –without-zlib ne pas utiliser Zlib
- –with-gnu-ld suppose que le compilateur C utilise GNU ld [default=no]
Problème d'installation de PostgreSQL 1 :
Vous pouvez rencontrer le message d'erreur suivant lors de l'exécution de ./configure lors de l'installation de postgreSQL.
# ./configure checking for -lreadline... no checking for -ledit... no configure: error: readline library not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.
Solution d'installation de PostgreSQL 1 :
Installez readline-devel et libtermcap-devel pour résoudre le problème ci-dessus.
# rpm -ivh libtermcap-devel-2.0.8-46.1.i386.rpm readline-devel-5.1-1.1.i386.rpm warning: libtermcap-devel-2.0.8-46.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 Preparing... ########################################### [100%] 1:libtermcap-devel ########################################### [ 50%] 2:readline-devel ########################################### [100%]
Étape 3 :Vérifiez la structure du répertoire postgreSQL
Après l'installation, assurez-vous que les répertoires bin, doc, include, lib, man et share sont créés dans le répertoire par défaut /usr/local/pgsql comme indiqué ci-dessous.
# ls -l /usr/local/pgsql/ total 24 drwxr-xr-x 2 root root 4096 Apr 8 23:25 bin drwxr-xr-x 3 root root 4096 Apr 8 23:25 doc drwxr-xr-x 6 root root 4096 Apr 8 23:25 include drwxr-xr-x 3 root root 4096 Apr 8 23:25 lib drwxr-xr-x 4 root root 4096 Apr 8 23:25 man drwxr-xr-x 5 root root 4096 Apr 8 23:25 share
Étape 4 :Créer un compte utilisateur postgreSQL
# adduser postgres # passwd postgres Changing password for user postgres. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
Étape 5 :Créer un répertoire de données postgreSQL
Créez le répertoire de données postgres et définissez l'utilisateur postgres comme propriétaire.
# mkdir /usr/local/pgsql/data # chown postgres:postgres /usr/local/pgsql/data # ls -ld /usr/local/pgsql/data drwxr-xr-x 2 postgres postgres 4096 Apr 8 23:26 /usr/local/pgsql/data
Étape 6 :Initialiser le répertoire de données postgreSQL
Avant de pouvoir commencer à créer une base de données postgreSQL, le répertoire de données vide créé à l'étape ci-dessus doit être initialisé à l'aide de la commande initdb comme indiqué ci-dessous.
# su - postgres # /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/ The files belonging to this database system will be owned by user postgres This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. The default database encoding has accordingly been set to UTF8. The default text search configuration will be set to "english". fixing permissions on existing directory /usr/local/pgsql/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers/max_fsm_pages ... 32MB/204800 creating configuration files ... ok creating template1 database in /usr/local/pgsql/data/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data or /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
Étape 7 :Valider le répertoire de données postgreSQL
Assurez-vous que tous les fichiers de configuration de la base de données postgres (par exemple, postgresql.conf) sont créés dans le répertoire de données, comme indiqué ci-dessous.
$ ls -l /usr/local/pgsql/data total 64 drwx------ 5 postgres postgres 4096 Apr 8 23:29 base drwx------ 2 postgres postgres 4096 Apr 8 23:29 global drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_clog -rw------- 1 postgres postgres 3429 Apr 8 23:29 pg_hba.conf -rw------- 1 postgres postgres 1460 Apr 8 23:29 pg_ident.conf drwx------ 4 postgres postgres 4096 Apr 8 23:29 pg_multixact drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_subtrans drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_tblspc drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_twophase -rw------- 1 postgres postgres 4 Apr 8 23:29 PG_VERSION drwx------ 3 postgres postgres 4096 Apr 8 23:29 pg_xlog -rw------- 1 postgres postgres 16592 Apr 8 23:29 postgresql.conf
Étape 8 :Démarrer la base de données postgreSQL
Utilisez la commande postgres postmaster pour démarrer le serveur postgreSQL en arrière-plan, comme indiqué ci-dessous.
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 & [1] 2222 $ cat logfile LOG: database system was shut down at 2009-04-08 23:29:50 PDT LOG: autovacuum launcher started LOG: database system is ready to accept connections
Étape 9 :Créer une base de données postgreSQL et tester l'installation
Créez une base de données de test et connectez-vous à celle-ci pour vous assurer que l'installation a réussi, comme indiqué ci-dessous. Une fois que vous commencez à utiliser la base de données, effectuez fréquemment des sauvegardes comme indiqué dans l'article Comment sauvegarder et restaurer PostgreSQL.
$ /usr/local/pgsql/bin/createdb test $ /usr/local/pgsql/bin/psql test Welcome to psql 8.3.7, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit test=#