retour à la liste des howto linux Page suivante Page précédente Table des matières

305. FAQ Linux-PostgreSQL - Compilation de PostgreSQL

=====================================================

Foire Aux Questions (FAQ) de PostgresSQL V6.0 Spécifique Linux A LIRE EN PARALLE AVEC LA FAQ NORMALE

=====================================================

Dernière mise à jour: Wed Jan 29 20:16:00 GMT 1997

Gestionnaire actuel: Andrew C.R. Martin ( martin@biochem.ucl.ac.uk)

Auteur original: Andrew C.R. Martin ( martin@biochem.ucl.ac.uk)

305.1 Quelles modifications dois-je apporter à src/Makefile.global ou src/Makefile.custom?

Ces modifications sont réalisées plus facilement en exécutant le script d'adaptation dans le répertoire src qui créera un fichier Makefile.custom pour vous.

Si vous le faites par vous-même, vous *devez* renseigner la variable suivante : PORTNAME= linux

Il vous faudra aussi modifier celle-ci pour refléter votre propre installation: POSTGRESDIR

Si vous validez l'option USE_TCL option, vous devrez renseigner celles-ci : TCL_INCDIR= TCL_LIBDIR= TCL_LIB= TK_INCDIR= TK_LIBDIR= TK_LIB= X11_INCDIR= X11_LIBDIR= X11_LIB=

Sur mon système Slackware3.0, ces données sont : TCL_INCDIR= /usr/include/tcl TCL_LIBDIR= /usr/lib TCL_LIB= -ltcl TK_INCDIR= /usr/include/tcl TK_LIBDIR= /usr/lib TK_LIB= -ltk X11_INCDIR= /usr/include/X11 X11_LIBDIR= /usr/X386/lib X11_LIB= -lX11

Vous pouvez aussi effectuer d'autres modifications dont vous avez besoin, ceci étant documenté dans les fichiers the INSTALL file and in Makefile.global

305.2 Pourquoi ai-je des problèmes avec "libreadline" manquant?

Les systèmes Linux ne sont généralement pas livrés avec la bibliothèque GNU readline installée. Soit vous vous assurez que vous n'avez pas activé les options readline dans src/Makefile.global ou src/Makefile.custom soit vous installez la bibliothèque GNU readline.

Notez que Debian Linux (comme FreeBSD) est livré avec readline installé.

ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm

Installez le fichier RPM de la manière habituelle et c'est tout!

Il y a eu des rapports indiquant que des systèmes ont été abîmés suite à l'accès à ces bibliothèques par certains programmes pendant leur mise à jour (ce qui n'est pas tout à fait surprenant). En conséquence, c'est une bonne idée de redémarrer le système avant l'installation de nouvelle bibliothèques et d'avoir le minimum de choses en fonction pendant ces mises à niveau. Passer en mode mono-utilisateur est certainement aussi une bonne idée!

Si vous voulez le faire de la manière difficile, vous pouvez obtenir la bibliothèque et le fichier en-tête à :

ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz

Autrement, vous pouvez obtenir les binaires précompilés dans distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb sur le même site, ou suivre les instructions données pour la question 1.2 de correction de la même erreur avec les premières versions de Slackware 3.1. Ne pas utiliser cette méthode, à moins que vous sachiez ce que vous faites!

305.5 Ma compilation du processus d'arrière plan échoue réclamant le "fichier include" dlfcn.h missing

Voir la réponse aux questions 1.3/1.4. N'oubliez pas que si vous utilisez un système a.out vous devez auparavant avoir installé le paquetage dld (qui n'est pas fourni avec la plupart des systèmes a.out) pour avoir dlfcn.h en entier. Voir Question 1.11.

305.6 GCC se plaint d'une option ignorée -fpic

Le première versions de GCC acceptaient soit -fpic soit -fPIC. Il apparaît que les plus récentes versions (V2.7.2?) requièrent -fPIC. Si vous utilisez une version ELF de Linux, on peut ignorer cela sans problème, puisque -fPIC est la valeur par défaut.

Vous pouvez apporter une correction à cela en éditant le fichier src/Makefile.global et en changeant CFLAGS_SL

305.7 J'ai des messages d'avertissement du type "warning- cast from pointer to integer of different size"

Ils apparaissaient dans les premières versions de Postgres95 et peuvent, sans risque, être ignorés. PostgreSQL V6.0 doit pouvoir se compiler sans messages d'avertissement sauf ceux relatifs aux fichiers en-têtes système (qui peuvent également être ignorés sans risque).

305.9 Pourquoi ai-je des problèmes avec ld.so?

Si vous avez des problèmes avec ld.so, une autre bibliothèque nécessaire en format ELF pour les liens dynamiques, alors c'est que vous avez bricolé votre système ou (plus vraisemblablement) effectué une mise à niveau de Linux.

Voyez les réponses aux questions 1.3/1.4. Vous pouvez avoir besoin d'installer ld.so.x.y.z dans /lib et de faire tourner ldconfig.

La version stable la plus récente du paquetage ld package est 1.7.14 Au moment de la rédaction de ce texte, les versions 1.8.x de ld sont expérimentales.

305.10 Pourquoi ai-je les erreurs `yy_flush_buffer undefined'?

Ce n'est pas réellement spécifique à Linux, mais c'est courant sur les installations Linux les plus anciennes. Il vous faut une version récente de flex (2.5.2 ou suivantes) pour compiler PostgreSQL. Notez que flex 2.5.3 a un bogue: voir la Question 3.4.

305.11 Comment dois-je compiler PostgreSQL sur un système a.out?

Premièrement, vous devez installer la bibliothèque dld. On peut l'obtenir sur le site Sunsite sous le nom : Linux/libs/dld.3.2.7.tar.gz

Deuxièmement, ajouter la ligne suivante au fichier src/Makefile.custom: LINUX_ELF= (ou utilisez un script personnalisé)

305.12 Pourquoi make échoue-t-il avec - yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y make- /usr/bin/make- cannot execute binary file

Ce fut un problème des premières versions de Postgres95. Pour PostgreSQL on utilise bison -y par défaut plutôt que yacc.

yacc est généralement implanté comme script qui invoque bison -y Pour une raison quelconque (certaines versions de make? certaines versions de bash?) make est incapable d'exécuter ce fichier script.

Pour corriger cela, éditez simplement src/mk/port/postgres.mk.linux et, à la fin du fichier, changez : # YACC = bison -y en YACC = bison -y

305.13 Que sont les références à libsocket dans X11_LIB et libnsl dans src/Makefile.global?

Ce fut un problème dans la version 1.08 (elles sont spécifiques à Sun Solaris). Cela a été corrigé dans 1.09 et 6.0


Page suivante Page précédente Table des matières