mirror of https://github.com/postgres/postgres
parent
ed0b3f2d99
commit
09b1576430
@ -1,103 +0,0 @@ |
||||
======================================================= |
||||
Frequently Asked Questions (FAQ) for PostgreSQL V6.4.1 |
||||
FreeBSD Specific |
||||
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
||||
======================================================= |
||||
last updated: Mon Dec 14 17:26:03 CET 1998 |
||||
|
||||
current maintainer: Pedro J. Lobo (pjlobo@euitt.upm.es) |
||||
original author: Pedro J. Lobo (pjlobo@euitt.upm.es) |
||||
|
||||
This FAQ covers issues that are specific for PostgreSQL running on Digital |
||||
Unix (formerly known as DEC OSF/1). Please check the global FAQ for questions |
||||
not specific to this platform. |
||||
|
||||
Changes in this version (* = modified, + = new, - = removed): |
||||
|
||||
This file is divided approximately as follows: |
||||
|
||||
1.*) Installing PostgreSQL |
||||
|
||||
1.1.*) Compiling PostgreSQL |
||||
|
||||
1.2.*) Running the regression tests |
||||
|
||||
|
||||
Questions answered: |
||||
1.1.1) I can't compile PostgreSQL with gcc. |
||||
|
||||
1.1.2) DEC C dies with an internal error when optimization is |
||||
enabled (-O flag). |
||||
|
||||
1.2.1) The regression tests fail for char, varchar, select_implicit, |
||||
select_having and rules. |
||||
|
||||
1.2.2) The regression tests fail for abstime, tinterval and horology. |
||||
|
||||
1.2.3) The regression tests fail for geometry. |
||||
|
||||
1.2.4) The regression tests fail for inet. |
||||
|
||||
---------------------------------------------------------------------- |
||||
Section 1: Installing PostgreSQL |
||||
---------------------------------------------------------------------- |
||||
|
||||
Section 1.1: Compiling PostgreSQL |
||||
------------------------------------ |
||||
|
||||
1.1.1) I can't compile PostgreSQL with gcc. |
||||
|
||||
Me too O:-) I tried to compile it with gcc 2.7.2.1 without |
||||
success. However, I've found that DEC C works much better than |
||||
gcc for alphas, and so I didn't make any effort to find out |
||||
why gcc fails. If you succedd on this task, please take the |
||||
time to update this section (see http://www.postgresql.org for |
||||
the details on how to do this). |
||||
|
||||
1.1.2) The DEC C compiler dies with an internal error when optimization is |
||||
enabled (-O flag). |
||||
|
||||
I've seen this happening on 3.2c and 3.2g systems, and only on |
||||
one of the source files (can't remember exactly which one). |
||||
The workaround was to compile the offending module without |
||||
optimization by hand, and re-running gmake to let the process |
||||
continue. |
||||
|
||||
It doesn't happen on 4.0d systems (mine at least). Don't know |
||||
about earlier 4.0 versions. |
||||
|
||||
Section 1.2: Running the regression tests |
||||
-------------------------------------------- |
||||
|
||||
1.2.1) The regression tests fail for char, varchar, select_implicit, |
||||
select_having and rules. |
||||
|
||||
This only happens when you enable locale support, and is due |
||||
to a bug in the system's locale libraries. The problem is |
||||
that strcoll("Axxx", "axxx") returns a value greater than |
||||
zero instead of lower, which is how it should be. |
||||
|
||||
This isn't a great problem unless you (or your application) |
||||
relies on upper-case letters being considered "smaller" than |
||||
lower-case for ordering purposes. Otherwise, you will only |
||||
notice that the ordering between upper-case and lower-case |
||||
letters is reversed. |
||||
|
||||
1.2.2) The regression tests fail for abstime, tinterval and horology. |
||||
|
||||
I think that these failures are due to some inconsistencies |
||||
in time zone handling in some years near 1950, in which case |
||||
the problem would be in the operating system's time zone |
||||
libraries. Recent dates seem to work as expected, but I can't |
||||
assure it. |
||||
|
||||
1.2.3) The regression tests fail for geometry. |
||||
|
||||
These are (small) rounding errors that shouldn't affect any |
||||
application (but could do, who knows). |
||||
|
||||
1.2.4) The regression tests fail for inet. |
||||
|
||||
Yes, they do. You must consider the inet type broken for |
||||
Digital Unix. |
||||
|
@ -1,36 +0,0 @@ |
||||
======================================================= |
||||
Frequently Asked Questions (FAQ) for PostgreSQL V6.2.1 |
||||
FreeBSD Specific |
||||
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
||||
======================================================= |
||||
last updated: Tue Jan 06 22:26:00 EST 1998 |
||||
|
||||
current maintainer: Marc G. Fournier (scrappy@postgresql.org) |
||||
original author: Marc G. Fournier (scrappy@postgresql.org) |
||||
|
||||
|
||||
Changes in this version (* = modified, + = new, - = removed): |
||||
|
||||
This file is divided approximately as follows: |
||||
1.*) Installing PostgreSQL |
||||
|
||||
|
||||
Questions answered: |
||||
1.1) Everything compiles fine. Attempts to run the regression |
||||
tests make the postmaster die with an illegal system call |
||||
error. |
||||
|
||||
---------------------------------------------------------------------- |
||||
Section 1: Installing PostgreSQL |
||||
---------------------------------------------------------------------- |
||||
|
||||
1.1) Everything compiles fine. Attempts to run the regression |
||||
tests make the postmaster die with an illegal system call |
||||
error. |
||||
|
||||
You must reconfigure and install your kernel with the following |
||||
options enabled: |
||||
|
||||
options SYSVSHM |
||||
options SYSVSEM |
||||
options SYSVMSG |
@ -1,397 +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 () |
||||
|
||||
*** ./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 |
||||
|
||||
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 addressin |
||||
g, |
||||
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 and modified for |
||||
PostgreSQL V6.3 by Lasse Hiller Petersen ) |
||||
|
||||
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,710 +0,0 @@ |
||||
|
||||
======================================================= |
||||
Frequently Asked Questions (FAQ) for PostgreSQL >= V6.1 |
||||
Linux Specific |
||||
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
||||
======================================================= |
||||
last updated: Fri Jun 19 13:35:00 BST 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.23) Why does the compile fail with messages about F_BOOLIN, F_BOOLOUT |
||||
and F_BYTEAIN being undeclared? |
||||
|
||||
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_bi |
||||
t' |
||||
.... |
||||
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 |
||||
1.21) Why do I get strange results with printing times (for example |
||||
in the regression test 'timespan')? |
||||
1.22) Why don't I get any shared libraries for libpq when I compile |
||||
6.3.2? |
||||
1.23) Why does the compile fail with messages about F_BOOLIN, F_BOOLOUT |
||||
and F_BYTEAIN being undeclared? |
||||
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 |
||||
(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_bi |
||||
t' |
||||
.... |
||||
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 |
||||
|
||||
From this Sig11 FAQ, there appears to be a specific problem |
||||
with Redhat 5.0 gcc running on Cyrix processors. See the |
||||
URL above for more details! |
||||
|
||||
1.18) Can I install 6.1.1 under MkLinux? |
||||
|
||||
Tatsuo Ishii 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 |
||||
|
||||
1.21) Why do I get strange results with printing times (for example |
||||
in the regression test 'timespan')? |
||||
The times are appearing as: '4 hours 59 mins 60.00 secs' |
||||
instead of '5 hours' |
||||
|
||||
This is a problem with the glibc2 library which comes with |
||||
Redhat 5.0. Update your glibc to the latest RedHat version |
||||
for v5.0/hurricane. Anything prior to glibc-2.0.7 is likely |
||||
to have the problem. |
||||
|
||||
1.22) Why don't I get any shared libraries for libpq when I compile |
||||
6.3.2? |
||||
|
||||
There was some last minute breakage of the Linux configuration for |
||||
v6.3.2. Look in ftp://postgresql.org/pub/patches/ for a few fix-ups, |
||||
including a linux_elf patch. |
||||
|
||||
1.23) Why does the compile fail with messages about F_BOOLIN, F_BOOLOUT |
||||
and F_BYTEAIN being undeclared? |
||||
|
||||
The actual messages are something like: |
||||
|
||||
-I/usr/include/readline -O2 -Wall -Wmissing-prototypes -I.. |
||||
-Wno-error -c bootstrap.c -o bootstrap.o |
||||
bootstrap.c:160: `F_BOOLIN' undeclared here (not in a function) |
||||
bootstrap.c:160: initializer element for `Procid[0].inproc' is not |
||||
constant |
||||
bootstrap.c:160: `F_BOOLOUT' undeclared here (not in a function) |
||||
bootstrap.c:160: initializer element for `Procid[0].outproc' is not |
||||
constant |
||||
bootstrap.c:161: `F_BYTEAIN' undeclared here (not in a function) |
||||
bootstrap.c:161: initializer element for `Procid[1].inproc' is not |
||||
constant |
||||
|
||||
This is tricky unless you know why it happens, as these constants |
||||
don't seem to be defined anywhere. |
||||
|
||||
The solution is to make sure that cpp is included in your path |
||||
before you start the make. |
||||
|
||||
On Redhat 5.1, cpp is in /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3 |
||||
|
||||
|
||||
|
||||
---------------------------------------------------------------------- |
||||
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 |
||||
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/postgr |
||||
eSQL/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 ): |
||||
|
||||
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 tha |
||||
n |
||||
2.0.7. It is a math rounding problem in the library. Upgrade your libra |
||||
ry. |
||||
---------------------------------------------------------------------------- |
||||
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,752 +0,0 @@ |
||||
|
||||
Häufig gestellte Fragen (FAQ) zu PostgreSQL >= V6.1, Linux-spezifisch |
||||
|
||||
Bitte Zusammen mit der normalen FAQ lesen! |
||||
_________________________________________________________________ |
||||
|
||||
Letztes Update des Originals: Tue Aug 10 11:15:00 BST 1999 |
||||
Original-FAQ gepflegt durch: Andrew C.R. Martin |
||||
(martin@biochem.ucl.ac.uk) |
||||
Original Autor: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) |
||||
|
||||
Letztes Update der Übersetzung: Mo, 23. August 1999, 10:00 CEST |
||||
Übersetzer: Karsten Schulz (schulz@linux-systemhaus.de) |
||||
_________________________________________________________________ |
||||
|
||||
Änderungen in dieser Version (* = geändert, + = neu, - = entfernt) |
||||
|
||||
+3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget |
||||
failed (Permission denied)? |
||||
|
||||
Diese Datei ist ungefähr wie folgt unterteilt: |
||||
|
||||
1.*) PostgreSQL kompilieren |
||||
2.*) Hilfs- und Zusatzprogramme kompilieren |
||||
3.*) Laufzeit Probleme |
||||
|
||||
Beantwortete Fragen: |
||||
|
||||
|
||||
|
||||
PostgreSQL kompilieren |
||||
|
||||
1.1) Welche Anpassungen müssen in src/Makefile.global oder |
||||
src/Makefile.custom gemacht werden und gibt es weitere notwendige |
||||
Änderungen? |
||||
1.2) Warum habe ich Probleme mit der fehlenden Bibliothek libreadline? |
||||
1.3) [REDHAT] Warum habe ich Probleme mit der fehlenden Bibliothek |
||||
libdl und der fehlenden dlfcn.h? |
||||
1.4) [SLACKWARE 3.1] Warum habe ich Probleme mit der fehlenden |
||||
Bibliothek libdl und der fehlenden dlfcn.h? |
||||
1.5) Die Kompilierung des Backends schlägt mit der Meldung fehl, daß |
||||
die Include-Datei dlfcn.h fehlen würde. |
||||
1.6) GCC meldet, daß er die Option -fpic ignorieren würde. |
||||
1.7) Ich bekomme Warnungen, wie: warning: cast from pointer to integer |
||||
of different size |
||||
1.8) [SuSE-Linux 4.2-5.3] Wo sind curses und termcap? |
||||
1.9) Warum bekomme ich Probleme mit ld.so? |
||||
1.10) Wieso bekomme ich yy_flush_buffer undefined Fehler? |
||||
1.11) Wie kompiliere ich PostgreSQL auf einem a.out System? |
||||
1.12) Warum scheitert make mit der Meldung: |
||||
yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y make: |
||||
/usr/bin/make: cannot execute binary file |
||||
1.13) Was sind die Bezüge in der Bibliothek X11_LIB zu libsocket und |
||||
libnsl in der Datei src/Makefile.global? |
||||
1.14) [DEBIAN] Wo ist die Bibliothek libtermcap? |
||||
1.15) [REDHAT] Kann ich PostgreSQL als RPM-Archiv bekommen? |
||||
1.16) Während ich versuche eine Entwickler-Version unter Linux zu |
||||
kompilieren, bricht der Vorgang mit folgender Fehlermeldung ab: |
||||
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) Beim Kompilieren von PostgreSQL bricht der gcc mit einer Signal |
||||
11 Meldung ab. |
||||
1.18) Kann ich Version 6.1.1 unter MkLinux installieren? |
||||
1.19) Warum stoppt make oder bricht sonstwie ab? |
||||
1.20) Wie kann ich für die Prozessoren 486 oder Pentium optimieren? |
||||
1.21) Wieso bekomme ich seltsame Ergebnisse beim Drucken von Zeiten |
||||
(z.B. beim Regressionstest 'timespan')? |
||||
1.22) Warum bekomme ich keine shared libraries für libpq, wenn ich |
||||
Version 6.3.2 kompiliere? |
||||
1.23) Warum scheitert der Kompilierungslauf mit Nachrichten, daß |
||||
F_BOOLIN, F_BOOLOUT und F_BYTEAIN nicht deklariert seien? |
||||
|
||||
|
||||
Hilfs- und Zusatzprogramme kompilieren |
||||
|
||||
2.1) Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh |
||||
kompiliert werden soll. |
||||
|
||||
|
||||
Laufzeit Probleme |
||||
|
||||
3.1) Ich bekomme die Fehlermeldung _fUnKy_POSTPORT_sTuFf_ undefined, |
||||
wenn Skripts wie createuser laufen. |
||||
3.2) Nachdem ich postmaster starte, meldet das System Bad system call |
||||
(Core dumped) |
||||
3.3) Wenn ich versuche, den Postmaster zu starten, bekomme ich eine |
||||
Fehlermeldung wie: |
||||
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) Warum funktioniert createuser nicht? |
||||
3.5) Wieso bekomme ich einen Fehler, wie: |
||||
IpcMemoryCreate: memKey=155356396 , size=760632 , |
||||
permission=384IpcMemoryCreate: shmget(..., create, ...) |
||||
failed: Invalid argument |
||||
3.6) Wieso scheitert der Aufruf von psql mit: psql: can't load library |
||||
'libpq.so.1 |
||||
3.7) Andere seltsame Verhaltensweisen |
||||
3.8) Wenn PostgreSQL beim Systemhalt lief, führt Linux beim Neustart |
||||
jedesmal einen Filesystemcheck (fsck) durch |
||||
3.9) Warum dauert Query 32 in den RegressionsTests so lange? |
||||
3.10) Warum bekomme ich lustige Rundungsergebnisse in einigen |
||||
Datums/Zeit-Berechnungen, wie: |
||||
select '4 hours'::timespan; |
||||
liefert '3 hours 59 minutes 60 seconds'? |
||||
+3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget |
||||
failed (Permission denied)? |
||||
|
||||
Abschnitt 1: PostgreSQL kompilieren |
||||
|
||||
1.1) Welche Anpassungen müssen in src/Makefile.global oder |
||||
src/Makefile.custom gemacht werden und gibt es weitere notwendige |
||||
Änderungen? |
||||
|
||||
Änderungen an den Makefiles werden am einfachsten dadurch gemacht, |
||||
indem das customize shellscript im src-Verzeichnis aufgerufen wird, |
||||
das ein Makefile.custom erzeugt. |
||||
|
||||
Die einzige andere Änderung, die evtl. zu machen wäre, ist Flex zu |
||||
ersetzen, wenn Du die Version 2.5.3 hast. Diese Version hat einen |
||||
Fehler, der sich durch das Scheitern des createuser-Programms äußert. |
||||
(siehe dazu auch Frage 3.4). |
||||
|
||||
Falls Du die Makefiles manuell änderst, musst Du die folgende Variable |
||||
setzen: |
||||
PORTNAME= linux |
||||
|
||||
Du musst auch die folgende Variable ändern, damit sie auf Deine |
||||
Installation passt: |
||||
POSTGRESDIR |
||||
|
||||
Falls Du die USE_TCL-Option aktivierst, musst Du folgende Variablen |
||||
setzen: |
||||
TCL_INCDIR= |
||||
TCL_LIBDIR= |
||||
TCL_LIB= |
||||
TK_INCDIR= |
||||
TK_LIBDIR= |
||||
TK_LIB= |
||||
X11_INCDIR= |
||||
X11_LIBDIR= |
||||
X11_LIB= |
||||
|
||||
Auf meinem Slackware 3.0 System sind das: |
||||
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 |
||||
|
||||
Du solltest auch alle weiteren Änderungen durchführen, die in der |
||||
Datei INSTALL und in Makefile.global dokumentiert sind. |
||||
|
||||
1.2) Warum habe ich Probleme mit der fehlenden Bibliothek libreadline? |
||||
|
||||
Linux Systeme kommen in der Regel nicht mit einer installierten GNU |
||||
readline Bibliothek. Stelle entweder sicher, daß Du die |
||||
readline-Optionen in src/Makefile.global oder src/Makefile.custom |
||||
nicht aktivierst oder installiere die GNU readline Bibliothek. |
||||
Hinweis: Debian Linux (wie FreeBSD) kommt mit einer installierten GNU |
||||
readline Bibliothek. |
||||
|
||||
1.3) [REDHAT] Warum habe ich Probleme mit der fehlenden Bibliothek libdl |
||||
und der fehlenden dlfcn.h? |
||||
|
||||
Das Problem erscheint dadurch, daß in der letzten Phase des |
||||
Kompilierungsvorgangs Funktionen wie dlopen(), dlclose(), etc. nicht |
||||
gelinkt werden können. |
||||
|
||||
Die libdl Bibliothek wird zum dynamischen Linken von |
||||
Benutzerfunktionen zur Laufzeit benutzt. Aus irgendwelchen Gründen |
||||
wurde diese Bibliothek mit der RedHat-Distribution nicht ausgeliefert. |
||||
Anscheinend ist dies in der letzten RedHat 4.0 (Colgate) geändert |
||||
worden. |
||||
|
||||
RedHat hat nun ein neues ld.so RPM-Archiv auf ihrem ftp-Server. Hole |
||||
Dir einfach: |
||||
|
||||
ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4. |
||||
i386.rpm |
||||
|
||||
Installiere das RPM-Archiv wie üblich und gut ist! |
||||
|
||||
Hinweis: Du mußt configure und make clean nach der Installation der |
||||
Bibliothek und vor dem erneuten Kompilieren laufen lassen. |
||||
|
||||
Es gab einen Bericht über ein zerstörtes System, weil Programme auf |
||||
diese Bibliothek während des Updates zugegriffen haben (alles in allem |
||||
nicht weiter überraschend). Konsequenterweise ist es eine gute Idee, |
||||
das System vor der Installation zu rebooten, um so wenige Programme |
||||
wie möglich während des Updates laufen zu haben. In den |
||||
Single-User-Mode zu gehen ist wahrscheinlich auch eine gute Idee! |
||||
|
||||
Wenn Du lieber den harten Weg gehen willst, kannst Du die Bibliothek |
||||
und die Header-Dateien von: |
||||
|
||||
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz |
||||
|
||||
holen. Alternativ findest Du vorkompilierte Binaries in |
||||
distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb auf dem |
||||
gleichen ftp-Server oder folge den Instruktionen bei Frage 1.2, die |
||||
den gleichen Fehler für Slackware 3.1 behandelt. |
||||
|
||||
Mache es aber nur auf diese Weise, wenn Du weißt, was Du tust! |
||||
|
||||
1.4) [SLACKWARE 3.1] Warum habe ich Probleme mit der fehlenden Bibliothek |
||||
libdl und der fehlenden dlfcn.h? |
||||
|
||||
Das Problem erscheint dadurch, daß in der letzten Phase des |
||||
Kompilierungsvorgangs Funktionen wie dlopen(), dlclose(), etc. nicht |
||||
gelinkt werden können. |
||||
|
||||
Siehe die Antwort zu Frage 1.3. |
||||
|
||||
Slackware bis Version 3.0 war mit dieser Bibliothek und der |
||||
Include-Datei ausgestattet und ab späten 3.1er-Versionen scheinen sie |
||||
auch wieder da zu sein. Aber in frühen 3.1er-Versionen (vor dem |
||||
09.09.96) fehlten sie und es wurden viele CD-ROMs von diesen ersten |
||||
3.1.er-Versionen gepresst. |
||||
|
||||
Es gab einen Bericht über ein zerstörtes System, weil Programme auf |
||||
diese Bibliothek während des Updates zugegriffen haben (alles in allem |
||||
nicht weiter überraschend). Konsequenterweise ist es eine gute Idee, |
||||
das System vor der Installation zu rebooten, um so wenige Programme |
||||
wie möglich während des Updates laufen zu haben. In den |
||||
Single-User-Mode zu gehen ist wahrscheinlich auch eine gute Idee! |
||||
|
||||
Der einfachste Weg, den Fehler zu beseitigen ist, die Datei ldso.tgz |
||||
von der a4-Diskette einer aktuelleren Slackware zu nehmen, diese Datei |
||||
im Wurzelverzeichnis (/) zu entpacken und dann ein |
||||
sh install/doinst.sh |
||||
|
||||
durchzuführen. Danach ein |
||||
ldconfig |
||||
|
||||
durchführen. |
||||
|
||||
Hinweis: Du mußt configure und make clean nach der Installation der |
||||
Bibliothek und vor dem erneuten Kompilieren laufen lassen. |
||||
|
||||
Falls Du manuell installieren möchtest, installiere zuerst die Datei |
||||
dlfcn.h in /usr/include. Dann die libdl.so.1.7.14 (oder was immer die |
||||
letzte Version ist) in /lib. Dann führe folgende Befehle aus: |
||||
cd /lib |
||||
ln -sf libdl.so.1.7.14 libdl.so.1 |
||||
ln -sf libdl.so.1 libdl.so |
||||
|
||||
Auf manchen Systemen (je nach Deiner gcc-Konfiguration) können noch |
||||
folgende Befehle notwendig sein: |
||||
cd /usr/lib |
||||
ln -sf /lib/libdl.so . |
||||
|
||||
Und zum Schluß noch ein |
||||
ldconfig |
||||
|
||||
Hinweis: Du mußt configure und make clean nach der Installation der |
||||
Bibliothek und vor dem erneuten Kompilieren laufen lassen. |
||||
|
||||
1.5) Die Kompilierung des Backends schlägt mit der Meldung fehl, daß die |
||||
Include-Datei dlfcn.h fehlen würde. |
||||
|
||||
Siehe die Antworten zu den Fragen 1.3 und 1.4. Und vergiss nicht, |
||||
falls Du ein a.out-System benutzt, daß Du das dld-Paket installiert |
||||
haben muß (welches bei den meisten a.out-Systemen nicht dabei ist), um |
||||
dlfcn.h zu haben. Siehe Frage 1.11. |
||||
|
||||
1.6) GCC meldet, daß er die Option -fpic ignorieren würde. |
||||
|
||||
Frühere Versionen des gcc nahmen entweder -fpic oder -fPIC an. Es |
||||
scheint, daß neuere Versionen (V2.7.2?) -fPIC erfordern. Falls Du ein |
||||
ELF-System benutzt, kannst das alles ignoriert werden, da -fPIC als |
||||
Standardvorgabe voreingestellt ist. Du kannst diese Angabe |
||||
korrigieren, indem Du CFLAGS_SL in der Datei src/Makefile.global |
||||
änderst. |
||||
|
||||
1.7) Ich bekomme Warnungen, wie: warning: cast from pointer to integer of |
||||
different size |
||||
|
||||
Diese Warnungen wurden in früheren Versionen von Postgres95 gesichtet |
||||
und können ignoriert werden. PostgreSQL V6.0 sollte ohne Warnungen |
||||
kompiliert werden, außer jenen, die sich auf System-Header-Dateien |
||||
beziehen (welche auch ignoriert werden können). |
||||
|
||||
1.8) [SuSE-Linux 4.2-5.3] Wo sind curses und termcap? |
||||
|
||||
SuSE-Linux 4.2 hat ncurses, nicht curses. Version 4.4 scheint beide |
||||
Bibliotheken zu haben. Bei SuSE-Linux ist außerdem die |
||||
termcap-Bibliothek in /usr/lib/termcap/ und nicht in /usr/lib. |
||||
|
||||
PostgreSQL (bis Version V6.0) |
||||
|
||||
Setze den Wert für CURSES_LIB in src/Makefile.custom auf -lncurses |
||||
(oder erledige das durch das customize script. Füge folgende Zeile zur |
||||
Datei src/Makefile.custom hinzu: |
||||
LDADD_BE+= -L/usr/lib/termcap |
||||
|
||||
Möglicherweise mußt Du in der Datei src/bin/psql/Makefile folgende |
||||
Änderung durchführen: |
||||
ifeq ($(PORTNAME), linux) |
||||
LD_ADD+= |
||||
|
||||
ändern in: |
||||
ifeq ($(PORTNAME), linux) |
||||
LD_ADD+= -ltermcap |
||||
|
||||
PostgreSQL (V6.1) |
||||
|
||||
Das Konfigurationsscript weiß nicht, daß es auch in /usr/lib/termcap |
||||
nach der termcap-Bibliothek schauen soll. Du solltest dieses |
||||
Verzeichnis angeben, wenn es nach zusätzlichen Such-Verzeichnissen |
||||
fragt. |
||||
|
||||
Falls das nicht funkitoniert (Ich habe SuSE nicht, um das zu testen), |
||||
dann solltest Du nach dem ./configure-Lauf die Datei |
||||
src/Makefile.global ändern und in die LDFLAGS-Zeile den Eintrag |
||||
-ltermcap (nach -lreadline) hinzufügen. (Alternativ kannst Du auch die |
||||
Datei src/Makefile.custom ändern, bevor Du ./configure aufrufst.) |
||||
|
||||
Einige SuSE-Versionen liefern nur ncurses, deshalb kann es sein, daß |
||||
Du die Benutzung von ncurses statt curses erzwingen mußt, indem Du |
||||
-lcurses in -lncurses änderst. (bestätigt für SuSE 5.1) |
||||
|
||||
PostgreSQL (V6.4) |
||||
|
||||
In PostgreSQL V6.4 überprüft configure sowohl das Vorhandensein von |
||||
curses, als auch das von ncurses. In der Zwischenzeit kannst Du den |
||||
patch von Karl Eichwalder (ke@suse.de) anwenden: |
||||
|
||||
http://www.PostgreSQL.ORG/mhonarc/pgsql-patches/msg00407.html |
||||
oder (mit deutschen Bemerkungen): |
||||
http://www.suse.de/Support/sdb/ke_postgresql-632.html |
||||
|
||||
Es gab außerdem einen Bericht, daß beim Update von SuSE 5.0 auf SuSE |
||||
5.2 der Link von libtermcap.so.2.0.8 auf libtermcap.so nicht gesetzt |
||||
wurde: |
||||
cd /usr/lib |
||||
ln -s libtermcap.so.2.0.8 libtermcap.so |
||||
|
||||
1.9) Warum bekomme ich Probleme mit ld.so? |
||||
|
||||
Falls Du Probleme mit ld.so bekommst - eine andere Bibliothek, die im |
||||
ELF-System für dynamisches Laden benötigt wird - dann hast Du Deine |
||||
Systeminstallation oder wahrscheinlicher ein Linux-Update |
||||
durcheinandergebracht Siehe die Fragen 1.3/1.4. Möglicherweise mußt Du |
||||
ld.so.x.y.z in /lib installieren und ldconfig laufen lassen. Die |
||||
aktuellste Version des ld-Packages ist 1.7.14. Zum Zeitpunkt des |
||||
Schreibens dieser FAQ ist die Version 1.8 noch experimental. |
||||
|
||||
1.10) Wieso bekomme ich yy_flush_buffer undefined Fehler? |
||||
|
||||
Das ist nicht wirklich Linux-spezifisch, aber es tritt häufiger auf |
||||
alten Linux-Systemen auf. Du brauchst eine aktuelle Version von flex |
||||
(2.5.2. oder neuer), um PostgreSQL zu kompilieren. Beachte, daß flex |
||||
2.5.3. einen Bug hat, siehe auch Frage 3.4. |
||||
|
||||
1.11) Wie kompiliere ich PostgreSQL auf einem a.out System? |
||||
|
||||
Als erstes mußt Du die dld-Bibliothek installieren. Diese gibt es auf |
||||
Sunsite unter Linux/libs/dld.3.2.7.tar.gz |
||||
(ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz). |
||||
|
||||
Dann füge folgende Zeile in src/Makefile.custom hinzu: |
||||
LINUX_ELF= |
||||
|
||||
oder benutze das customize Skript |
||||
|
||||
1.12) Warum scheitert make mit der Meldung: |
||||
yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y make: /usr/bin/make: |
||||
cannot execute binary file |
||||
|
||||
Das war ein Problem in frühreren Versionen von Postgres95. |
||||
Standardmäßig benutzt PostgreSQL bison -y anstatt yacc. |
||||
|
||||
yacc ist normalerweise als Skript implementiert, das bison -y aufruft. |
||||
Aus verschiedenen Gründen ist make nicht in der Lage, das Skript |
||||
auszuführen (verschiedene Versionen von make? Verschiedene Versionen |
||||
der bash?) |
||||
|
||||
Um das zu beheben, ändere einfach die Datei |
||||
src/mk/port/postgres.mk.linux am Ende. Die Zeile: |
||||
# YACC = bison -y |
||||
|
||||
wird zu: |
||||
YACC = bison -y |
||||
|
||||
1.13) Was sind die Bezüge in der Bibliothek X11_LIB zu libsocket und libnsl |
||||
in der Datei src/Makefile.global? |
||||
|
||||
Das war ein Problem in Version 1.08 (Sun Solaris spezifisch). Sie sind |
||||
behoben in 1.09 und 6.0 |
||||
|
||||
1.14) [DEBIAN] Wo ist die Bibliothek libtermcap? |
||||
|
||||
Debian Linux kommt ohne die termcap-Bibliothek und benutzt ncurses |
||||
(welche terminfo benutzt). Es gibt keinen Grund, die |
||||
CURSES_LIB-Variable in src/bin/psql/Makefile zu ändern, da Debian |
||||
einen Link von libncurses auf libcurses bereitstellt (im Gegensatz zu |
||||
SuSE, siehe Frage 1.8) |
||||
|
||||
Du kannst die Datei src/bin/psql/Makefile wie folgt ändern: |
||||
ifeq ($(PORTNAME), linux) |
||||
LD_ADD+= -ltermcap |
||||
|
||||
in |
||||
ifeq ($(PORTNAME), linux) |
||||
LD_ADD+= |
||||
|
||||
|
||||
1.15) [REDHAT] Kann ich PostgreSQL als RPM-Archiv bekommen? |
||||
|
||||
Ja! Michal Mosiewicz (http://www.pdi.lodz.pl/~mimo) hat ein RPM für |
||||
PostgreSQL V6.0 auf Intel Architekturen zusammengestellt, welches er |
||||
nach ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm |
||||
hochgeladen hat. |
||||
|
||||
Das ist eine vorkompilierte Version, das Quelltext-RPM stammt vom |
||||
03.02.1997. |
||||
|
||||
1.16) Während ich versuche eine Entwickler-Version unter Linux zu |
||||
kompilieren, bricht der Vorgang mit folgender Fehlermeldung ab: |
||||
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 |
||||
|
||||
Das Problem ist, daß Linux keine Prototypen für diese |
||||
Inline-Funktionen bereithält. Die Lösung liegt darin, das Makefile in |
||||
.../src/backend/storage/ipc/ zu ändern: Ändere die Zeile: |
||||
CFLAGS+=$(INCLUDE_OPT) |
||||
|
||||
in |
||||
CFLAGS+=$(INCLUDE_OPT) -Wno-error |
||||
|
||||
Mache dasselbe dann im ../src/backend/storage/lmgr Verzeichnis. |
||||
|
||||
1.17) Beim Kompilieren von PostgreSQL bricht der gcc mit einer Signal 11 |
||||
Meldung ab. |
||||
|
||||
Oder genauer: gcc: Internal compiler error: program cc1 got fatal |
||||
signal 11 |
||||
|
||||
Das können Hardware/Speicherprobleme sein. PostgreSQL ist ein großes |
||||
Programm und große gcc-Kompilierungsläfe (wie eben PostgreSQL oder |
||||
eine Kernel-Kompilierung) beanspruchen den Hauptspeicher wie wenig |
||||
andere Programme. Dadurch können Fehler auftreten, die in normalen |
||||
Situationen nicht erscheinen. Niedrigere Betriebssysteme beanspruchen |
||||
die Hardware ebenfalls nicht in diesem Maße, deshalb kann es sein, daß |
||||
Du niemals Probleme unter DOS/Windows siehst. |
||||
|
||||
Mehr Information zu diesem Problem gibt es unter |
||||
http://www.BitWizard.nl/sig11/ und in deutsch unter |
||||
http://www.suse.de/sdb/de/html/kfr_58.html. |
||||
|
||||
Laut dieser Sig11-FAQ scheint es ein spezielles Problem mit dem RedHat |
||||
5.0 gcc auf einem Cyrix-Prozessor zu geben. Siehe bitte dort nach den |
||||
Details nach. |
||||
|
||||
1.18) Kann ich Version 6.1.1 unter MkLinux installieren? |
||||
|
||||
Tatsuo Ishii hat das unter MkLinux DR2.1 update2 geschafft, nachdem |
||||
der kleine Patch von |
||||
ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz |
||||
eingespielt wurde. |
||||
|
||||
1.19) Warum stoppt make oder bricht sonstwie ab? |
||||
|
||||
Es gibt eine Reihe von Reports darüber, daß gmake zu früh aussteigt |
||||
oder mit einem Segmentation Fault aussteigt. Das letzte Problem wurde |
||||
von gmake 3.74 berichtet. Ein Update auf 3.76.1 löste dieses Problem. |
||||
Wie auch immer, 3.74 arbeitet bei vielen Leuten zur vollsten |
||||
Zufriedenheit. Kurz gesagt, upgrade Deinen gmake auf die aktuellste |
||||
Version, bevor Du dieses Problem meldest. |
||||
|
||||
1.20) Wie kann ich für die Prozessoren 486 oder Pentium optimieren? |
||||
|
||||
Die Standard-Compilerflags führen keine Optimierung für den 486er oder |
||||
den Pentium-Prozessor durch. Um diese Optimierung zu aktivieren, füge |
||||
wahlweise eine der folgenden Zeilen der Datei Makefile.custom hinzu: |
||||
CFLAGS+= -m486 |
||||
|
||||
oder |
||||
CFLAGS+= -mpentium |
||||
|
||||
oder |
||||
CFLAGS+= -mpentiumpro |
||||
|
||||
1.21) Wieso bekomme ich seltsame Ergebnisse beim Drucken von Zeiten (z.B. |
||||
beim Regressionstest 'timespan')? |
||||
|
||||
Die Zeit erscheint z.B. als: "4 hours 59 mins 60.00 secs" und nicht |
||||
als "5 hours" |
||||
|
||||
Das ist ein Problem mit der glibc2-Bibliothek, die mit RedHat 5.0 |
||||
ausgeliefert wird. Update Deine glibc auf die aktuellste |
||||
RedHat-Version für v5.0/Hurricane. Alle Versionen vor glibc-2.9.7 |
||||
scheinen dieses Problem zu haben. |
||||
|
||||
1.22) Warum bekomme ich keine shared libraries für libpq, wenn ich Version |
||||
6.3.2 kompiliere? |
||||
|
||||
Es gab eine Last-Minute-Änderung der Linux-Konfiguration für Version |
||||
6.3.2. Siehe für einige Fehlerbehebungen und einen Linux-ELF-Patch in |
||||
ftp://postgresql.org/pub/patches/ nach. |
||||
|
||||
1.23) Warum scheitert der Kompilierungslauf mit Nachrichten, daß F_BOOLIN, |
||||
F_BOOLOUT und F_BYTEAIN nicht deklariert seien? |
||||
|
||||
Die komplette Meldung sieht ungefähr so aus: |
||||
-I/usr/include/readline -O2 -Wall -Wmissing-prototypes -I.. |
||||
-Wno-error -c bootstrap.c -o bootstrap.o |
||||
bootstrap.c:160: `F_BOOLIN' undeclared here (not in a function) |
||||
bootstrap.c:160: initializer element for `Procid[0].inproc' is not |
||||
constant |
||||
bootstrap.c:160: `F_BOOLOUT' undeclared here (not in a function) |
||||
bootstrap.c:160: initializer element for `Procid[0].outproc' is not |
||||
constant |
||||
bootstrap.c:161: `F_BYTEAIN' undeclared here (not in a function) |
||||
bootstrap.c:161: initializer element for `Procid[1].inproc' is not |
||||
constant |
||||
|
||||
Solange Du nicht weißt, warum das passiert, ist dieses Problem |
||||
ziemlich kniffelig, da diese Konstanten anscheinend nirgendwo |
||||
definiert werden. |
||||
|
||||
Die Lösung ist dafür zu sorgen, daß der cpp in Deinem Pfad erreichbar |
||||
ist, bevor make gestartet wird. |
||||
|
||||
Auf Redhat 5.1, ist cpp in /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3 |
||||
|
||||
Abschnitt 2: Hilfs- und Zusatzprogramme kompilieren |
||||
|
||||
2.1) Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh kompiliert |
||||
werden soll. |
||||
|
||||
Füge folgende Zeile in src/Makefile.custom hinzu: |
||||
X11_LIBDIR = /usr/X11R6/lib |
||||
|
||||
Abschnitt 3: Laufzeit Probleme |
||||
|
||||
3.1) Ich bekomme die Fehlermeldung _fUnKy_POSTPORT_sTuFf_ undefined, wenn |
||||
Skripts wie createuser laufen. |
||||
|
||||
Das ist ein Fehler in Versionen 1.06-1.07 und ist ab Version 1.08 und |
||||
höher behoben. |
||||
|
||||
3.2) Nachdem ich postmaster starte, meldet das System Bad system call (Core |
||||
dumped) |
||||
|
||||
Diese Fehlermeldung deutet an, daß Du keinen Shared-Memory-Support in |
||||
den Kernel einkompiliert hast. Der Kernel muß mit dieser Option neu |
||||
kompiliert werden, um diese Eigenschaft hinzuzufügen. |
||||
|
||||
3.3) Wenn ich versuche, den Postmaster zu starten, bekomme ich eine |
||||
Fehlermeldung wie: |
||||
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. |
||||
|
||||
Deine Berechtigungen für die Datei /dev/null sind falsch gesetzt. ein |
||||
ls -l /dev/null sollte folgende Ausgabe zeigen: |
||||
crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null |
||||
|
||||
Korrigiere die Berechtigungen mit: |
||||
chmod a+rw /dev/null |
||||
|
||||
3.4) Warum funktioniert createuser nicht? |
||||
|
||||
Es gibt ein Problem mit Version 2.5.3 des GNU flex und createuser. Die |
||||
Möglichkeiten, diesen Fehler zu beheben sind: Entweder auf die |
||||
flex-Version 2.5.3 zu gehen, auf Version 2.5.4 zu gehen, oder den |
||||
Patch nach doc/README.flex einzuspielen. |
||||
|
||||
Die Version 2.5.4. gibt es unter |
||||
ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz. |
||||
|
||||
3.5) Wieso bekomme ich einen Fehler, wie: |
||||
IpcMemoryCreate: memKey=155356396 , size=760632 , |
||||
permission=384IpcMemoryCreate: shmget(..., create, ...) |
||||
failed: Invalid argument |
||||
|
||||
Du hast keine IPC-Unterstützung in Deinen Linux-Kernel einkompiliert. |
||||
Der Kernel muß mit dieser Option neu kompiliert werden, um diese |
||||
Eigenschaft hinzuzufügen. |
||||
|
||||
3.6) Wieso scheitert der Aufruf von psql mit: psql: can't load library |
||||
'libpq.so.1 |
||||
|
||||
Psql wurde mit dynamischen Zugriff auf die libpq-bibliothek |
||||
kompiliert. Um dieses Problem zu lösen, solltest Du Dich als root |
||||
anmelden und die Datei /etc/ld.so.conf editieren. Füge eine Zeile am |
||||
Ende hinzu, die den Namen des PostgreSQL-Bibliotheken-Verzeichnis |
||||
enthält (das lib-Verzeichnis im PostgreSQL-Installationsverzeichnis) |
||||
und rufe den Befehl /sbin/ldconfig -v auf. Alternativ (und falls Du |
||||
keinen root-Zugriff hast) kannst Du die LD_LIBRARY_PATH-Variable |
||||
benutzen. Die LD_LIBRARY_PATH-Variable enthält eine durch Doppelpunkt |
||||
getrennte Liste mit Suchpfaden für Shared-Bibliotheken. Diese Liste |
||||
wird durchsucht, bevor auf die Informationen von ldconfig zugegriffen |
||||
wird. Unter der bash sieht das ganze so aus: |
||||
export LD_LIBRARY_PATH='PathToPGSQL'/lib |
||||
|
||||
unter der tcsh so: |
||||
setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib |
||||
|
||||
wobei 'PathToPGSQL' das Installationsverzeichnis von PostgreSQL ist. |
||||
Hinweis: der ldd-Befehl dient dazu, sich die dynamischen Bibliotheken |
||||
für eine bestimmte ausführbare Datei anzeigen zu lassen. |
||||
|
||||
3.7) Andere seltsame Verhaltensweisen |
||||
|
||||
Ich bin mir nicht sicher, welche Symptome alle auftreten können, außer |
||||
daß gar nichts richtig funktioniert, aber es stellte sich heraus, daß |
||||
man sorgsam darauf achten sollte, daß die richtige Version der |
||||
libpq-Bibliothek geladen wird. Falls Du alte Versionen in Deinem |
||||
Bibliothekspfad hast (z.B. in /usr/lib) können diese statt der neueren |
||||
Version geladen werden. Schaffe diese alten Versionen beiseite und |
||||
siehe im übrigen Frage 3.6 für weitere Details bezüglich dem Laden von |
||||
Bibliotheken. |
||||
|
||||
3.8) Wenn PostgreSQL beim Systemhalt lief, führt Linux beim Neustart |
||||
jedesmal einen Filesystemcheck (fsck) durch |
||||
|
||||
Es gab darüber einige Berichte und es scheint, daß dies passiert, wenn |
||||
PostgreSQL von der /etc/inittab gestartet wird, wie im |
||||
INSTALL-Dokument beschrieben. |
||||
|
||||
Deshalb wird Dir empfohlen, den postmaster von einem rc-Skript aus zu |
||||
starten. Unter einem Slackware-artigem System würdest Du |
||||
/etc/rc.d/rc.local modifizieren, um den postmaster zu starten. |
||||
|
||||
Unter RedHat-artigen Systemen würdest Du ein SysV-artiges Skript in |
||||
/etc/rc.d/rc3.d basierend auf der /etc/rc.d/init.d Schablonen-Datei |
||||
erstellen. |
||||
|
||||
Es gibt eine Beispieldatei unter dem Verzeichnis |
||||
contrib/linux/postgres.init. |
||||
|
||||
Hier ist noch ein anderes Beispiel von John Robinson welches Du |
||||
entsprechend anpassen kannst. |
||||
#!/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/postgr |
||||
eSQL/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) Warum dauert Query 32 in den RegressionsTests so lange? |
||||
|
||||
Das passiert wegen eines Fehlers in den Regressions-Skripten auf |
||||
Linux-Kisten. Es gibt - soweit ich weiß - zwei Möglichkeiten, diese |
||||
Fehler zu umgehen (die Information stammt von Tatsuo Ishii): |
||||
|
||||
1. ändere folgende Zeile in regress.sh: |
||||
time postgres -texecutor -tplanner -Q bench < bench.sql |
||||
|
||||
in |
||||
postgres -texecutor -tplanner -Q bench < bench.sql |
||||
|
||||
2. nachdem der Test gelaufen ist, entferne eine Zeile ganz am Ende der |
||||
Datei bench.out, die ungefähr so aussieht: |
||||
85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k |
||||
|
||||
dann gib folgendes auf der Befehlszeile ein: |
||||
sh ./perquery < bench.out > & bench.out.perquery |
||||
|
||||
3.10) Warum bekomme ich lustige Rundungsergebnisse in einigen |
||||
Datums/Zeit-Berechnungen, wie: |
||||
select '4 hours'::timespan; |
||||
liefert '3 hours 59 minutes 60 seconds'? |
||||
|
||||
Du benutzt neue glibc2-Bibliotheken in einer Version kleiner als |
||||
2.0.7. Das ist ein mathematisches Rundungsproblem. Aktualisiere Deine |
||||
Bibliothek. |
||||
|
||||
3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget failed |
||||
(Permission denied)? |
||||
|
||||
Im Detail erscheint der Fehler mit dieser Meldung: |
||||
In detail, a message like this may appear: |
||||
IpcMemoryCreate: shmget failed (Permission denied) |
||||
key=5432010, size=120, permission=700 |
||||
IpcMemoryAttach: shmat failed (Permission denied) id=0 |
||||
FATAL 1: AttachSLockMemory: could not attach segment |
||||
|
||||
Dieser Fehler wird durch nicht gelöschte Segmente im shared memory |
||||
verursacht. (Du kannst sie mit dem Programm ipcs sehen. Benutze das |
||||
Programm ipcrm, um sie zu löschen. |
||||
_________________________________________________________________ |
||||
|
||||
Author of the english version |
||||
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 |
||||
|
||||
Translator of the german version |
||||
Karsten Schulz Linux Systemhaus Schulz |
||||
EMAIL: (Work) schulz@Linux-Systemhaus.de (Home) kaschu@t800.ping.de |
||||
URL: http://www.Linux-Systemhaus.de/ |
||||
Tel: (Work) +49 231 3944432 (Fax) +49 231 3944435 |
Loading…
Reference in new issue