mirror of https://github.com/postgres/postgres
parent
c9ac0ceb61
commit
690235fcdd
@ -1,490 +0,0 @@ |
|||||||
====================================================== |
|
||||||
Frequently Asked Questions (FAQ) for PostgreSQL >=V6.1 |
|
||||||
IRIX Specific |
|
||||||
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
|
||||||
====================================================== |
|
||||||
last updated: Mon Mar 05 17:00:00 GMT 1998 |
|
||||||
|
|
||||||
current maintainer: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) |
|
||||||
original author: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) |
|
||||||
|
|
||||||
|
|
||||||
Changes in this version (* = modified, + = new, - = removed): |
|
||||||
*1.5) Can I install PostgreSQL (<V6.3) under Irix 6.x? |
|
||||||
+1.10) How do I install PostgreSQL V6.3 under Irix 6.x? |
|
||||||
|
|
||||||
This file is divided approximately as follows: |
|
||||||
1.*) Installing PostgreSQL |
|
||||||
2.*) Uninstalling PostgreSQL |
|
||||||
3.*) Extending PostgreSQL |
|
||||||
|
|
||||||
|
|
||||||
Questions answered: |
|
||||||
1.1) What extra items do I need to install PostgreSQL under Irix? |
|
||||||
1.2) What changes do I need to make to src/Makefile.global? |
|
||||||
1.3) What are the references in X11_LIB to libsocket and libnsl in |
|
||||||
src/Makefile.global? |
|
||||||
1.4) Are there any other changes I should make? |
|
||||||
1.5) Can I install PostgreSQL (<V6.3) under Irix 6.x? |
|
||||||
1.6) The make fails with the following message: |
|
||||||
ld32: ERROR 4: Conflicting flag setting: -call_shared |
|
||||||
1.7) Why won't it link? (Problems with lorder) |
|
||||||
1.8) I have major problems with IRIX 6! |
|
||||||
1.9) Why does lex fail with PostgreSQL 6.2.1? |
|
||||||
1.10) How do I install PostgreSQL V6.3 under Irix 6.x? |
|
||||||
2.1) Why can't I move the executable files? |
|
||||||
3.1) How do I compile a C program to create a function for extending |
|
||||||
PostgreSQL |
|
||||||
|
|
||||||
---------------------------------------------------------------------- |
|
||||||
Section 1: Installing PostgreSQL |
|
||||||
---------------------------------------------------------------------- |
|
||||||
|
|
||||||
1.1) What extra items do I need to install PostgreSQL under Irix? |
|
||||||
|
|
||||||
You *must* have the following installed: |
|
||||||
a) Gnu make (installed as gmake) |
|
||||||
|
|
||||||
You are recommended to install the following: |
|
||||||
a) GNU install (installed as ginstall) |
|
||||||
(This is part of the GNU fileutils package) |
|
||||||
|
|
||||||
You may choose to install the following: |
|
||||||
a) GNU readline library (if you wish psql to have readline |
|
||||||
support). |
|
||||||
b) tcl/tk (if you wish to compile pgtclsh) |
|
||||||
|
|
||||||
1.2) What changes do I need to make to src/Makefile.global or |
|
||||||
src/Makefile.custom? |
|
||||||
|
|
||||||
The easiest way to do this is to use the customize script in |
|
||||||
the src directory. |
|
||||||
|
|
||||||
You *must* set the following variables: |
|
||||||
PORTNAME= irix5 |
|
||||||
|
|
||||||
You will also need to change the following to match your own |
|
||||||
installation: |
|
||||||
POSTGRESDIR |
|
||||||
|
|
||||||
If you switch on the USE_TCL option, you will need to set these: |
|
||||||
TCL_INCDIR= |
|
||||||
TCL_LIBDIR= |
|
||||||
TCL_LIB = |
|
||||||
TK_INCDIR= |
|
||||||
TK_LIBDIR= |
|
||||||
TK_LIB = |
|
||||||
|
|
||||||
You may also make any other changes you need as documented in |
|
||||||
the INSTALL file and in Makefile.global |
|
||||||
|
|
||||||
1.3) What are the references in X11_LIB to libsocket and libnsl in |
|
||||||
src/Makefile.global? |
|
||||||
|
|
||||||
This was a problem in 1.08 (they are Sun Solaris specific). |
|
||||||
It is fixed in 1.09 and above. |
|
||||||
|
|
||||||
1.4) Are there any other changes I should make? |
|
||||||
|
|
||||||
If you have installed the GNU install program (ginstall), you |
|
||||||
should add the following line to src/Makefile.custom: |
|
||||||
CUSTOM_INSTALL=ginstall |
|
||||||
|
|
||||||
For an explanation as to why this is a good idea, see Question 2.1 |
|
||||||
Ginstall is part of the GNU fileutils package. |
|
||||||
|
|
||||||
|
|
||||||
1.5) Can I install PostgreSQL (<V6.3) under Irix 6.x? |
|
||||||
|
|
||||||
Instructions for PostgreSQL V6.3 are answered in Question 1.10! |
|
||||||
|
|
||||||
Irix 6.2-6.4 has a bug in ld which mishandles the addresses of |
|
||||||
static procedures when object files are assembled into |
|
||||||
larger object files using 'ld -r'. This bug has been reported |
|
||||||
to Silicon Graphics. |
|
||||||
|
|
||||||
One option is to use the Gnu version of ld. Alternatively, |
|
||||||
the following patch should be applied as a workaround. |
|
||||||
(Supplied by Bob Bruccoleri <bruc@bms.com>) |
|
||||||
|
|
||||||
*** ./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) The make fails with the following message: |
|
||||||
ld32: ERROR 4: Conflicting flag setting: -call_shared |
|
||||||
|
|
||||||
If gmake fails in .../src/backend while building obj/ACCESS.o |
|
||||||
with a message from ld32, you can work around this by using |
|
||||||
ld for the LD environment variable rather than cc. |
|
||||||
|
|
||||||
The problem has been observed under Irix 5.3 when compiling both |
|
||||||
Postgres95-1.09 and PostgreSQL-6.2Beta6, but on some systems |
|
||||||
these appear to compile with no such problems. |
|
||||||
|
|
||||||
Fix supplied by Brian Sanders (bsanders@netcom.com, |
|
||||||
brian@fresnelsoft.com) |
|
||||||
|
|
||||||
|
|
||||||
1.7) Why won't it link? (Problems with lorder) |
|
||||||
|
|
||||||
According to the IRIX man pages, lorder is useless, but harmless |
|
||||||
under IRIX. However, it has caused problems for some people |
|
||||||
using both IRIX 6.2. |
|
||||||
|
|
||||||
The solution is to add the following line to |
|
||||||
.../src/makefiles/Makefile.irix5 |
|
||||||
|
|
||||||
MK_NO_LORDER=true |
|
||||||
|
|
||||||
|
|
||||||
1.8) I have major problems with IRIX 6! |
|
||||||
|
|
||||||
The following is quoted directly from Bob Bruccoleri <bruc@bms.com> |
|
||||||
|
|
||||||
There is a really nasty loader bug in the compiler system (7.1) |
|
||||||
on Irix 6.x, and the error that Lasse Petersen is the result of it. |
|
||||||
Here is the original message. I don't know if all the changes have been |
|
||||||
folded into the current release. |
|
||||||
|
|
||||||
Date: Fri, 06 Jun 1997 17:12:20 -0400 (EDT) |
|
||||||
From: bruc@bms.com (Robert Bruccoleri) |
|
||||||
Subject: [PORTS] Patches for Irix 6.4 |
|
||||||
|
|
||||||
I have worked out how to compile PostgreSQL on Irix 6.4 using the -n32 compiler |
|
||||||
mode and version 7.1 of the C compiler. (The n32 compiler use 32 bits addressing, |
|
||||||
but allows access to all the instructions in the MIPS4 instruction set.) |
|
||||||
There were several problems: |
|
||||||
|
|
||||||
1) The ld command is not referenced as a macro in all the Makefiles. On |
|
||||||
this platform, you have to include -n32 on all the ld commands. Makefiles |
|
||||||
were changed as needed. |
|
||||||
|
|
||||||
2) There is a bug in "ld" which mishandles the addresses of static procedures |
|
||||||
when object files are assembled into larger object files using "ld -r". |
|
||||||
Because of this, I put a hack into src/backend/Makefile to avoid all the |
|
||||||
SUBSYS.o files and just link all the objects. I have contacted SGI about the |
|
||||||
problem, and hopefully, it will be fixed in the near future. |
|
||||||
|
|
||||||
3) Lots of warnings are generated from the compiler. Since the regression |
|
||||||
tests worked OK, I didn't attempt to fix them. If anyone wants the compilation |
|
||||||
log, please let me know, and I'll email it to you. |
|
||||||
|
|
||||||
The version of postgresql was 970602. Here is Makefile.custom: |
|
||||||
|
|
||||||
CUSTOM_COPT = -O2 -n32 |
|
||||||
MK_NO_LORDER = 1 |
|
||||||
LD = ld -n32 |
|
||||||
CC += -n32 |
|
||||||
|
|
||||||
Here are the patches: |
|
||||||
|
|
||||||
*** ./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) Why does lex fail with PostgreSQL 6.2.1? |
|
||||||
|
|
||||||
IRIX 5.3 lex has been reported to fail in |
|
||||||
postgresql-6.2.1/src/backend/parser with the error: |
|
||||||
|
|
||||||
lex scan.l |
|
||||||
"scan.l":line 86: Error: Invalid request %x xc |
|
||||||
gmake[2]: *** [scan.c] Error 1 |
|
||||||
|
|
||||||
The answer is to use GNU flex 2.5.4 or later. Use the command |
|
||||||
flex --version |
|
||||||
to check you have a new enough version of flex |
|
||||||
|
|
||||||
|
|
||||||
1.10) How do I install PostgreSQL V6.3 under Irix 6.x? |
|
||||||
|
|
||||||
Irix 6.2-6.4 has a bug in ld which mishandles the addresses of |
|
||||||
static procedures when object files are assembled into |
|
||||||
larger object files using 'ld -r'. This bug has been reported |
|
||||||
to Silicon Graphics. |
|
||||||
|
|
||||||
Depending on your Irix installation you may also encounter |
|
||||||
2 other problems detailed below: Conflict in C standards, |
|
||||||
Conflict in library functions. |
|
||||||
|
|
||||||
a) Solving the ld bug |
|
||||||
--------------------- |
|
||||||
|
|
||||||
One option is to use the Gnu version of ld. Alternatively, |
|
||||||
the following patch should be applied as a workaround. |
|
||||||
(Supplied by Bob Bruccoleri <bruc@bms.com> and modified for |
|
||||||
PostgreSQL V6.3 by Lasse Hiller Petersen <lassehp@imv.aau.dk>) |
|
||||||
|
|
||||||
Apply the following patch: |
|
||||||
|
|
||||||
*** ./backend/Makefile.orig Tue Mar 3 15:33:58 1998 |
|
||||||
--- ./backend/Makefile Tue Mar 3 15:39:27 1998 |
|
||||||
*************** |
|
||||||
*** 63,69 **** |
|
||||||
global1.description |
|
||||||
local1_template1.description |
|
||||||
|
|
||||||
postgres: $(OBJS) ../utils/version.o |
|
||||||
! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) |
|
||||||
|
|
||||||
$(OBJS): $(DIRS:%=%.dir) |
|
||||||
|
|
||||||
--- 63,73 ---- |
|
||||||
global1.description |
|
||||||
local1_template1.description |
|
||||||
|
|
||||||
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) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Lasse configured with ./configure --enable-locale |
|
||||||
and modified Makefile.custom to contain: |
|
||||||
CC = cc -n32 |
|
||||||
LD = ld -n32 |
|
||||||
|
|
||||||
He reports that the installation without -n32 works fine too, |
|
||||||
but the -n32 was required for compatibility with his Perl |
|
||||||
installation. His system was an Origin200 running IRIX64 v6.4. |
|
||||||
|
|
||||||
|
|
||||||
b) Conflict in C standards |
|
||||||
-------------------------- |
|
||||||
|
|
||||||
I have found that the following patch is also necessary in order |
|
||||||
to prevent a duplicate definition of a Union used for semaphores. |
|
||||||
Apply the following patch to: |
|
||||||
.../src/makefile/Makefile.irix5: |
|
||||||
|
|
||||||
*** src/makefiles/Makefile.irix5.orig Thu Mar 5 16:59:58 1998 |
|
||||||
--- src/makefiles/Makefile.irix5 Thu Mar 5 17:01:13 1998 |
|
||||||
*************** |
|
||||||
*** 6,9 **** |
|
||||||
%.so: %.o |
|
||||||
$(LD) -G -Bdynamic -shared -o $@ $< |
|
||||||
|
|
||||||
! |
|
||||||
--- 6,9 ---- |
|
||||||
%.so: %.o |
|
||||||
$(LD) -G -Bdynamic -shared -o $@ $< |
|
||||||
|
|
||||||
! CFLAGS+= -U_NO_XOPEN4 |
|
||||||
|
|
||||||
i.e. the addition of the line: |
|
||||||
CFLAGS+= -U_NO_XOPEN4 |
|
||||||
|
|
||||||
This is needed to stop the semun union being redefined in |
|
||||||
/usr/include/sys/sem.h |
|
||||||
|
|
||||||
c) Conflict in library functions |
|
||||||
-------------------------------- |
|
||||||
|
|
||||||
In addition, if you have the nsl and crypt libraries these will |
|
||||||
conflict with the required definitions. I think that libnsl.a |
|
||||||
may be the Netware socket library (or something similar). In |
|
||||||
any case, if you have these libraries, they will be added to |
|
||||||
Makefile.global and you will need to remove them. |
|
||||||
|
|
||||||
Thus, you should edit .../src/Makefile.global. Goto (approximately) |
|
||||||
line 217 where LDFLAGS= is set and remove -lnsl and -lcrypt |
|
||||||
from this line. |
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------- |
|
||||||
Section 2: Deinstalling PostgreSQL |
|
||||||
---------------------------------------------------------------------- |
|
||||||
|
|
||||||
2.1) Why can't I move the executable files? |
|
||||||
|
|
||||||
By default, the IRIX port uses the BSD compatible version of |
|
||||||
install from /usr/bin/X11. If you read the man page for this |
|
||||||
version of install, you will see that it is not meant for |
|
||||||
end-user use; it has the interesting side-effect of chowning |
|
||||||
files it installs to root. |
|
||||||
|
|
||||||
You should still be able to delete the files as you (the |
|
||||||
postgres user) will own the directory in which they are |
|
||||||
stored. |
|
||||||
|
|
||||||
The normal IRIX install program cannot be used easily as it |
|
||||||
takes its arguments in the reverse order. It is therefore |
|
||||||
recommended to use the GNU version of install (ginstall). |
|
||||||
See Question 1.4 |
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------- |
|
||||||
Section 3: Extending PostgreSQL |
|
||||||
---------------------------------------------------------------------- |
|
||||||
3.1) How do I compile a C program to create a function for extending |
|
||||||
PostgreSQL |
|
||||||
|
|
||||||
Here is a sample command line: |
|
||||||
|
|
||||||
cc -I/usr/local/PostgreSQL/include/ -I/usr/local/PostgreSQL/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 |
|
@ -1,650 +0,0 @@ |
|||||||
<PRE> |
|
||||||
======================================================= |
|
||||||
Frequently Asked Questions (FAQ) for PostgreSQL >= V6.1 |
|
||||||
Linux Specific |
|
||||||
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
|
||||||
======================================================= |
|
||||||
last updated: Wed Feb 18 13:00:00 GMT 1997 |
|
||||||
|
|
||||||
current maintainer: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) |
|
||||||
original author: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) |
|
||||||
|
|
||||||
|
|
||||||
Changes in this version (* = modified, + = new, - = removed): |
|
||||||
|
|
||||||
+1.20) How can I optimise for 486 or pentium processors |
|
||||||
+3.10) Why do I get funny rounding results in some date/time arithmetic... |
|
||||||
|
|
||||||
This file is divided approximately as follows: |
|
||||||
1.*) Installing PostgreSQL |
|
||||||
2.*) Compiling accessory programs |
|
||||||
3.*) Runtime Problems |
|
||||||
|
|
||||||
|
|
||||||
Questions answered: |
|
||||||
1.1) What changes do I need to make to src/Makefile.global or |
|
||||||
src/Makefile.custom and are there any other changes needed? |
|
||||||
1.2) Why do I get problems with missing libreadline? |
|
||||||
1.3) [REDHAT] Why do I get problems with missing libdl and dlfcn.h? |
|
||||||
1.4) [SLACKWARE 3.1] Why do I get problems with missing libdl and dlfcn.h? |
|
||||||
1.5) My compile of the backend dies complaining about the include file |
|
||||||
dlfcn.h missing |
|
||||||
1.6) GCC complains about an ignored option -fpic |
|
||||||
1.7) I get warnings of the form |
|
||||||
warning: cast from pointer to integer of different size |
|
||||||
1.8) [SuSE-Linux 4.2-4.4] Where is curses and termcap? |
|
||||||
1.9) Why do I get problems with ld.so? |
|
||||||
1.10) Why do I get `yy_flush_buffer undefined' errors? |
|
||||||
1.11) How do I compile PostgreSQL on an a.out system? |
|
||||||
1.12) Why does make fail with: |
|
||||||
yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y |
|
||||||
make: /usr/bin/make: cannot execute binary file |
|
||||||
1.13) What are the references in X11_LIB to libsocket and libnsl in |
|
||||||
src/Makefile.global? |
|
||||||
1.14) [DEBIAN] Where is libtermcap? |
|
||||||
1.15) [REDHAT] Can I get PostgreSQL as an RPM? |
|
||||||
1.16) While trying to compile a development version under Linux, compilation |
|
||||||
fails with a message like: |
|
||||||
In file included from /usr/include/sys/sem.h:8, |
|
||||||
from ipc.c:37: |
|
||||||
/usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit' |
|
||||||
.... |
|
||||||
make: *** [ipc.o] Error 1 |
|
||||||
1.17) When compiling postgres, gcc reports signal 11 and aborts. |
|
||||||
1.18) Can I install 6.1.1 under MkLinux? |
|
||||||
1.19) Why does make exit or crash? |
|
||||||
1.20) How can I optimise for 486 or pentium processors |
|
||||||
2.1) The linker fails to find libX11 when compiling pgtclsh |
|
||||||
3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when |
|
||||||
running scripts like createuser |
|
||||||
3.2) I run postmaster and after that system says 'Bad system call(Core |
|
||||||
dumped)' |
|
||||||
3.3) When I try to start the Postmaster, why do I get an error of the form |
|
||||||
Failed Assertion("!(file != 0):(null)", File: |
|
||||||
"/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257) |
|
||||||
!(file != 0) (0) |
|
||||||
initdb: could not create template database |
|
||||||
initdb: cleaning up. |
|
||||||
3.4) Why doesn't createuser work? |
|
||||||
3.5) Why do I get an error like: |
|
||||||
IpcMemoryCreate: memKey=155356396 , size=760632 , |
|
||||||
permission=384IpcMemoryCreate: shmget(..., create, ...) |
|
||||||
failed: Invalid argument |
|
||||||
3.6) Why does psql fail with: |
|
||||||
psql: can't load library 'libpq.so.1' |
|
||||||
3.7) Other strange behaviour |
|
||||||
3.8) When PostgreSQL is running when the system is shutdown, Linux |
|
||||||
always fsck's the disk when rebooted. |
|
||||||
3.9) Why does Query 32 in the regression tests take so long? |
|
||||||
3.10) Why do I get funny rounding results in some date/time arithmetic, |
|
||||||
such as |
|
||||||
select '4 hours'::timespan; |
|
||||||
returning '3 hours 59 minutes 60 seconds'? |
|
||||||
|
|
||||||
---------------------------------------------------------------------- |
|
||||||
Section 1: Compiling PostgreSQL |
|
||||||
---------------------------------------------------------------------- |
|
||||||
|
|
||||||
1.1) What changes do I need to make to src/Makefile.global or |
|
||||||
src/Makefile.custom and are there any other changes needed? |
|
||||||
|
|
||||||
Changes to the makefiles are most easily made by running the |
|
||||||
customize shell script in the src directory which will write a |
|
||||||
Makefile.custom for you. |
|
||||||
|
|
||||||
The only other change you may have to make is to replace |
|
||||||
Flex if you have version 2.5.3 which has a bug which generally |
|
||||||
manifests itself as createuser failing (See Question 3.4) |
|
||||||
|
|
||||||
If you modify the makefiles by hand, you *must* set the |
|
||||||
following variable: |
|
||||||
PORTNAME= linux |
|
||||||
|
|
||||||
You will also need to change the following to match your own |
|
||||||
installation: |
|
||||||
POSTGRESDIR |
|
||||||
|
|
||||||
If you switch on the USE_TCL option, you will need to set these: |
|
||||||
TCL_INCDIR= |
|
||||||
TCL_LIBDIR= |
|
||||||
TCL_LIB= |
|
||||||
TK_INCDIR= |
|
||||||
TK_LIBDIR= |
|
||||||
TK_LIB= |
|
||||||
X11_INCDIR= |
|
||||||
X11_LIBDIR= |
|
||||||
X11_LIB= |
|
||||||
|
|
||||||
On my Slackware3.0 system, these are: |
|
||||||
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 |
|
||||||
|
|
||||||
You may also make any other changes you need as documented in |
|
||||||
the INSTALL file and in Makefile.global |
|
||||||
|
|
||||||
|
|
||||||
1.2) Why do I get problems with missing libreadline? |
|
||||||
|
|
||||||
Linux systems generally don't come with the GNU readline library |
|
||||||
installed. Either ensure you do not activate the readline options |
|
||||||
in src/Makefile.global or src/Makefile.custom or install the GNU |
|
||||||
readline library. |
|
||||||
|
|
||||||
Note that Debian Linux (like FreeBSD) does come with readline |
|
||||||
installed. |
|
||||||
|
|
||||||
1.3) [REDHAT] Why do I get problems with missing libdl and dlfcn.h? |
|
||||||
|
|
||||||
This manifests itself as being unable to link with functions |
|
||||||
such as dlopen(), dlclose(), etc. during the last phase of the |
|
||||||
compilation. |
|
||||||
|
|
||||||
The libdl library is used for dynamic linking of user-supplied |
|
||||||
functions at run-time. For some reason this library was missed out |
|
||||||
from the Redhat distribution. It seems that the latest Redhat 4.0 |
|
||||||
(Colgate) fixes this. |
|
||||||
|
|
||||||
RedHat now have a new ld.so RPM package on their FTP site. |
|
||||||
Simply grab: |
|
||||||
|
|
||||||
ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm |
|
||||||
|
|
||||||
Install the RPM file in the usual way and off you go! |
|
||||||
|
|
||||||
NOTE! You will have to re-run configure and do a make clean |
|
||||||
after installing the library and before recompiling. |
|
||||||
|
|
||||||
There has been one report of a corrupted system resulting from |
|
||||||
programs accessing these libraries while updating them (not |
|
||||||
altogether surprising). Consequently it is a good idea to reboot |
|
||||||
the system before installing the new libraries and to |
|
||||||
have as little running as possible during this upgrade. Going |
|
||||||
into single-user mode is probably a good idea! |
|
||||||
|
|
||||||
If you want to do it the hard way, you can obtain the library and the |
|
||||||
header file from: |
|
||||||
|
|
||||||
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz |
|
||||||
|
|
||||||
Alternatively, you may find precompiled binaries in |
|
||||||
distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb |
|
||||||
on the same site, or follow the instructions given for question 1.2 for |
|
||||||
correcting the same error with early releases of Slackware 3.1. |
|
||||||
Don't use this method unless you know what you are doing! |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1.4) [SLACKWARE 3.1] Why do I get problems with missing libdl and dlfcn.h? |
|
||||||
|
|
||||||
This manifests itself as being unable to link with functions |
|
||||||
such as dlopen(), dlclose(), etc. during the last phase of the |
|
||||||
compilation. |
|
||||||
|
|
||||||
See the answer to question 1.3. Slackware up to version 3.0 was |
|
||||||
supplied with this library and include file and they seem to be |
|
||||||
back in again in the latest versions of 3.1, but the early 3.1 |
|
||||||
releases (before 9th September 1996) had them missing and many |
|
||||||
CD-ROM versions will have been pressed from the first 3.1 releases. |
|
||||||
|
|
||||||
There has been one report of a corrupted system resulting from |
|
||||||
programs accessing these libraries while updating them (not |
|
||||||
altogether surprising). Consequently it is a good idea to reboot |
|
||||||
the system before installing the new libraries and to |
|
||||||
have as little running as possible during this upgrade. Going |
|
||||||
into single-user mode is probably a good idea! |
|
||||||
|
|
||||||
The easiest fix is to obtain the file ldso.tgz from the a4 disk of |
|
||||||
a more recent Slackware distribution and unpack this file |
|
||||||
from the root (/) directory, then do |
|
||||||
|
|
||||||
sh install/doinst.sh |
|
||||||
|
|
||||||
to complete the installation. Follow this with |
|
||||||
|
|
||||||
ldconfig |
|
||||||
|
|
||||||
NOTE! You will have to re-run configure and do a make clean |
|
||||||
after installing the library and before recompiling. |
|
||||||
|
|
||||||
If you want to install manually, you must first install the file |
|
||||||
dlfcn.h in /usr/include. |
|
||||||
|
|
||||||
Second, install the file libdl.so.1.7.14 (or whatever the latest |
|
||||||
release is) in /lib, then do: |
|
||||||
|
|
||||||
cd /lib |
|
||||||
ln -sf libdl.so.1.7.14 libdl.so.1 |
|
||||||
ln -sf libdl.so.1 libdl.so |
|
||||||
|
|
||||||
On some systems (depending on your GCC configuration) it may be |
|
||||||
necessary to do: |
|
||||||
|
|
||||||
cd /usr/lib |
|
||||||
ln -sf /lib/libdl.so . |
|
||||||
|
|
||||||
Finally |
|
||||||
|
|
||||||
ldconfig |
|
||||||
|
|
||||||
NOTE! You will have to re-run configure and do a make clean |
|
||||||
after installing the library and before recompiling. |
|
||||||
|
|
||||||
|
|
||||||
1.5) My compile of the backend dies complaining about the include file |
|
||||||
dlfcn.h missing |
|
||||||
|
|
||||||
See the answer to question 1.3/1.4. Don't forget that if you are using |
|
||||||
an a.out system you must first have installed the dld package |
|
||||||
(which is not supplied with most a.out systems) to have dlfcn.h |
|
||||||
at all. See Question 1.11. |
|
||||||
|
|
||||||
|
|
||||||
1.6) GCC complains about an ignored option -fpic |
|
||||||
|
|
||||||
Earlier versions of GCC accepted either -fpic or -fPIC. |
|
||||||
It appears that more recent versions (V2.7.2?) require -fPIC. |
|
||||||
If you are using an ELF version of Linux, this can safely be |
|
||||||
ignored as -fPIC is the default. |
|
||||||
|
|
||||||
You can correct this by editing src/Makefile.global and |
|
||||||
changing CFLAGS_SL |
|
||||||
|
|
||||||
|
|
||||||
1.7) I get warnings of the form |
|
||||||
warning: cast from pointer to integer of different size |
|
||||||
|
|
||||||
These were seen in earlier versions of Postgres95 and could |
|
||||||
safely be ignored. PostgreSQL V6.0 should compile with no warnings |
|
||||||
except those related to system header files (which can also |
|
||||||
be safely ignored). |
|
||||||
|
|
||||||
1.8) [SuSE-Linux 4.2-4.4] Where is curses and termcap? |
|
||||||
|
|
||||||
SuSE-Linux 4.2 has ncurses but not curses. 4.4 appears to have both. |
|
||||||
SuSE-Linux also has the termcap library is in /usr/lib/termcap |
|
||||||
instead of in /usr/lib. |
|
||||||
|
|
||||||
PostgreSQL (up to V6.0) |
|
||||||
----------------------- |
|
||||||
Set the value of CURSES_LIB in src/Makefile.custom to -lncurses |
|
||||||
(or do this through the customize script). |
|
||||||
Add the following line to src/Makefile.custom: |
|
||||||
|
|
||||||
LDADD_BE+= -L/usr/lib/termcap |
|
||||||
|
|
||||||
You may need to edit src/bin/psql/Makefile and change: |
|
||||||
ifeq ($(PORTNAME), linux) |
|
||||||
LD_ADD+= |
|
||||||
to: |
|
||||||
ifeq ($(PORTNAME), linux) |
|
||||||
LD_ADD+= -ltermcap |
|
||||||
|
|
||||||
PostgreSQL (V6.1) |
|
||||||
----------------- |
|
||||||
The configure script doesn't know to look in /usr/lib/termcap for |
|
||||||
the termcap library, so you should specify this as one of the |
|
||||||
library directories when asked for additional directories to |
|
||||||
search. |
|
||||||
|
|
||||||
If this doesn't work (I don't have SuSE to verify that it does) |
|
||||||
then after running configure, you need to edit |
|
||||||
src/Makefile.global and add -ltermcap to the LDFLAGS line |
|
||||||
(after -lreadline). (Alternatively, you can modify |
|
||||||
src/Makefile.custom before running configure.) |
|
||||||
|
|
||||||
Some versions of SuSE provide only ncurses, so you may need |
|
||||||
to force use of ncurses rather than curses by changing |
|
||||||
-lcurses to -lncurses. (Reported true for SuSE 5.1) |
|
||||||
|
|
||||||
|
|
||||||
1.9) Why do I get problems with ld.so? |
|
||||||
|
|
||||||
If you get problems with ld.so, another library required under |
|
||||||
ELF for dynamic loading, then you have messed up your installation |
|
||||||
or (more likely) upgrade of Linux. |
|
||||||
|
|
||||||
See the answers to Question 1.3/1.4. You may need to install |
|
||||||
ld.so.x.y.z in /lib and run ldconfig. |
|
||||||
|
|
||||||
The most recent stable release of the ld package is 1.7.14 |
|
||||||
At the time of writing, 1.8.x versions of ld are experimental. |
|
||||||
|
|
||||||
1.10) Why do I get `yy_flush_buffer undefined' errors? |
|
||||||
|
|
||||||
This isn't really Linux specific, but is common on older Linux |
|
||||||
installations. You must have a recent version of flex (2.5.2 or later) |
|
||||||
to compile PostgreSQL. Note that flex 2.5.3 has a bug: see |
|
||||||
Question 3.4. |
|
||||||
|
|
||||||
1.11) How do I compile PostgreSQL on an a.out system? |
|
||||||
|
|
||||||
First, you must install the dld library. This may be obtained |
|
||||||
from Sunsite as: |
|
||||||
Linux/libs/dld.3.2.7.tar.gz |
|
||||||
(ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz) |
|
||||||
|
|
||||||
Second, add the following line to src/Makefile.custom: |
|
||||||
LINUX_ELF= |
|
||||||
(or use the customize script) |
|
||||||
|
|
||||||
1.12) Why does make fail with: |
|
||||||
yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y |
|
||||||
make: /usr/bin/make: cannot execute binary file |
|
||||||
|
|
||||||
This was a problem in earlier versions of Postgres95. The default |
|
||||||
for PostgreSQL is to use bison -y rather than yacc. |
|
||||||
|
|
||||||
yacc is generally implemented as a script which invokes bison -y |
|
||||||
For some reason (certain versions of make? certain versions of |
|
||||||
bash?) make is unable to execute this script file. |
|
||||||
|
|
||||||
To correct this, simply edit src/mk/port/postgres.mk.linux |
|
||||||
and, at the end of the file, change: |
|
||||||
# YACC = bison -y |
|
||||||
to |
|
||||||
YACC = bison -y |
|
||||||
|
|
||||||
1.13) What are the references in X11_LIB to libsocket and libnsl in |
|
||||||
src/Makefile.global? |
|
||||||
|
|
||||||
This was a problem in 1.08 (they are Sun Solaris specific). |
|
||||||
It is fixed in 1.09 and 6.0 |
|
||||||
|
|
||||||
1.14) [DEBIAN] Where is libtermcap? |
|
||||||
|
|
||||||
Debian Linux comes without the termcap library and uses ncurses |
|
||||||
(which uses terminfo instead). There is no need to change the |
|
||||||
CURSES_LIB variable in src/bin/psql/Makefile since Debian provides |
|
||||||
a link from libncurses to libcurses (unlike SuSE-Linux --- see |
|
||||||
Question 1.8). |
|
||||||
|
|
||||||
You may need to edit src/bin/psql/Makefile and comment out the |
|
||||||
change: |
|
||||||
ifeq ($(PORTNAME), linux) |
|
||||||
LD_ADD+= -ltermcap |
|
||||||
to: |
|
||||||
ifeq ($(PORTNAME), linux) |
|
||||||
LD_ADD+= |
|
||||||
|
|
||||||
|
|
||||||
1.15) [REDHAT] Can I get PostgreSQL as an RPM? |
|
||||||
|
|
||||||
Yes! Michal Mosiewicz <mimo@lodz.pdi.net> |
|
||||||
(http://www.pdi.lodz.pl/~mimo) has kindly put together an RPM |
|
||||||
for PostgreSQL V6.0 on Intel architectures which he has uploaded to |
|
||||||
ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm |
|
||||||
|
|
||||||
This is a pre-compiled version, the source RPM is on its |
|
||||||
was as I write (3rd Feb 1997). |
|
||||||
|
|
||||||
1.16) While trying to compile a development version under Linux, compilation |
|
||||||
fails with a message like: |
|
||||||
In file included from /usr/include/sys/sem.h:8, |
|
||||||
from ipc.c:37: |
|
||||||
/usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit' |
|
||||||
.... |
|
||||||
make: *** [ipc.o] Error 1 |
|
||||||
|
|
||||||
The problem is that Linux provides no prototypes for these |
|
||||||
inline functions. The solution is to go into the |
|
||||||
.../src/backend/storage/ipc directory and edit the Makefile. |
|
||||||
Change the line |
|
||||||
CFLAGS+=$(INCLUDE_OPT) |
|
||||||
to |
|
||||||
CFLAGS+=$(INCLUDE_OPT) -Wno-error |
|
||||||
|
|
||||||
Do the same in the ../src/backend/storage/lmgr directory. |
|
||||||
|
|
||||||
1.17) When compiling postgres, gcc reports signal 11 and aborts. |
|
||||||
More specifically: |
|
||||||
gcc: Internal compiler error: program cc1 got fatal |
|
||||||
signal 11 |
|
||||||
|
|
||||||
This may be a hardware/memory problem. PortgreSQL is a big |
|
||||||
program, and large gcc compilations (such as building |
|
||||||
PostgreSQL or bebuilding the kernel) stress memory like |
|
||||||
few other programs, resulting in errors that do not occur |
|
||||||
in normal operation. Lesser operating systems are also |
|
||||||
unlikely to stress the hardware to this degree so you |
|
||||||
may never see any problems under DOS/Windows. |
|
||||||
|
|
||||||
More information on this problem at: |
|
||||||
http://www.bitwizard.nl/sig11 |
|
||||||
|
|
||||||
1.18) Can I install 6.1.1 under MkLinux? |
|
||||||
|
|
||||||
Tatsuo Ishii <t-ishii@sra.co.jp> has done this under |
|
||||||
MkLinux DR2.1 update2 after a small patch available from: |
|
||||||
ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz |
|
||||||
|
|
||||||
1.19) Why does make exit or crash? |
|
||||||
|
|
||||||
There have been a couple of reports of gmake either just |
|
||||||
exiting early or seg faulting. The latter problem was reported |
|
||||||
with gmake 3.74 - upgrading to 3.76.1 solved the problem. |
|
||||||
However, 3.74 is known to work fine in other people's setups. |
|
||||||
In short, try upgrading gmake to the latest version you can |
|
||||||
find before reporting this as a problem |
|
||||||
|
|
||||||
1.20) How can I optimise for 486 or pentium processors |
|
||||||
|
|
||||||
The default compiler flags perform no optimisation for 486 |
|
||||||
or Pentium processors. To add such optimisation, edit |
|
||||||
Makefile.custom and add: |
|
||||||
|
|
||||||
CFLAGS+= -m486 |
|
||||||
|
|
||||||
or (for the new compilers that most people are not yet running) |
|
||||||
|
|
||||||
CFLAGS+= -mpentium |
|
||||||
or |
|
||||||
CFLAGS+= -mpentiumpro |
|
||||||
|
|
||||||
---------------------------------------------------------------------- |
|
||||||
Section 2: Compiling accessory programs |
|
||||||
---------------------------------------------------------------------- |
|
||||||
|
|
||||||
2.1) The linker fails to find libX11 when compiling pgtclsh |
|
||||||
|
|
||||||
Add the following to src/Makefile.custom |
|
||||||
X11_LIBDIR = /usr/X11R6/lib |
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------- |
|
||||||
Section 3: Runtime Problems |
|
||||||
---------------------------------------------------------------------- |
|
||||||
|
|
||||||
3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when |
|
||||||
running scripts like createuser |
|
||||||
|
|
||||||
This is a bug in V1.06-V1.07 of Postgres and is fixed in V1.08 |
|
||||||
and above. |
|
||||||
|
|
||||||
3.2) I run postmaster and after that system says 'Bad system call(Core |
|
||||||
dumped)' |
|
||||||
|
|
||||||
This indicates that you have not compiled shared memory support |
|
||||||
into your kernel. You need to recompile the Linux kernel to add this |
|
||||||
feature. |
|
||||||
|
|
||||||
|
|
||||||
3.3) When I try to start the Postmaster, why do I get an error of the form |
|
||||||
Failed Assertion("!(file != 0):(null)", File: |
|
||||||
"/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257) |
|
||||||
!(file != 0) (0) |
|
||||||
initdb: could not create template database |
|
||||||
initdb: cleaning up. |
|
||||||
|
|
||||||
Your permissions on the file /dev/null are wrong. |
|
||||||
|
|
||||||
ls -l /dev/null should give you something like: |
|
||||||
|
|
||||||
crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null |
|
||||||
|
|
||||||
Correct the permissions using: |
|
||||||
|
|
||||||
chmod a+rw /dev/null |
|
||||||
|
|
||||||
3.4) Why doesn't createuser work? |
|
||||||
|
|
||||||
There is a problem with Version 2.5.3 of GNU flex and createuser. |
|
||||||
Your options are to downgrade flex to V2.5.2, upgrade to V2.5.4 |
|
||||||
or apply a patch to V2.5.3 which is supplied in doc/README.flex |
|
||||||
You may obtain V2.5.4 from |
|
||||||
ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz |
|
||||||
|
|
||||||
3.5) Why do I get an error like: |
|
||||||
IpcMemoryCreate: memKey=155356396 , size=760632 , |
|
||||||
permission=384IpcMemoryCreate: shmget(..., create, ...) |
|
||||||
failed: Invalid argument |
|
||||||
|
|
||||||
You haven't build IPC support into your Linux kernel. You |
|
||||||
will have to rebuild the kernel and switch on this option. |
|
||||||
|
|
||||||
3.6) Why does psql fail with: |
|
||||||
psql: can't load library 'libpq.so.1' |
|
||||||
|
|
||||||
Psql has been compiled to link dynamically with the libpq |
|
||||||
library. |
|
||||||
|
|
||||||
To solve this, you should log in as root and edit the file |
|
||||||
/etc/ld.so.conf |
|
||||||
Add a single line at the end which gives the name of the |
|
||||||
PostgreSQL library directory (the lib subdirectory of your |
|
||||||
PostgreSQL installation) and run |
|
||||||
/sbin/ldconfig -v |
|
||||||
|
|
||||||
Alternatively, (and if you don't have root access), you may |
|
||||||
use the LD_LIBRARY_PATH environment variable. |
|
||||||
|
|
||||||
The LD_LIBRARY_PATH variable contains a colon separated list of |
|
||||||
paths to be searched for shared libraries. This list is |
|
||||||
searched before the libraries specified by ldconfig. |
|
||||||
|
|
||||||
Therefore under Bash, you would do something like: |
|
||||||
export LD_LIBRARY_PATH='PathToPGSQL'/lib |
|
||||||
or, using tcsh |
|
||||||
setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib |
|
||||||
replacing 'PathToPGSQL' with the appropriate path to your top level |
|
||||||
PostgreSQL directory |
|
||||||
|
|
||||||
Note that the ldd command can be used on a dynamically linked |
|
||||||
executable to list the paths to all the shared libraries upon |
|
||||||
which the executable depends. |
|
||||||
|
|
||||||
|
|
||||||
3.7) Other strange behaviour |
|
||||||
|
|
||||||
I'm not sure what the symptoms might be except for nothing |
|
||||||
working properly, but it has been pointed out that one needs |
|
||||||
to be careful that the dynamic loader loads the correct version |
|
||||||
of the libpq library. If you have old versions lying around |
|
||||||
in your library path (for example in /usr/lib) these may get |
|
||||||
loaded instead of the new version you intended to load. Make |
|
||||||
sure you get them out of the way and look at Q3.6 for |
|
||||||
details of loading libraries. |
|
||||||
|
|
||||||
3.8) When PostgreSQL is running when the system is shutdown, Linux |
|
||||||
always fsck's the disk when rebooted. |
|
||||||
|
|
||||||
There have been some reports of this happening and it seems |
|
||||||
to be a result of running PostgreSQL from /etc/inittab as |
|
||||||
suggested in the INSTALL document. |
|
||||||
|
|
||||||
You are therefore recommended to start the postmaster from an |
|
||||||
rc script. Under a Slackware-like release, you would modify |
|
||||||
/etc/rc.d/rc.local to start the postmaster. Under a RedHat-like |
|
||||||
release you should create a SysV style script in |
|
||||||
/etc/rc.d/rc3.d based on the /etc/rc.d/init.d skeleton file. |
|
||||||
|
|
||||||
There's a sample file in contrib/linux/postgres.init |
|
||||||
|
|
||||||
Here's another sample file supplied by John Robinson |
|
||||||
<john@intelligent.co.uk> which you should modify as needed: |
|
||||||
|
|
||||||
#!/bin/sh |
|
||||||
# |
|
||||||
# postgreSQL.init This shell script takes care of starting and stopping |
|
||||||
# the PostgreSQL postmaster. |
|
||||||
# |
|
||||||
|
|
||||||
# Source function library. |
|
||||||
. /etc/rc.d/init.d/functions |
|
||||||
|
|
||||||
# Source networking configuration. |
|
||||||
. /etc/sysconfig/network |
|
||||||
|
|
||||||
# Check that networking is up. |
|
||||||
[ ${NETWORKING} = "no" ] && exit 0 |
|
||||||
|
|
||||||
# See how we were called. |
|
||||||
case "$1" in |
|
||||||
start) |
|
||||||
# Start daemons. |
|
||||||
echo -n "Starting postgres Postmaster daemon:" |
|
||||||
if [ -z "`pidofproc postmaster`" ] |
|
||||||
then |
|
||||||
su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &" |
|
||||||
echo -n " postmaster" |
|
||||||
else |
|
||||||
echo -n " (already running)" |
|
||||||
fi |
|
||||||
echo |
|
||||||
touch /var/lock/subsys/postgres |
|
||||||
;; |
|
||||||
stop) |
|
||||||
# Stop daemons. |
|
||||||
echo -n "Shutting down postgres Postmaster daemon: " |
|
||||||
killall -TERM postmaster 2>/dev/null |
|
||||||
killall -TERM postgres 2>/dev/null |
|
||||||
echo |
|
||||||
rm -f /var/lock/subsys/postgres |
|
||||||
;; |
|
||||||
*) |
|
||||||
echo "Usage: postgres {start|stop}" |
|
||||||
exit 1 |
|
||||||
esac |
|
||||||
|
|
||||||
exit 0 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3.9) Why does Query 32 in the regression tests take so long? |
|
||||||
|
|
||||||
This is due to a bug in regression scripts which only happens |
|
||||||
on linux boxes. There are two workarounds as far as I know |
|
||||||
(information from Tatsuo Ishii <t-ishii@sra.co.jp>): |
|
||||||
|
|
||||||
1. change following in regress.sh: |
|
||||||
time postgres -texecutor -tplanner -Q bench < bench.sql |
|
||||||
to: |
|
||||||
postgres -texecutor -tplanner -Q bench < bench.sql |
|
||||||
|
|
||||||
2. after running the test, remove a line at the very end of |
|
||||||
bench.out something like: |
|
||||||
85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k |
|
||||||
then type: |
|
||||||
sh ./perquery < bench.out > & bench.out.perquery |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3.10) Why do I get funny rounding results in some date/time arithmetic, |
|
||||||
such as |
|
||||||
select '4 hours'::timespan; |
|
||||||
returning '3 hours 59 minutes 60 seconds'? |
|
||||||
|
|
||||||
You are running the new glibc2 libraries and have a version earlier than |
|
||||||
2.0.7. It is a math rounding problem in the library. Upgrade your library. |
|
||||||
---------------------------------------------------------------------------- |
|
||||||
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 |
|
||||||
</PRE> |
|
Loading…
Reference in new issue