Cette FAQ est incluse ici puisque tous les utilisateurs n'ont pas de butineurs tels que Netscape et accès à l'Internet. Les utilisateurs peuvent utiliser GnuInfo, Ghostview, l'éditeur vi ou la commande man. Ce document a été généré en 10 formats différents tels que GnuInfo, RTF, Texte standard, Man page, Postscript etc.. et est distribué sur les CDROM Linux. Veuillez consultez la dernière version de cette FAQ qui se trouve à http://www.postgresql.org/docs/faq-english.shtml si vous avez accès à l'Internet."
Cette FAQ a été mise ici pour vous rendre service.
Si vous disposez d'un accès à internet, veuillez cliquez sur cette URL maintenant pour obtenir la dernière version
======================================================
Foire Aux Questions (FAQ) for PostgresSQL >=V6.1
Specifique IRIX
A LIRE EN PARALLELE AVEC LA FAQ NORMALE
======================================================
Derniere mise a jour : Lundi 4 decembre 1997 10:20:00 GMT
Gestionnaire actuel : Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
Auteur original : Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
Modifications dans cette version (* = modifie, + = nouveau, - = supprime):
+1.9) Pourquoi IRIX5 lex echoue avec PostgreSQL 6.2.1?
Ce fichier est divise approximativement comme suit :
1.*) Installation de PostgreSQL
2.*) Des-installation de PostgreSQL
3.*) Extension de PostgreSQL
Reponses aux questions :
1.1) De quels elements supplementaires ai-je besoin pour installer Postgres95 sous Irix ?
1.2) Quelles modifications dois-je apporter a src/Makefile.global ?
1.3) Quelles sont les references a libsocket dans X11_LIB et a libnsl dans
src/makefile.global ?
1.4) Dois-je faire d'autres modifications ?
1.5) Puis-je installer PostgreSQL sous Irix 6.x ?
1.6) Le make echoue avec le message suivant :
ld32: ERROR 4: Conflicting flag setting: -call_shared
1.7) Pourquoi l'edition de liens ne peut-elle se faire ? (Problemes avec lorder)
1.8) J'ai des problemes majeurs avec Irix 6!
1.9) Pourquoi lex echoue-t-il avec PostgreSQL 6.2.1 ?
2.1) Pourquoi ne puis-je pas deplacer les fichiers executables ?
3.1) Comment compiler un programme C pour creer une fonction pour etendre PostgreSQL ?
----------------------------------------------------------------------
Section 1: Installation de PostgreSQL
----------------------------------------------------------------------
1.1) De quels elements supplementaires ai-je besoin pour installer Postgres95 sous Irix?
Vous *devez* avoir les elements suivants installes:
a) Gnu make (installe sous le nom gmake)
Nous vous recommandons d'installer ce qui suit :
a) GNU install (installe sous le nom ginstall)
( fait partie du paquetage GNU fileutils )
Vous pouvez choisir d'installer :
a) La bibliotheque GNU readline (si vous desirez que psql ait le
support de readline).
b) Tcl/Tk (si vous souhaitez compiler pgtclsh)
1.2) Quelles modifications dois-je apporter a src/Makefile.global ou
src/Makefile.custom?
La maniere la plus simple de faire cela est d'utiliser le script
personnalise dans le repertoire src.
Vous *devez* renseigner les variables suivantes :
PORTNAME= irix5
Vous aurez aussi besoin de changer ce qui suit pour l'adapter a
votre propre installation :
POSTGRESDIR
Si vous activez l'option USE_TCL, vous aurez besoin de renseigner:
TCL_INCDIR=
TCL_LIBDIR=
TCL_LIB =
TK_INCDIR=
TK_LIBDIR=
TK_LIB =
Vous pouvez egalement faire toutes les autres modifications dont vous avez besoin
comme indique dans le fichier INSTALL et dans Makefile.global
1.3) Que sont les references a libsocket dans X11_LIB et a libnsl dans
src/Makefile.global?
Ce fut un probleme dans la version 1.08 (elles sont specifiques a Sun Solaris).
Cela a ete corrige dans 1.09 et au-dessus.
1.4) Dois-je faire d'autres modifications ?
Si vous avez installe le programme GNU install (ginstall), vous
devriez ajouter la ligne suivante a src/Makefile.custom:
CUSTOM_INSTALL=ginstall
Pour une explication sur ce point, voir la Question 2.1
Ginstall fait partie du paquetage GNU fileutils.
1.5 Puis-je installer PostgreSQL sous Irix 6.4 ?
Irix 6.2-6.4 a un bogue dans ld qui l'empeche de prendre en compte
correctement les adresses des procedures statiques quand les fichiers
objets sont assembles en fichiers objets plus grands en utilisant 'ld -r'.
Ce bogue a ete rapporte a Silicon Graphics.
Une possibilite consiste a utiliser la version GNU de ld. Autrement,
la rustine suivante peut etre appliquee pour le contourner.
(Fourni par Bob Bruccoleri
*** ./backend/Makefile.orig Thu May 22 00:00:15 1997
--- ./backend/Makefile Thu Jun 5 16:47:27 1997
***************
*** 54,60 ****
all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
postgres: $(OBJS) ../utils/version.o
! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
$(OBJS): $(DIRS:%=%.dir)
--- 54,64 ----
all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
postgres: $(OBJS) ../utils/version.o
! # $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
! -rm -f *.o
! find . -name "*.o" -exec cp \(\) . \;
! rm -f SUBSYS.o
! $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
$(OBJS): $(DIRS:%=%.dir)
1.6) Le make echoue avec le message suivant :
ld32: ERROR 4: Conflicting flag setting: -call_shared
Si gmake echoue dans .../src/backend pendant la construction de
obj/ACCESS.o avec un message de ld32, vous pouvez corriger cela
en utilisant ld comme variable d'environnement LD au lieu de cc.
Le probleme a ete observe sous Irix 5.3 lors de la compilation de
Postgres95-1.09 et de PostgreSQL-6.2Beta6, mais sur quelques
systemes ils se compilent sans de tels problemes.
Une correction est fournie par Brian Sanders (bsanders@netcom.com,
brian@fresnelsoft.com)
1.7) Pourquoi l'edition de liens ne peut-elle se faire ? (Problemes avec lorder)
Selon les pages de manuel d'IRIX, lorder est inutile, mais inoffensif
sous IRIX. Cependant, il a cause des problemes a quelques-uns qui
utilisent IRIX 6.2.
La solution consiste a ajouter la ligne suivante a
.../src/makefiles/Makefile.irix5
MK_NO_LORDER=true
1.8) J'ai des problemes majeurs avec IRIX 6!
Ce qui suit est cite directement de Bob Bruccoleri
Il y a un bogue reellement serieux dans le compilateur (7.1)
sur Irix 6.x, et l'erreur indiquee par Lasse Petersen en est le resultat.
Voici le message original. Je ne sais pas si toutes les modifications ont ete
integrees dans la version actuelle.
Date: vendredi 06 Juin 1997 17:12:20 -0400 (EDT)
From: bruc@bms.com (Robert Bruccoleri)
Subject: [PORTS] Rustines pour Irix 6.4
J'ai trouve comment compiler PostgreSQL sur Irix 6.4 en utilisant le mode -n32
du compilateur et la version 7.1 du compilateur C. (Le compilateur n32 utilise
un adressage sur 32 bits, mais permet d'acceder a tout le jeu d'instructions
de MIPS4 instruction.)
Il y avait plusieurs problemes :
1) La commande ld n'est pas referencee comme macro dans tous les fichiers Makefiles.
Sur cette plate-forme, il faut ajouter -n32 a toutes les commandes ld. Les fichiers
Makefile ont ete modifies en consequence.
2) Il y a un bogue dans "ld" qui prend mal en compte les adresses des procedures
statiques quand les fichiers objets sont assembles pour fabriquer des fichiers objets
plus grands en utilisant "ld -r". A cause de cela, j'ai insere un bidouillage dans
src/backend/Makefile pour eviter tous les fichiers SUBSYS.o et ne lier que les
objets. J'ai contacte SGI a propos de ce probleme, et, heureusement, il sera
corrige dans un futur proche.
3) Un paquet de messages d'alerte (warnings) sont generes par le compilateur. Depuis
que les tests de regression s'executent sans erreurs, je n'ai plus chercher a y
remedier. Si quelqu'un desire le journal de bord de la compilation, qu'il me le fasse
savoir, je lui enverrai par email.
La version de postgresql etait 970602. Voici le fichier Makefile.custom :
CUSTOM_COPT = -O2 -n32
MK_NO_LORDER = 1
LD = ld -n32
CC += -n32
Voici les rustines :
*** ./backend/access/Makefile.orig Sun Nov 10 00:00:15 1996
- --- ./backend/access/Makefile Tue Jun 3 10:22:32 1997
***************
*** 8,13 ****
- --- 8,16 ----
#
#-------------------------------------------------------------------------
+ SRCDIR = ../..
+ include ../../Makefile.global
+
OBJS = common/SUBSYS.o gist/SUBSYS.o hash/SUBSYS.o heap/SUBSYS.o \
index/SUBSYS.o rtree/SUBSYS.o nbtree/SUBSYS.o transam/SUBSYS.o
*** ./backend/bootstrap/Makefile.orig Fri Apr 18 06:00:23 1997
- --- ./backend/bootstrap/Makefile Tue Jun 3 10:23:59 1997
***************
*** 38,44 ****
all: SUBSYS.o
SUBSYS.o: $(OBJS)
! ld -r -o SUBSYS.o $(OBJS)
# bootstrap.o's dependency on bootstrap_tokens.h is computed by the
# make depend, but we state it here explicitly anyway because
- --- 38,44 ----
all: SUBSYS.o
SUBSYS.o: $(OBJS)
! $(LD) -r -o SUBSYS.o $(OBJS)
# bootstrap.o's dependency on bootstrap_tokens.h is computed by the
# make depend, but we state it here explicitly anyway because
*** ./backend/Makefile.orig Thu May 22 00:00:15 1997
- --- ./backend/Makefile Thu Jun 5 16:47:27 1997
***************
*** 54,60 ****
all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
postgres: $(OBJS) ../utils/version.o
! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
$(OBJS): $(DIRS:%=%.dir)
- --- 54,64 ----
all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
postgres: $(OBJS) ../utils/version.o
! # $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
! -rm -f *.o
! find . -name "*.o" -exec cp \(\) . \;
! rm -f SUBSYS.o
! $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
$(OBJS): $(DIRS:%=%.dir)
***************
*** 116,122 ****
install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
global1.bki.source local1_template1.bki.source \
libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
!
$(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
ifeq ($(MAKE_EXPORTS), true)
$(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
- --- 120,126 ----
install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
global1.bki.source local1_template1.bki.source \
libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
!
$(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
ifeq ($(MAKE_EXPORTS), true)
$(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
*** ./backend/optimizer/Makefile.orig Wed Feb 19 12:00:34 1997
- --- ./backend/optimizer/Makefile Tue Jun 3 10:39:47 1997
***************
*** 8,13 ****
- --- 8,16 ----
#
#-------------------------------------------------------------------------
+ SRCDIR= ../..
+ include ../../Makefile.global
+
all: submake SUBSYS.o
OBJS = path/SUBSYS.o plan/SUBSYS.o prep/SUBSYS.o util/SUBSYS.o geqo/SUBSYS.o
*** ./backend/libpq/pqcomprim.c.orig Mon May 26 00:00:23 1997
- --- ./backend/libpq/pqcomprim.c Fri Jun 6 16:02:24 1997
***************
*** 32,40 ****
# define hton_l(n) (ntoh_l(n))
# else /* BYTE_ORDER != BIG_ENDIAN */
# if BYTE_ORDER == PDP_ENDIAN
! # #error PDP_ENDIAN macros not written yet
# else /* BYTE_ORDER != anything known */
! # #error BYTE_ORDER not defined as anything understood
# endif /* BYTE_ORDER == PDP_ENDIAN */
# endif /* BYTE_ORDER == BIG_ENDIAN */
#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- --- 32,40 ----
# define hton_l(n) (ntoh_l(n))
# else /* BYTE_ORDER != BIG_ENDIAN */
# if BYTE_ORDER == PDP_ENDIAN
! # error PDP_ENDIAN macros not written yet
# else /* BYTE_ORDER != anything known */
! # error BYTE_ORDER not defined as anything understood
# endif /* BYTE_ORDER == PDP_ENDIAN */
# endif /* BYTE_ORDER == BIG_ENDIAN */
#endif /* BYTE_ORDER == LITTLE_ENDIAN */
*** ./backend/storage/Makefile.orig Sun Nov 10 00:01:06 1996
- --- ./backend/storage/Makefile Tue Jun 3 10:41:29 1997
***************
*** 8,13 ****
- --- 8,16 ----
#
#-------------------------------------------------------------------------
+ SRCDIR= ../..
+ include ../../Makefile.global
+
all: submake SUBSYS.o
OBJS = buffer/SUBSYS.o file/SUBSYS.o ipc/SUBSYS.o large_object/SUBSYS.o \
1.9) Pourquoi lex echoue-t-il avec PostgreSQL 6.2.1 ?
On a indique que IRIX 5.3 lex echouait dans postgresql-6.2.1/src/backend/parser
avec l'erreur :
lex scan.l
"scan.l":line 86: Error: Invalid request %x xc
gmake[2]: *** [scan.c] Error 1
La reponse est qu'il faut utiliser GNU flex 2.5.4 ou ulterieur. Utilisez la
commande
flex --version
pour verifiez que votre version de flex est assez recente
----------------------------------------------------------------------
Section 2: Des-installation de PostgreSQL
----------------------------------------------------------------------
2.1) Pourquoi ne puis-je pas deplacer les fichiers executables?
Par defaut, le portage IRIX utilise la version compatible BSD du
programme install de /usr/bin/X11. Si vous lisez la page de manuel
pour cette version d'install, vous verrez que son utilisation n'est
pas destinee a l'utilisateur final; il possede l'effet de bord
interessant de changer le proprietaire des fichiers qu'ils installe en root.
Vous devriez encore pouvoir detruire les fichiers puisque vous (utilisateur
postgres) etes proprietaire du repertoire dans lequel ils sont stockes.
Le programme install normal de IRIX ne peut pas etre utilise facilement car il
prend ses arguments en ordre inverse. De ce fait, on recommande d'utiliser
la version GNU du programme install (ginstall).
Voir la Question 1.4
----------------------------------------------------------------------
Section 3: Extension de PostgreSQL
----------------------------------------------------------------------
3.1) Comment dois-je compiler un programme C pour creer une fonction d'extension a
Postgres95
Voici une ligne de commande en exemple :
cc -I/usr/local/postgres95/include/ -I/usr/local/postgres95/src/backend
-shared -o funcs.so funcs.c
----------------------------------------------------------------------------
Dr. Andrew C.R. Martin University College London
EMAIL: (Work) martin@biochem.ucl.ac.uk (Home) andrew@stagleys.demon.co.uk
URL: http://www.biochem.ucl.ac.uk/~martin
Tel: (Work) +44(0)171 419 3890 (Home) +44(0)1372 275775
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