=====================================================
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 ( [email protected] )
Auteur original: Andrew C.R. Martin ( [email protected] )
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
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é.
La bibliothèque libdl est utilisée pour la liaison dynamique de fonctions fournies par l'utilisateurs au moment de l'exécution. Pour une raison quelconque, cette bibliothèque a été oubliée dans la distribution Redhat. Il semble que ce problème a été résolu dans la version Redhat 4.0 (Colgate).
RedHat possède maintenant un nouveau paquetage ld.so RPM sur son site FTP. Récupérez simplement :
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!
Voir la réponse à la question 1.3. Slackware jusqu'à la version 3.0 était fourni avec cette bibliothèque et le fichier "include" et ils ont semblé revenir en arrière avec les dernières versions 3.1, mais les premières livraisons 3.1 (avant le 9 Septembre 1996) ne les avaient pas et beaucoup de versions CD-ROM ont été réalisés à partir de ces premières versions 3.1.
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!
La meilleure manière de corriger cela est d'obtenir le fichier ldso.tgz du disque a4 d'une distribution plus récente de Slackware 3.1 de décompacter ce fichier à partir du répertoire root (/), puis de faire
sh install/doinst.sh
pour terminer l'installation, à la suite de cela, faites
ldconfig
Si vous voulez l'installer manuellement, vous devez d'abord installer le fichier dlfcn.h in /usr/include.
Puis, installer le fichier libdl.so.1.7.14 (ou une version plus récente) dans /lib, puis faire :
cd /lib ln -sf libdl.so.1.7.14 libdl.so.1 ln -sf libdl.so.1 libdl.so
Sur quelques systèmes (dépendant de la configuration de GCC) il peut être nécessaire de faire :
cd /usr/lib ln -sf /lib/libdl.so .
Finalement
ldconfig
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.
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
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).
SuSE-Linux a ncurses et non pas curses. Fixer la valeur de CURSES_LIB dans src/Makefile.custom à -lncurses (ou faites ceci par l'intermédiaire d'un script personnalisé).
SuSE-Linux possède la bibliothèque termcap library dans /usr/lib/termcap au lieu de /usr/lib. Si vous avez un problème, il vous faut ajouter la ligne suivante à src/Makefile.custom:
LDADD_BE+= -L/usr/lib/termcap
Vous pouvez avoir besoin d'éditer src/bin/psql/Makefile et d'effectuer la modification de:
ifeq ($(PORTNAME), linux) LD_ADD+= -ltermcap en: ifeq ($(PORTNAME), linux) LD_ADD+=
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.
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.
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é)
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
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
Le Linux de Debian est livré sans bibliothèque termcap et utilise ncurses (qui à la place utilise terminfo). Il n'y a pas besoin de modifier la variable CURSES_LIB dans src/bin/psql/Makefile puisque Debian fournit un lien de libncurses vers libcurses (à la différence de SuSE-Linux --- voir la Question 1.8).
Vous pouvez avoir besoin d'éditer src/bin/psql/Makefile et de changer:
ifeq ($(PORTNAME), linux) LD_ADD+= -ltermcap en: ifeq ($(PORTNAME), linux) LD_ADD+=
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre