+++ /dev/null
-=======================================================
-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.
-
+++ /dev/null
-=======================================================
-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
=======================================================
-Frequently Asked Questions (FAQ) for PostgreSQL V6.5
+Frequently Asked Questions (FAQ) for PostgreSQL 7.1
HP-UX Specific
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
=======================================================
-last updated: Sun May 23 19:48:07 EDT 1999
+last updated: $Date: 2000/08/26 19:34:24 $
current maintainer: Tom Lane (tgl@sss.pgh.pa.us)
original author: Tom Lane (tgl@sss.pgh.pa.us)
1.2) Anything special about the build/install procedure?
-When you run configure, you will want to explicitly select either the
-hpux_cc or hpux_gcc template depending on which compiler you plan to
-use:
- ./configure --with-template=hpux_cc
+If you have both HP's C compiler and GCC's, then you might want to
+explicitly select the compiler to use when you run `configure':
+ CC=cc ./configure
for HP's C compiler, or
- ./configure --with-template=hpux_gcc
-for GNU gcc. (If you omit --with-template, configure may either
-default to hpux_cc or give up entirely, depending on which HPUX and
-PostgreSQL releases you have.)
-
-You may want to tweak the CFLAGS setting in template/hpux_[g]cc before
-you configure. The distributed copy of hpux_cc contains neither -O nor -g
-switches, which is hardly optimal for any situation. As of Postgres 6.5,
-hpux_gcc sets CFLAGS to -O2, which is fine unless you want to do debugging;
-in that case you may want -g as well (or instead).
+ CC=gcc ./configure
+for GCC. If you omit this setting then configure will pick gcc.
The default install target location is /usr/local/pgsql, which
(particularly on HPUX 10) you might want to change to something under
/opt. If so, use the --prefix switch to configure.
-If you have both HP and GNU C++ compilers in your PATH, keep an eye on
-whether configure picks the right one --- you want the HP c++ if you are
-using HP C, or g++ if you are using gcc. Mixing HP and GNU compilers
-won't work. You may need to provide a --with-CXX=compiler switch to
-force configure to pick the matching C++ compiler, or even say
---without-CXX if you have a C++ compiler but it doesn't match the C
-compiler you want to use.
-
-Otherwise the standard build/install procedure described in the
-PostgreSQL documentation works fine.
+If you want to build the C++ client library (libpq++) then you need
+to use a C++ compiler from the same source as the C compiler; mixing
+HP and GNU compilers doesn't work. If you have both C++ compilers
+in your PATH, keep an eye on whether configure picks the right one.
+To override the choice, set the environment variable CXX:
+ CC=gcc CXX=g++ ./configure
+or
+ CC=cc CXX=aCC ./configure
1.3) yacc dies trying to process src/backend/parser/gram.y.
+++ /dev/null
-======================================================
-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
+++ /dev/null
-
-=======================================================
-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
+++ /dev/null
-
- 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
SCO UnixWare and OpenServer Specific
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
=======================================================
-last updated: Mon May 1 23:35:43 EDT 2000
+last updated: $Date: 2000/08/26 19:34:24 $
current maintainer: Billy G. Allie (Bill.Allie@mug.org)
original author: Andrew Merrill (andrew@compclass.com)
*) Readline
*) Using the UDK on OpenServer
*) Compiling PostgreSQL using the UDK
-*) Shared Memory and SHMMAX
-*) Java and JDBC
*) Reading the PostgreSQL man pages on UnixWare
return result;
------------------------------8< CUT HERE >8------------------------------
-***************************************************************************
-*) Shared Memory and SHMMAX
-
-PostgreSQL supports multiple backend daemons running at once. A block
-of shared memory is used by the backend processes. A larger block
-of shared memory allows PostgreSQL to run faster and support more
-complicated queries.
-
-By default, UnixWare 7 and OpenServer are confiugured to support shared memory
-blocks that are no larger than 524288 bytes, or 512K. By default, PostgreSQL
-tries to allocate a shared memory block that is larger than this. If
-you don't do anything, this allocation will fail, and the postmaster
-daemon will not be able to run.
-
-The error message looks like this (the numbers may be different):
-
-IpcMemoryCreate: shmget failed (Invalid argument) key=5432001, size=831176, permission=600
-FATAL 1: ShmemCreate: cannot create region
-
-You have two choices: tell PostgreSQL to allocate a smaller shared memory
-block, or tell Unix to allow larger shared memory blocks. The latter
-is the preferred solution, but it requires a kernel tunable change and a
-reboot to implement.
-
-To configure the size of the PostgreSQL shared memory block, use the -B
-option to the postmaster command, which configures the number of buffers
-used by PostgresSQL. (The shared memory block consists of these buffers
-and around 300K of other stuff.) Each buffer uses 8K, and by default
-there are 64 buffers, or 64*8*1024 = 524288 bytes (plus the ~300K of other
-stuff).
-
-To use PostgreSQL without doing any kernel tuning, use a -B value of
-about 24. This would take up 24*8*1024 = 196608 bytes, plus ~300K
-of other stuff, yields about 500000, which will fit in under the
-default 512K limit.
-
-Example: postmaster -B 24
-
-The recommended option is to instead raise the kernel tunable SHMMAX,
-which controls the size of the largest allowed shared memory block.
-
-*** Tuning SHMMAX on UnixWare ***
-
-To display the current value of SHMMAX, run:
-/etc/conf/bin/idtune -g SHMMAX
-which displays the current, default, minimum, and maximum values, in bytes.
-
-To set a new value for SHMMAX, run:
-/etc/conf/bin/idtune SHMMAX value
-where value is the new value you want to use (in bytes).
-
-After setting SHMMAX, rebuild the kernel and reboot.
-To rebuild the kernel:
-/etc/conf/bin/idbuild -B
-
-*** Tuning SHMMAX on OpenServer ***
-
-First, cd to /etc/conf/cf.d.
-
-To display the current value of SHMMAX, in bytes, run:
-./configure -y SHMMAX
-
-To set a new value for SHMMAX, run:
-./configure SHMMAX=value
-where value is the new value you want to use (in bytes).
-
-After setting SHMMAX, rebuild the kernel and reboot.
-To rebuild the kernel:
-./link_unix
-
-
-***************************************************************************
-*) Java and JDBC
-
-The JDBC interface will not build on UnixWare or OpenServer without changes.
-The JDBC Makefile in src/interfaces/jdbc/Makefile uses the $$( ) construction
-to run an external shell command, instead of the older ` ` syntax.
-However, the $$( ) syntax does not work on UnixWare or OpenServer.
-So, each of the two uses of it must be replaced with backquotes. You can
-search for $$( to locate the two lines that need changing.
-
-In the file src/interfaces/jdbc/Makefile :
-
-change:
- make $$($(JAVA) makeVersion)
-to:
- make `$(JAVA) makeVersion`
-
-and change:
- $(JAR) -c0f $@ $$($(FIND) postgresql -name "*.class" -print)
-to:
- $(JAR) -c0f $@ `$(FIND) postgresql -name "*.class" -print`
-
-Of course, you also need to have installed Java on your system, and
-make sure that /usr/java/bin is in your PATH.
-
-And, remember to use GNU make, as always.
-
-
***************************************************************************
*) Reading the PostgreSQL man pages on UnixWare
Sun Solaris Specific
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
=======================================================
-last updated: Thu Sep 21 9:30:00 CET 1999
+last updated: $Date: 2000/08/26 19:34:24 $
current maintainer: Marc Liyanage (liyanage@access.ch)
original author: Marc Liyanage (liyanage@access.ch)
-
Contents:
1.1) What tools do I need to build and install PostgreSQL on Solaris?
1.2) What else do I have to do before building PostgreSQL?
-1.3) Why am I getting "IpcMemoryCreate" errors when I try
- to run postmaster?
-1.4) Why am I getting "Can't tell what username to use" errors
- when I try to run initdb?
-
-A) Contributors
-
Notes:
- These instructions are written for Solaris 2.6
-
----------------------------------------------------------------------
Section 1: Building and Installing PostgreSQL
----------------------------------------------------------------------
- GNU flex 2.5.4 or better (the lex included in Solaris 2.6 won't work)
- GNU bison (the yacc included in Solaris 2.6 won't work)
-- GNU zip (gzip and especially zcat for installing the docs)
+- GNU zip (gzip and especially gunzip for installing the docs)
- GNU make
- GNU readline library
-
1.2) What else do I have to do before building PostgreSQL?
Shared libraries
There is some good information about this here:
http://www.visi.com/~barr/ldpath.html
-
-
-zcat
-----
-
-If
-
-- both the original solaris zcat as well as the recommended
- GNU zcat are installed on the system (e.g. the former in /usr/bin and
- the latter in /usr/local/bin) and
-- configure (or "which zcat") finds the wrong one
-
-then configure needs to be told where GNU zcat can be found.
-
-Failure to do so will cause configure to select the wrong one
-and the "gmake install" command in the "doc" subdirectory
-(step 12 in the INSTALL file) will fail because Solaris
-zcat cannot handle the .gz compressed documentation files.
-
-To fix this, type
-
-# export GZCAT=/usr/local/bin/zcat
-
-(or wherever your GNU zcat lives)
-
-before running configure.
-
-
-
-
-1.3) Why am I getting "IpcMemoryCreate" errors when I try
- to run the postmaster?
-
-(See also 3.4 in the main FAQ file)
-
-Under Solaris 2.6 and probably others, the default shared memory
-maximum segment size kernel parameter is set too low. The solution
-is to put something like the following line into /etc/system and
-reboot the system.
-
-set shmsys:shminfo_shmmax=0x7fffffff
-
-Excellent info regarding shared memory under Solaris can be found here:
-http://www.sunworld.com/swol-09-1997/swol-09-insidesolaris.html
-
-
-
-
-1.4) Why am I getting "Can't tell what username to use" errors
- when I try to run initdb?
-
-Put something like this into the .bash_profile startup script
-of the postgres user (see also step 17 in the INSTALL file):
-
-export USER=postgres
-
-
-
-
-
-
-
-
-
-----------------------------------------------------------------------
-Section A: Contributors
-----------------------------------------------------------------------
-
-- Jose Luis Rodriguez Garcia
- Suggested to change the shmmax parameter in 1.3 from 0xffffffff to 0x7fffffff
- because the value is a signed integer in Solaris versions prior to 2.6.
-
-
-
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.19 2000/08/25 10:00:29 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.20 2000/08/26 19:34:24 petere Exp $
-->
<Chapter Id="runtime">
increase the kernel limit.
</para>
+ <para>
+ If you get an <quote>illegal system call</> error, then it is likely that
+ shared memory or semaphores are not supported at all in your kernel. In
+ that case your only option is to re-configure the kernel to turn on these
+ features.
+ </para>
+
<para>
Details about configuring System V IPC facilities are given in
<xref linkend="sysvipc">.