+1.6) The make fails with the following message:
+ ld32: ERROR 4: Conflicting flag setting: -call_shared
+1.7) Why won't it link? (Problems with lorder)
+1.8) I have major problems with IRIX 6!
+1.9) Why does lex fail with PostgreSQL 6.2.1?
+1.10) How do I install PostgreSQL V6.3 under Irix 6.x?
+2.1) Why can't I move the executable files?
+3.1) How do I compile a C program to create a function for extending
+ PostgreSQL
+
+----------------------------------------------------------------------
+Section 1: Installing PostgreSQL
+----------------------------------------------------------------------
+
+1.1) What extra items do I need to install PostgreSQL under Irix?
+
+ You *must* have the following installed:
+ a) Gnu make (installed as gmake)
+
+ You are recommended to install the following:
+ a) GNU install (installed as ginstall)
+ (This is part of the GNU fileutils package)
+
+ You may choose to install the following:
+ a) GNU readline library (if you wish psql to have readline
+ support).
+ b) tcl/tk (if you wish to compile pgtclsh)
+
+1.2) What changes do I need to make to src/Makefile.global or
+ src/Makefile.custom?
+
+ The easiest way to do this is to use the customize script in
+ the src directory.
+
+ You *must* set the following variables:
+ PORTNAME= irix5
+
+ You will also need to change the following to match your own
+ installation:
+ POSTGRESDIR
+
+ If you switch on the USE_TCL option, you will need to set these:
+ TCL_INCDIR=
+ TCL_LIBDIR=
+ TCL_LIB =
+ TK_INCDIR=
+ TK_LIBDIR=
+ TK_LIB =
+
+ You may also make any other changes you need as documented in
+ the INSTALL file and in Makefile.global
+
+1.3) What are the references in X11_LIB to libsocket and libnsl in
+ src/Makefile.global?
+
+ This was a problem in 1.08 (they are Sun Solaris specific).
+ It is fixed in 1.09 and above.
+
+1.4) Are there any other changes I should make?
+
+ If you have installed the GNU install program (ginstall), you
+ should add the following line to src/Makefile.custom:
+ CUSTOM_INSTALL=ginstall
+
+ For an explanation as to why this is a good idea, see Question 2.1
+ Ginstall is part of the GNU fileutils package.
+
+
+1.5) Can I install PostgreSQL (
+
+ Instructions for PostgreSQL V6.3 are answered in Question 1.10!
+
+ Irix 6.2-6.4 has a bug in ld which mishandles the addresses of
+ static procedures when object files are assembled into
+ larger object files using 'ld -r'. This bug has been reported
+ to Silicon Graphics.
+
+ One option is to use the Gnu version of ld. Alternatively,
+ the following patch should be applied as a workaround.
+ (Supplied by Bob Bruccoleri )
+
+*** ./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.
+
+
+
+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)
+Subject: [PORTS] Patches for Irix 6.4
+
+I have worked out how to compile PostgreSQL on Irix 6.4 using the -n32 compiler
+mode and version 7.1 of the C compiler. (The n32 compiler use 32 bits addressing,
+but allows access to all the instructions in the MIPS4 instruction set.)
+There were several problems:
+
+1) The ld command is not referenced as a macro in all the Makefiles. On
+this platform, you have to include -n32 on all the ld commands. Makefiles
+were changed as needed.
+
+2) There is a bug in "ld" which mishandles the addresses of static procedures
+when object files are assembled into larger object files using "ld -r".
+Because of this, I put a hack into src/backend/Makefile to avoid all the
+SUBSYS.o files and just link all the objects. I have contacted SGI about the
+problem, and hopefully, it will be fixed in the near future.
+
+3) Lots of warnings are generated from the compiler. Since the regression
+tests worked OK, I didn't attempt to fix them. If anyone wants the compilation
+log, please let me know, and I'll email it to you.
+
+The version of postgresql was 970602. Here is Makefile.custom:
+
+CUSTOM_COPT = -O2 -n32
+MK_NO_LORDER = 1
+LD = ld -n32
+CC += -n32
+
+Here are the patches:
+
+*** ./backend/access/Makefile.orig Sun Nov 10 00:00:15 1996
+- --- ./backend/access/Makefile Tue Jun 3 10:22:32 1997
+***************
+*** 8,13 ****
+- --- 8,16 ----
+ #
+ #-------------------------------------------------------------------------
+
++ SRCDIR = ../..
++ include ../../Makefile.global
++
+ OBJS = common/SUBSYS.o gist/SUBSYS.o hash/SUBSYS.o heap/SUBSYS.o \
+ index/SUBSYS.o rtree/SUBSYS.o nbtree/SUBSYS.o transam/SUBSYS.o
+
+
+*** ./backend/bootstrap/Makefile.orig Fri Apr 18 06:00:23 1997
+- --- ./backend/bootstrap/Makefile Tue Jun 3 10:23:59 1997
+***************
+*** 38,44 ****
+ all: SUBSYS.o
+
+ SUBSYS.o: $(OBJS)
+! ld -r -o SUBSYS.o $(OBJS)
+
+ # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
+ # make depend, but we state it here explicitly anyway because
+- --- 38,44 ----
+ all: SUBSYS.o
+
+ SUBSYS.o: $(OBJS)
+! $(LD) -r -o SUBSYS.o $(OBJS)
+
+ # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
+ # make depend, but we state it here explicitly anyway because
+
+*** ./backend/Makefile.orig Thu May 22 00:00:15 1997
+- --- ./backend/Makefile Thu Jun 5 16:47:27 1997
+***************
+*** 54,60 ****
+ all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
+
+ postgres: $(OBJS) ../utils/version.o
+! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+
+ $(OBJS): $(DIRS:%=%.dir)
+
+- --- 54,64 ----
+ all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
+
+ postgres: $(OBJS) ../utils/version.o
+! # $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+! -rm -f *.o
+! find . -name "*.o" -exec cp \{\} . \;
+! rm -f SUBSYS.o
+! $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
+
+ $(OBJS): $(DIRS:%=%.dir)
+
+***************
+*** 116,122 ****
+ install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
+ global1.bki.source local1_template1.bki.source \
+ libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
+!
+ $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
+ ifeq ($(MAKE_EXPORTS), true)
+ $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
+- --- 120,126 ----
+ install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
+ global1.bki.source local1_template1.bki.source \
+ libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
+!
+ $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
+ ifeq ($(MAKE_EXPORTS), true)
+ $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
+
+*** ./backend/optimizer/Makefile.orig Wed Feb 19 12:00:34 1997
+- --- ./backend/optimizer/Makefile Tue Jun 3 10:39:47 1997
+***************
+*** 8,13 ****
+- --- 8,16 ----
+ #
+ #-------------------------------------------------------------------------
+
++ SRCDIR= ../..
++ include ../../Makefile.global
++
+ all: submake SUBSYS.o
+
+ OBJS = path/SUBSYS.o plan/SUBSYS.o prep/SUBSYS.o util/SUBSYS.o geqo/SUBSYS.o
+
+*** ./backend/libpq/pqcomprim.c.orig Mon May 26 00:00:23 1997
+- --- ./backend/libpq/pqcomprim.c Fri Jun 6 16:02:24 1997
+***************
+*** 32,40 ****
+ # define hton_l(n) (ntoh_l(n))
+ # else /* BYTE_ORDER != BIG_ENDIAN */
+ # if BYTE_ORDER == PDP_ENDIAN
+! # #error PDP_ENDIAN macros not written yet
+ # else /* BYTE_ORDER != anything known */
+! # #error BYTE_ORDER not defined as anything understood
+ # endif /* BYTE_ORDER == PDP_ENDIAN */
+ # endif /* BYTE_ORDER == BIG_ENDIAN */
+ #endif /* BYTE_ORDER == LITTLE_ENDIAN */
+- --- 32,40 ----
+ # define hton_l(n) (ntoh_l(n))
+ # else /* BYTE_ORDER != BIG_ENDIAN */
+ # if BYTE_ORDER == PDP_ENDIAN
+! # error PDP_ENDIAN macros not written yet
+ # else /* BYTE_ORDER != anything known */
+! # error BYTE_ORDER not defined as anything understood
+ # endif /* BYTE_ORDER == PDP_ENDIAN */
+ # endif /* BYTE_ORDER == BIG_ENDIAN */
+ #endif /* BYTE_ORDER == LITTLE_ENDIAN */
+
+*** ./backend/storage/Makefile.orig Sun Nov 10 00:01:06 1996
+- --- ./backend/storage/Makefile Tue Jun 3 10:41:29 1997
+***************
+*** 8,13 ****
+- --- 8,16 ----
+ #
+ #-------------------------------------------------------------------------
+
++ SRCDIR= ../..
++ include ../../Makefile.global
++
+ all: submake SUBSYS.o
+
+ OBJS = buffer/SUBSYS.o file/SUBSYS.o ipc/SUBSYS.o large_object/SUBSYS.o \
+
+
+
+
+1.9) Why does lex fail with PostgreSQL 6.2.1?
+
+ IRIX 5.3 lex has been reported to fail in
+ postgresql-6.2.1/src/backend/parser with the error:
+
+ lex scan.l
+ "scan.l":line 86: Error: Invalid request %x xc
+ gmake[2]: *** [scan.c] Error 1
+
+ The answer is to use GNU flex 2.5.4 or later. Use the command
+ flex --version
+ to check you have a new enough version of flex
+
+
+1.10) How do I install PostgreSQL V6.3 under Irix 6.x?
+
+ Irix 6.2-6.4 has a bug in ld which mishandles the addresses of
+ static procedures when object files are assembled into
+ larger object files using 'ld -r'. This bug has been reported
+ to Silicon Graphics.
+
+ Depending on your Irix installation you may also encounter
+ 2 other problems detailed below: Conflict in C standards,
+ Conflict in library functions.
+
+ a) Solving the ld bug
+ ---------------------
+
+ One option is to use the Gnu version of ld. Alternatively,
+ the following patch should be applied as a workaround.
+ (Supplied by Bob Bruccoleri 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
+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
+
+
+
+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_bit'
+ ....
+ make: *** [ipc.o] Error 1
+1.17) When compiling postgres, gcc reports signal 11 and aborts.
+1.18) Can I install 6.1.1 under MkLinux?
+1.19) Why does make exit or crash?
+1.20) How can I optimise for 486 or pentium processors
+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_bit'
+ ....
+ make: *** [ipc.o] Error 1
+
+ The problem is that Linux provides no prototypes for these
+ inline functions. The solution is to go into the
+ .../src/backend/storage/ipc directory and edit the Makefile.
+ Change the line
+ CFLAGS+=$(INCLUDE_OPT)
+ to
+ CFLAGS+=$(INCLUDE_OPT) -Wno-error
+
+ Do the same in the ../src/backend/storage/lmgr directory.
+
+1.17) When compiling postgres, gcc reports signal 11 and aborts.
+ More specifically:
+ gcc: Internal compiler error: program cc1 got fatal
+ signal 11
+
+ This may be a hardware/memory problem. PortgreSQL is a big
+ program, and large gcc compilations (such as building
+ PostgreSQL or bebuilding the kernel) stress memory like
+ few other programs, resulting in errors that do not occur
+ in normal operation. Lesser operating systems are also
+ unlikely to stress the hardware to this degree so you
+ may never see any problems under DOS/Windows.
+
+ More information on this problem at:
+ http://www.bitwizard.nl/sig11
+
+ 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/postgreSQL/data -p 5432 &"
+ echo -n " postmaster"
+ else
+ echo -n " (already running)"
+ fi
+ echo
+ touch /var/lock/subsys/postgres
+ ;;
+ stop)
+ # Stop daemons.
+ echo -n "Shutting down postgres Postmaster daemon: "
+ killall -TERM postmaster 2>/dev/null
+ killall -TERM postgres 2>/dev/null
+ echo
+ rm -f /var/lock/subsys/postgres
+ ;;
+ *)
+ echo "Usage: postgres {start|stop}"
+ exit 1
+esac
+
+exit 0
+
+
+
+3.9) Why does Query 32 in the regression tests take so long?
+
+ This is due to a bug in regression scripts which only happens
+ on linux boxes. There are two workarounds as far as I know
+ (information from Tatsuo Ishii ):
+
+ 1. change following in regress.sh:
+ time postgres -texecutor -tplanner -Q bench < bench.sql
+ to:
+ postgres -texecutor -tplanner -Q bench < bench.sql
+
+ 2. after running the test, remove a line at the very end of
+ bench.out something like:
+ 85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k
+ then type:
+ sh ./perquery < bench.out > & bench.out.perquery
+
+
+
+3.10) Why do I get funny rounding results in some date/time arithmetic,
+ such as
+ select '4 hours'::timespan;
+ returning '3 hours 59 minutes 60 seconds'?
+
+ You are running the new glibc2 libraries and have a version earlier than
+ 2.0.7. It is a math rounding problem in the library. Upgrade your library.
+----------------------------------------------------------------------------
+Dr. Andrew C.R. Martin University College London
+URL: http://www.biochem.ucl.ac.uk/~martin
+Tel: (Work) +44(0)171 419 3890 (Home) +44(0)1372 275775
+
--- /dev/null
+
+
+
Linux PostgreSQL FAQ (german)
+
+
+
+
+
+
+
+
+
+
+
+
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:
+
+
+
Letztes Update der Übersetzung:
+
Mo, 23. August 1999, 10:00 CEST
+
+
+
+Ä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
+
+
+
Beantwortete Fragen:
+
+
+
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?
+
+
+
+
2.1) Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh kompiliert werden soll.
+
+
+
+
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) ?
+
+
+
+
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.
+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:
+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:
+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.
+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
+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.
+anwenden:
+oder (mit deutschen Bemerkungen):
+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.
+
+
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
+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?
+hat ein RPM für PostgreSQL V6.0 auf Intel Architekturen zusammengestellt,
+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.
+
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
+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.
+
+
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
+
+
+
+
+
+
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
+
+
+
+
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.
+
+
+
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.
+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/postgreSQL/data -p 5432 &"
+ echo -n " postmaster"
+ else
+ echo -n " (already running)"
+ fi
+ echo
+ touch /var/lock/subsys/postgres
+ ;;
+ stop)
+ # Stop daemons.
+ echo -n "Shutting down postgres Postmaster daemon: "
+ killall -TERM postmaster 2>/dev/null
+ killall -TERM postgres 2>/dev/null
+ echo
+ rm -f /var/lock/subsys/postgres
+ ;;
+ *)
+ echo "Usage: postgres {start|stop}"
+ exit 1
+esac
+
+exit 0
+
+
+
+
3.9) 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
+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
+
+
+
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
+
+
+
URL: http://www.Linux-Systemhaus.de/
+
+
+
Tel: (Work) +49 231 3944432
+
(Fax) +49 231 3944435
+
+
+
+
+
--- /dev/null
+
+
+
+
+
+
+
+
+
=======================================================
+Frequently Asked Questions (FAQ) per PostgreSQL >= V6.1
+Specifiche per Linux Os
+DA LEGGERE IN CONGIUNZIONE CON LE NORMALI FAQ
+=======================================================
+Ultimo aggiornamento: Lunedi' 18 Maggio 11:17:00 GMT 1998
+
+
+Cambiamenti in questa versione (* = modificato, + = nuovo, - = rimosso):
+
++1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
+ nel test di regressione 'timespan'?
+
+
Questo file è diviso approsimativamente nel sequente modo:
+1.*) Istallare PostgreSQL
+2.*) Compilare programmi accessori
+3.*) Problemi di esecuzione
+
+
+Domande risposte:
+1.1) Quali cambiamenti devo fare a src/Makefile.global o a src/Makefile.custom
+ e ci sono altri cambiamenti necessari?
+1.2) Perche' ricevo problemi con missing libreadline?
+1.3) [REDHAT] Perche' ricevo problemi di libdl e dlfcn.h perse?
+1.4) [SLACKWARE 3.1] Perche' ricevo problemi di libdl e dlfcn.h perse?
+1.5) La mia compilazione si arresta segnalando la mancanza dell'include file
+ dlfcn.h perso.
+1.6) GCC reclama una ignorata opzione -fpic
+1.7) Ricevo messaggi di warning (errore) del tipo
+ warning: cast from pointer to integer of different size
+1.8) [SuSE-Linux 4.2-4.4] Dove sono curses e termcap?
+1.9) Perche' ho problemi con ld.so?
+1.10) Perche' ricevo errori del tipo `yy_flush_buffer undefined'?
+1.11) Come posso compilare PostgreSQL su un sistema a.out?
+1.12) Che cosa fallisce con:
+ yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
+ make: /usr/bin/make: cannot execute binary file
+1.13) Quali sono i riferimenti in X11_LIB a libsocket e libnsl in
+ src/Makefile.global?
+1.14) [DEBIAN] Dov'e' libtermcap?
+1.15) [REDHAT] Posso trovare PostgreSQL come RPM?
+1.16) Quando tento di compilare una versione in sviluppo sotto Linux, la
+ compilazione fallisce con il seguente messaggio:
+ 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) Quando sto' compilando postgres, gcc riporta un signal 11 e si interrompe.
+1.18) Posso installare 6.1.1 su MkLinux?
+1.19) Perche' esce o va in crash?
+1.20) Come posso ottimizzarlo per un 486 o un processore pentium
+1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
+ nel test di regressione 'timespan'?
+2.1) Il linker non trova libX11 quando sta' compilando pgtclsh
+3.1) Ricevo un messaggio tipo _fUnKy_POSTPORT_sTuFf_ non definito quando
+ lancio uno script come createuser
+3.2) Lancio postmaster e dopo il sistema dice 'Bad system call(Core
+ dumped)'
+3.3) Quando tento di lanciare Postmaster, perche' ricevo un errore del tipo
+ 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) Perche' createuser non funziona?
+3.5) Perche' ricevo un errore del tipo:
+ IpcMemoryCreate: memKey=155356396 , size=760632 ,
+ permission=384IpcMemoryCreate: shmget(..., create, ...)
+ failed: Invalid argument
+3.6) Perche' psql fallisce con:
+ psql: can't load library 'libpq.so.1'
+3.7) Altri comportamenti strani
+3.8) Quando PostgreSQL e' attivo allo shutdown di sistema, Linux
+ esegue al reboot un fsck al disco.
+3.9) Perche' la Query 32 nel test di regressione pretende molto tempo?
+3.10) Perche' ricevo dei risultati arrotondati su date/time aritmetici,
+ come
+ select '4 hours'::timespan;
+ returning '3 hours 59 minutes 60 seconds'?
+
+----------------------------------------------------------------------
+Sezione 1: Compilare PostgreSQL
+----------------------------------------------------------------------
+
+1.1) Quali cambiamenti devo fare a src/Makefile.global o a
+ src/Makefile.custom e ci sono altri cambiamenti necessari?
+
+ I cambiamenti ai makefiles sono piu'facilmente fatti usando
+ lo script di shell per la personalizzazione che si trova nella
+ directory src che scrive un file Makefile.custom appropriato.
+
+ I soli altri cambiamenti che tu devi fare e rimpiazzare Flex se tu
+ hai una versione 2.5.3, la quale ha dei bug che si manifestano al
+ fallimento di createuser (Vedi domanda 3.4)
+
+ Se tu modifichi i makefiles a mano, tu *devi* settare le seguenti
+ variabili:
+ PORTNAME= linux
+
+ Tu devi anche cambiare quello che segue per settare la tua propria
+ installazione:
+ POSTGRESDIR
+
+ Se tu cambi sull'opzione USE_TCL, devi settare questo:
+ TCL_INCDIR=
+ TCL_LIBDIR=
+ TCL_LIB=
+ TK_INCDIR=
+ TK_LIBDIR=
+ TK_LIB=
+ X11_INCDIR=
+ X11_LIBDIR=
+ X11_LIB=
+
+ Sul mio sistema Slackware3.0 esse sono:
+ 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
+
+ Devi fare ogni altro cambiamento necessario come documentato nel
+ file INSTALL e in Makefile.global
+
+
+1.2) Perche' ricevo problemi con missing libreadline?
+
+ I sistemi Linux in genere non vengono distribuiti con la libreria
+ Gnu readline installata. Si può in ogni caso o disattivare l'opzione
+ di readline in src/Makefile.global o src/Makefile.custom, oppure
+ installare la libreria GNU stessa (readline).
+
+ Nota che Linux Debian (come FreeBSD) esce con le readline installate.
+
+1.3) [REDHAT] Perche' ricevo problemi di libdl e dlfcn.h perse??
+
+ Questa manifestazione avvisa che non c'e' la capacita' di linkare
+ funzioni come dlopen(), dlclose(), etc. durante l'ultima fase di compilazione.
+
+ La libreria libdl e' usata per linkare in maniera dinamica le funzioni
+ e rendere flessibile l'avvio dell'applicativo. Per alcune ragioni questa
+ non era presente nella distribuzione Red Hat. La versione Redhat 4.0
+ (Colgate) a colmato a questa mancanza.
+
+ RedHat ha ora una nuova versione di ld.so in formato RPM nei propri siti FTP.
+ Scaricate:
+
+ ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm
+
+ Installa il file RPM nella maniera usuale e andra'!
+
+ ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
+ make clean dopo aver installato la libreria e prima di ricompilare.
+
+ C'e' stata una sola notizia di sistema corrotto da programmi che
+ accedevano a queste librerie mentre venivano aggiornate (nessun altra
+ sorpresa.) Conseguentemente e' una buona idea quella di fare un reboot
+ del sistema prima di installare le nuove librerie e avere pochi
+ processi attivi durante questo upgrade. Lanciare il sistema in
+ modalita' utente singolo (single-user) e' probabilmente una buona idea!
+
+ Se tu vuoi fare la strada piu' dura, puoi ottenere la libreria e
+ l'header file da:
+
+ ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz
+
+ Alternativamente puoi trovare i file binari precompilati in
+ distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb
+ nel medesimo sito, o seguire le istruzioni date alla domanda 1.2 per
+ correggere lo stesso errore con le aggiornate versioni di Slackware 3.1.
+ Non scegliere questo metodo se non sai quello che stai facendo!
+
+
+
+1.4) [SLACKWARE 3.1] Perche' ricevo problemi di libdl e dlfcn.h perse??
+
+ Questa manifestazione avvisa che non c'e' la capacita' di linkare
+ funzioni come dlopen(), dlclose(), etc. durante l'ultima fase di compilazione.
+
+
Guarda la risposta alla domanda 1.3. Slackware fino alla versione 3.0
+ era provvista di questa libreria e degli include file e ritornarono nell'ultima
+ versione 3.1, ma la prima versione della 3.1 (prima del 9 settembre 1996)
+ non aveva queste e molte versioni su CD-ROM erano state stampate
+ con la prima edizione.
+
+ C'e' stata una sola notizia di sistema corrotto da programmi che
+ accedevano a queste librerie mentre venivano aggiornate (nessun altra
+ sorpresa.) Conseguentemente e' una buona idea quella di fare un reboot
+ del sistema prima di installare le nuove librerie e avere pochi
+ processi attivi durante questo upgrade. Lanciare il sistema in
+ modalita' utente singolo (single-user) e' probabilmente una buona idea!
+
+ Per fissare facilmente questo basta ottenere il file ldso.tgz dal quarto
+ dischetto della piu' recente distribuzione Slackware e scompattarlo da
+ dalla directory di root (/) e poi lanciare
+
+ sh install/doinst.sh
+
+ per completare l'installazione. Successivamente lanciare
+
+ ldconfig
+
+ ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
+ make clean dopo aver installato la libreria e prima di ricompilare.
+
+ Se vuoi installarla manualmente bisogna installare prima il file
+ dlfcn.h in /usr/include.
+
+ Secondo, installa il file libdl.so.1.7.14 (o qualsiasi altra versione)
+ in /lib, e poi fai:
+
+ cd /lib
+ ln -sf libdl.so.1.7.14 libdl.so.1
+ ln -sf libdl.so.1 libdl.so
+
+ Su certi sistemi (a seconda della personale configurazione di GCC)
+ e' necessario fare:
+
+ cd /usr/lib
+ ln -sf /lib/libdl.so .
+
+ Finalmente
+
+ ldconfig
+
+ ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
+ make clean dopo aver installato la libreria e prima di ricompilare.
+
+
+1.5) La mia compilazione si arresta segnalando la mancanza dell'include file
+ dlfcn.h perso.
+
+ Guarda la risposta 1.3/1.4. Non dimenticare che se stai usando un sistema
+ a.out devi prima avere installato il pacchetto dld (il quale non viene
+ fornito con molti sistemi a.out) per avere dlfcn.h e gli altri.
+ Guarda la domanda 1.11.
+
+
+1.6) GCC reclama una ignorata opzione -fpic
+
+ Le prime versioni di GCC accettavano entrambe -fpic o -£PIC.
+ Nelle piu' recenti versioni (V2.7.2?) richiede -£PIC.
+ Se tu stai usando una versione ELF di Linux, questa puo' per sicurezza
+ essere ignorata perche' -£PIC e' di default.
+
+ Puoi correggere questa editando il file src/Makefile.global e cambiare
+ CFLAGS_SL
+
+
+1.7) Ricevo messaggi di warning (errore) del tipo
+ warning: cast from pointer to integer of different size
+
+ Questi appararivano nelle prime versione di Postgres95 e posso per sicurezza
+ essere ignorate. PostgreSQL V6.0 dovrebbe compilare senza warnings
+ ad eccezione di quelli relativi agli header file di sistema (i quali possono
+ essere ignorati per sicurezza).
+
+1.8) [SuSE-Linux 4.2-4.4] Dove sono curses e termcap?
+
+ SuSE-Linux 4.2 ha le ncurses ma non le curses. 4.4 ha entrambe.
+ SuSE-Linux ha anche le librerie termcap in /usr/lib/termcap
+ invece di essere in /usr/lib.
+
+ PostgreSQL (fino alla V6.0)
+ -----------------------
+ Setta il valore delle CURSES_LIB in src/Makefile.custom a -lncurses
+ (o fai questo attraverso lo script di personalizzazione).
+ Aggiundi la seguente riga al file src/Makefile.custom:
+
+ LDADD_BE+= -L/usr/lib/termcap
+
+ Devi editare il file src/bin/psql/Makefile e cambiare:
+ ifeq ($(PORTNAME), linux)
+ LD_ADD+=
+ con:
+ ifeq ($(PORTNAME), linux)
+ LD_ADD+= -ltermcap
+
+ PostgreSQL (V6.1)
+ -----------------
+ Lo script di configurazone non sa' di cercare nella directory
+ /usr/lib/termcap per le librerie termcap, percio' tu devi specificare
+ questo come una delle directory delle librerie dove cercare.
+
+ Se non funziona (non ho SuSE per verificare che vada)
+ allora lancia configure, edita src/Makefile.global e aggiungi
+ -ltermcap alla linea LDFLAGS
+ (dopo -lreadline). (Alternativamente poi configurare
+ src/Makefile.custom prima di lanciare configure.)
+
+ Alcune versioni di SuSE forniscono solo ncurses, percio' tu devi
+ forzare l'uso delle ncurses piuttosto che le curses cambiando
+ -lcurses con -lncurses. (dimostrato per SuSE 5.1)
+
+
+1.9) Perche' ho problemi con ld.so?
+
+ Se tu hai problemi con ld.so, un altra libreria richiesta sotto ELF
+ per il caricamento dinamico, allora hai creato disordine con la tua
+ installazione o fatto un upgrade di Linux.
+
+ Guarda le risposte alle domande 1.3/1.4. Devi installare ld.so.x.y.z in
+ /lib e lanciare ldconfig.
+
+ La piu' recente vesione stabile del pacchetto ld eì 1.7.14
+ Mentre scrivo, la versione 1.8.x di ld e' sperimentale.
+
+1.10) Perche' ricevo errori del tipo `yy_flush_buffer undefined'?
+
+ Questo non e' specifico per Linux, ma e' comune nelle vecchie istallazione
+ di Linux. Devi avere una versione recente di Flex (2.5.2 o superiore)
+ per compilare PostgreSQL. Nota che Flex 2.5.3 ha dei bug: guarda la
+ domanda 3.4.
+
+1.11) Come posso compilare PostgreSQL su un sistema a.out?
+
+ Prima, devi installare la libreria dld. Puoi ottenere questa da Sunsite come:
+ Linux/libs/dld.3.2.7.tar.gz
+ (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz)
+
+ Secondo, aggiungi la seguente linea al file src/Makefile.custom:
+ LINUX_ELF=
+ (o usa lo script di configurazione)
+
+1.12) Che cosa fallisce con:
+ yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
+ make: /usr/bin/make: cannot execute binary file
+
+ Questo e' un problema delle prime versioni di Postgres95. Il default
+ per PostgreSQL e' di usare bison -y piuttosto che yacc.
+
+ yacc e' generalmente implementato come script che invoca bison -y
+ Per alcune ragioni (certe versioni di make? certe versioni di bash?)
+ make non puo' eseguire questo file di script.
+
+ Per correggere questo, edita semplicemente src/mk/port/postgres.mk.linux
+ e alla fine del file cambia:
+ # YACC = bison -y
+ con
+ YACC = bison -y
+
+1.13) Quali sono i riferimenti in X11_LIB a libsocket e libnsl in
+ src/Makefile.global?
+
+ Questo era un problema nella versione 1.08 (specifica per Sun Solaris)
+ E' stata fissata nella 1.09 e 6.0
+
+1.14) [DEBIAN] Dov'e' libtermcap?
+
+ Debian Linux viene distribuita senza librerie termcap e usa ncurses
+ (le quali usano terminfo all'interno). Non c'e' bisogno di cambiare la
+ variabile CURSES_LIB in src/bin/psql/Makefile peche' Debian provvede
+ con un link da libncurses a libcurses (diversamente da SuSE-Linux --
+ Vedi domanda 1.8).
+
+ Devi editare src/bin/psql/Makefile e commentare i cambiamenti:
+ ifeq ($(PORTNAME), linux)
+ LD_ADD+= -ltermcap
+ con:
+ ifeq ($(PORTNAME), linux)
+ LD_ADD+=
+
+
+1.15) [REDHAT] Posso trovare PostgreSQL come RPM?
+
+ Si! Michal Mosiewicz
+ (http://www.pdi.lodz.pl/~mimo) ha creato un RPM
+ per PostgreSQL V6.0 per architettura Intel uplodata a
+ ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm
+
+ Questa e' una precompilata versione, le sorgenti RPM erano come
+ io ho scritto (3 Febbraio 1997).
+
+1.16) Quando tento di compilare una versione in sviluppo sotto Linux, la
+ compilazione fallisce con il seguente messaggio:
+ 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
+
+ Il problema e' che Linux non prevede prototipi per queste funzioni inline.
+ La soluzione e' di andare dentro la directory .../src/backend/storage/ipc
+ ed editare Makefile.
+ Cambia la linea
+ CFLAGS+=$(INCLUDE_OPT)
+ con
+ CFLAGS+=$(INCLUDE_OPT) -Wno-error
+
+ Fai lo stesso con la directory ../src/backend/storage/lmgr.
+
+1.17) Quando sto' compilando postgres, gcc riporta un signal 11 e si interrompe.
+ Piu' specificatamente:
+ gcc: Internal compiler error: program cc1 got fatal
+ signal 11
+
+ Questo e' un problema di hardware/memoria. PostgreSQL e' un grande
+ programma, e una larga compilazione con gcc (come la compilazione
+ di PostgreSQL o la compilazione del kernel) stressa la memoria come
+ molti altri programmi, mostrando errori che non appaiono nelle normali
+ operazioni. Sistemi operativi inferiori non riescono a stressare l'hardware
+ in questo modo, per questo non vedrai mai questi errori sotto DOS/Windows.
+
+ Maggiori informazioni in merito:
+ http://www.bitwizard.nl/sig11
+
+ Da questo Sig11 FAQ, sembra essere un errore specifico con Redhat 5.0
+ lanciando su un processore Cyrix. Guarda il link superiore per i dettagli!
+
+1.18) Posso installare 6.1.1 su MkLinux?
+
+ Tatsuo Ishii ha fatto questo su MkLinux DR2.1 update2 dopo una piccola
+ patch disponibile presso:
+ ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz
+
+1.19) Perche' esce o va in crash??
+
+ Ci sono state diverse segnalazioni di gmake, dove in tutte si usciva
+ subito e c'era una seg faulting. Il problema piu' marcato e' stato
+ riportato con gmake 3.74 - upgradandolo alla 3.76.1 si e' risolto.
+ Comunque, la versione 3.74 e' funzionante per altri tipi di setup.
+ In breve, prova ad upgradare gmake all'ultima versione che puoi trovare
+ prima di riportarlo come un problema.
+
+1.20) Come posso ottimizzarlo per un 486 o un processore pentium
+
+ Le flags di compilazione per default non permettono l'optimizzazione per 486
+ o per processori Pentium. Per aggiungerla come ottimizzazione, edita
+ Makefile.custom e aggiungi:
+
+ CFLAGS+= -m486
+
+ o (per i nuovi compilatori che molte persone non stanno usando)
+
+ CFLAGS+= -mpentium
+ o
+ CFLAGS+= -mpentiumpro
+
+1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
+ nel test di regressione 'timespan'?
+ Le ore appaiono come: '4 hours 59 mins 60.00 secs'
+ invece di '5 hours'
+
+ Questo e' un problema con le librerie glibc2 le quali appaiono con
+ RedHat 5.0. Aggiorna le tue glibc con le ultime versioni di RedHat per
+ v5.0/hurricane. Tutto quello che e' anteriore alle glibc-2.0.7 ha
+ questi problemi.
+
+----------------------------------------------------------------------
+Sezione 2: Compilare programmi accessori
+----------------------------------------------------------------------
+
+2.1) Il linker non trova libX11 quando sta' compilando pgtclsh
+
+ Aggiungi la seguente riga al file src/Makefile.custom
+ X11_LIBDIR = /usr/X11R6/lib
+
+
+----------------------------------------------------------------------
+Sezione 3: Problemi di esecuzione
+----------------------------------------------------------------------
+
+3.1) Ricevo un messaggio tipo _fUnKy_POSTPORT_sTuFf_ non definito quando
+ lancio uno script come createuser
+
+ Questo e' un bug nella V.1.06-V1.07 di Postgres ed e' fissata con la versione
+ 1.08 o superiore.
+
+3.2) Lancio postmaster e dopo il sistema dice 'Bad system call(Core
+ dumped)'
+
+ Questo indica che non hai compilato il supporto per la memoria condivisa nel
+ kernel. Devi ricompilare il kernel per aggiungere questa feature.
+
+3.3) Quando tento di lanciare Postmaster, perche' ricevo un errore del tipo
+ 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.
+
+ I permessi sul file /dev/null sono sbagliati.
+
+ ls -l /dev/null should give you something like:
+
+ crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null
+
+ Correggi i permessi con:
+
+ chmod a+rw /dev/null
+
+3.4) Perche' createuser non funziona?
+
+ C'e' un problema con la versione 2.5.3 di GNU Flex e createuser.
+ Le tue opzioni devono recedere a Flex V2.5.2, aggiornale alla V2.5.4 o
+ applica una patch alla V2.5.3 la quale e' fornita in doc/README.flex
+ Puoi ottenere la V.2.5.4 da:
+ ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz
+
+3.5) Perche' ricevo un errore del tipo:
+ IpcMemoryCreate: memKey=155356396 , size=760632 ,
+ permission=384IpcMemoryCreate: shmget(..., create, ...)
+ failed: Invalid argument
+
+ Non hai compilato il supporto IPC nel kernel di Linux.
+ Devi ricompilare il kernel con questa opzione.
+
+3.6) Perche' psql fallisce con:
+ psql: can't load library 'libpq.so.1'
+
+ Psql e' stata compilata per linkarsi dinamicamente con la libreria libpq.
+
+ Per risolvere questo, devi accedere come root ed editare il file
+ /etc/ld.so.conf
+ Aggiungi una linea singola alla fine, la quale prende il nome della directory
+ delle librerie di PostgreSQL (la sottodirectory delle librerie
+ dell'installazione diPostgreSQL) e lancia
+ /sbin/ldconfig -v
+
+ Alternativamente, (e se tu non hai accesso come root), devi usare la
+ variabile di ambiente LD_LIBRARY_PATH.
+
+ La variabile LD_LIBRARY_PATH contiene una lista di paths per ricercare le librerie
+ condivise. Questa lista e' ricercata prima delle librerie specificate da ldconfig.
+
+ Percio' sotto Bash, devi fare qualcosa del tipo:
+ export LD_LIBRARY_PATH='PathToPGSQL'/lib
+ o, usando tcsh
+ setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
+ rimpiazzando 'PathToPGSQL' con l'appropriato path alla tua directory PostgreSQL
+ al top level.
+ Nota che il comando ldd puo' essere eseguito su un programma linkato dinamicamente
+ alla lista di paths a tutte le librerie condivise sopra, alle quali gli eseguibili
+ dipendono.
+
+
+3.7) Altri comportamenti strani
+
+ Non sono sicuro quali siano i sintomi che non permettono la corretta esecuzione,
+ ma si puo' ipotizzare che le ragioni vadano oltre il regolare funzionamento del
+ loader dinamico nel caricare la corretta versione delle librerie libpq.
+ Se hai una versione vecchia dai una occhiata al path delle librerie
+ (per esempio in /usr/lib) che dovrebbero caricare nelle nuove versioni che intendi
+ far girare. Renditi sicuro di prendere queste nel percorso e guarda la Domanda 3.6
+ per i dettagli in merito al caricamento dinamico delle librerie.
+
+3.8) Quando PostgreSQL e' attivo allo shutdown di sistema, Linux
+ esegue al reboot un fsck al disco.
+
+ Ci sono state alcune segnalazioni di questo e sembre essere il
+ risultato di lanciare PostgreSQL dal /etc/inittab come suggerito
+ nel file INSTALL.
+
+ Si raccomanda percio' di lanciare il postmaster da un rc script.
+ Sotto una versione di tipo Slackware, devi modificare /etc/rc.d/rc.local
+ per lanciare il postmaster. Sotto una versione in stile RedHat
+ devi creare uno script in stile SysV sotto /etc/rc.d/rc3.d basato
+ sul file /etc/rc.d/init.d.
+
+ C'e' un esempio di file in contrib/linux/postgres.init
+
+ Un altro file di esempio è proposto da John Robinson
+ il quale puo' essere modificato a seconda delle esigenze:
+
+#!/bin/sh
+#
+# postgreSQL.init This shell script takes care of starting and stopping
+# the PostgreSQL postmaster.
+#
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Source networking configuration.
+. /etc/sysconfig/network
+
+# Check that networking is up.
+[ ${NETWORKING} = "no" ] && exit 0
+
+# See how we were called.
+case "$1" in
+ start)
+ # Start daemons.
+ echo -n "Starting postgres Postmaster daemon:"
+ if [ -z "`pidofproc postmaster`" ]
+ then
+ su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &"
+ echo -n " postmaster"
+ else
+ echo -n " (already running)"
+ fi
+ echo
+ touch /var/lock/subsys/postgres
+ ;;
+ stop)
+ # Stop daemons.
+ echo -n "Shutting down postgres Postmaster daemon: "
+ killall -TERM postmaster 2>/dev/null
+ killall -TERM postgres 2>/dev/null
+ echo
+ rm -f /var/lock/subsys/postgres
+ ;;
+ *)
+ echo "Usage: postgres {start|stop}"
+ exit 1
+esac
+
+exit 0
+
+
+
+3.9) Perche' la Query 32 nel test di regressione pretende molto tempo?
+
+ Questo e' un bug nello script di regressione presente su Linux Os.
+ Ci sono due raggiri per evitarli (informazione di Tatsuo Ishii ):
+
+ 1. cambia quello che segue in regress.sh:
+ time postgres -texecutor -tplanner -Q bench < bench.sql
+ a:
+ postgres -texecutor -tplanner -Q bench < bench.sql
+
+ 2. dopo aver lanciato il test, rimuovi la linea finale di
+ bench.out, qualcosa del tipo:
+ 85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k
+ poi digita:
+ sh ./perquery < bench.out > & bench.out.perquery
+
+
+
+3.10) Perche' ricevo dei risultati arrotondati su date/time aritmetici,
+ come
+ select '4 hours'::timespan;
+ returning '3 hours 59 minutes 60 seconds'?
+
+ Stai usando le nuove librerie glibc2 e hai una versione precedene alla
+ 2.0.7. E' un problema di arrotondamento matematico nella libreria.
+ Aggiorna le tue librerie.
+
+----------------------------------------------------------------------------
+Dr. Andrew C.R. Martin University College London
+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.5
+Sun Solaris Specific
+TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
+=======================================================
+last updated: Thu Sep 21 9:30:00 CET 1999
+
+
+
+
+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:
+
+- The commands given here are for the bash shell. If you use
+ a different shell, you'll have to change the commands accordingly,
+ especially these regarding environment variables.
+
+- These instructions are written for Solaris 2.6
+
+
+
+----------------------------------------------------------------------
+Section 1: Building and Installing PostgreSQL
+----------------------------------------------------------------------
+
+1.1) What tools do I need to build and install PostgreSQL on Solaris?
+
+You will need
+
+- 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 make
+- GNU readline library
+
+We also used
+
+- GNU cc (gcc 2.8.1)
+
+If you like Solaris packages, you can find these tools here:
+http://www.sunfreeware.com
+
+If you prefer sources, look here:
+http://www.gnu.org/order/ftp.html
+
+
+
+
+1.2) What else do I have to do before building PostgreSQL?
+
+Shared libraries
+----------------
+
+The default installation procedure puts the shared libraries
+into "/usr/local/pgsql/lib", but the dynamic loader won't
+find them there at runtime unless you use some hack like
+symlinking the libraries in /usr/lib or setting LD_LIBRARY_PATH
+for every user that will use the DB system.
+
+The first time you'll encounter this problem is usually when
+running "initdb". It will fail with something like
+
+ ld.so.1: pg_id: fatal: libpq.so: open failed: No such file or directory
+
+We recommend that you store the path of the directory containing
+the libraries in the environment variable LD_RUN_PATH *before*
+starting the build. This will cause the linker to store this
+path in the binaries.
+
+Do this:
+
+# export LD_RUN_PATH=/usr/local/pgsql/lib
+
+(or wherever you choose to put the 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.
+
+
+
+
+