]> granicus.if.org Git - postgresql/commitdiff
Update platform FAQ's.
authorBruce Momjian <bruce@momjian.us>
Tue, 24 Nov 1998 03:48:22 +0000 (03:48 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 24 Nov 1998 03:48:22 +0000 (03:48 +0000)
doc/FAQ_Irix
doc/FAQ_Linux

index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c87306477b8ccd51eae6e499cabc546ae2998108 100644 (file)
@@ -0,0 +1,490 @@
+======================================================
+Frequently Asked Questions (FAQ) for PostgreSQL >=V6.1
+IRIX Specific
+TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
+======================================================
+last updated:           Mon Mar 05 17:00:00 GMT 1998
+
+current maintainer:     Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
+original author:        Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
+
+
+Changes in this version (* = modified, + = new, - = removed):
+*1.5)   Can I install PostgreSQL (<V6.3) under Irix 6.x?
++1.10)  How do I install PostgreSQL V6.3 under Irix 6.x?
+
+This file is divided approximately as follows:
+1.*)    Installing PostgreSQL
+2.*)    Uninstalling PostgreSQL
+3.*)    Extending PostgreSQL
+
+
+Questions answered:
+1.1)    What extra items do I need to install PostgreSQL under Irix?
+1.2)    What changes do I need to make to src/Makefile.global?
+1.3)    What are the references in X11_LIB to libsocket and libnsl in
+        src/Makefile.global?
+1.4)    Are there any other changes I should make?
+1.5)    Can I install PostgreSQL (<V6.3) under Irix 6.x?
+1.6)    The make fails with the following message:
+        ld32: ERROR 4: Conflicting flag setting: -call_shared
+1.7)    Why won't it link? (Problems with lorder)
+1.8)    I have major problems with IRIX 6!
+1.9)    Why does lex fail with PostgreSQL 6.2.1?
+1.10)   How do I install PostgreSQL V6.3 under Irix 6.x?
+2.1)    Why can't I move the executable files?
+3.1)    How do I compile a C program to create a function for extending
+        PostgreSQL
+
+----------------------------------------------------------------------
+Section 1:      Installing PostgreSQL
+----------------------------------------------------------------------
+
+1.1)    What extra items do I need to install PostgreSQL under Irix?
+
+        You *must* have the following installed:
+        a) Gnu make (installed as gmake)
+
+        You are recommended to install the following:
+        a) GNU install (installed as ginstall)
+           (This is part of the GNU fileutils package)
+
+        You may choose to install the following:
+        a) GNU readline library (if you wish psql to have readline
+           support).
+        b) tcl/tk (if you wish to compile pgtclsh)
+
+1.2)    What changes do I need to make to src/Makefile.global or
+        src/Makefile.custom?
+
+        The easiest way to do this is to use the customize script in
+        the src directory.
+
+        You *must* set the following variables:
+                PORTNAME=       irix5
+
+        You will also need to change the following to match your own
+        installation:
+                POSTGRESDIR
+
+        If you switch on the USE_TCL option, you will need to set these:
+                TCL_INCDIR= 
+                TCL_LIBDIR= 
+                TCL_LIB = 
+                TK_INCDIR=
+                TK_LIBDIR=
+                TK_LIB =
+
+        You may also make any other changes you need as documented in
+        the INSTALL file and in Makefile.global
+
+1.3)    What are the references in X11_LIB to libsocket and libnsl in
+        src/Makefile.global?
+
+        This was a problem in 1.08 (they are Sun Solaris specific). 
+        It is fixed in 1.09 and above.
+
+1.4)    Are there any other changes I should make?
+
+        If you have installed the GNU install program (ginstall), you
+        should add the following line to src/Makefile.custom:
+                CUSTOM_INSTALL=ginstall
+
+        For an explanation as to why this is a good idea, see Question 2.1
+        Ginstall is part of the GNU fileutils package.
+
+
+1.5)    Can I install PostgreSQL (<V6.3) under Irix 6.x?
+
+        Instructions for PostgreSQL V6.3 are answered in Question 1.10!
+
+        Irix 6.2-6.4 has a bug in ld which mishandles the addresses of
+        static procedures when object files are assembled into
+        larger object files using 'ld -r'. This bug has been reported
+        to Silicon Graphics. 
+
+        One option is to use the Gnu version of ld. Alternatively,
+        the following patch should be applied as a workaround. 
+        (Supplied by Bob Bruccoleri <bruc@bms.com>)
+
+*** ./backend/Makefile.orig     Thu May 22 00:00:15 1997
+--- ./backend/Makefile  Thu Jun  5 16:47:27 1997
+***************
+*** 54,60 ****
+  all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
+  
+  postgres: $(OBJS) ../utils/version.o
+!       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+  
+  $(OBJS): $(DIRS:%=%.dir)
+  
+--- 54,64 ----
+  all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
+  
+  postgres: $(OBJS) ../utils/version.o
+! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+!       -rm -f *.o
+!       find . -name "*.o" -exec cp \{\} . \;
+!       rm -f SUBSYS.o
+!       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
+  
+  $(OBJS): $(DIRS:%=%.dir)
+
+
+
+
+1.6)    The make fails with the following message:
+        ld32: ERROR 4: Conflicting flag setting: -call_shared
+
+        If gmake fails in .../src/backend while building obj/ACCESS.o
+        with a message from ld32, you can work around this by using
+        ld for the LD environment variable rather than cc.
+
+        The problem has been observed under Irix 5.3 when compiling both
+        Postgres95-1.09 and PostgreSQL-6.2Beta6, but on some systems
+        these appear to compile with no such problems.
+
+        Fix supplied by Brian Sanders (bsanders@netcom.com,
+        brian@fresnelsoft.com)
+
+
+1.7)    Why won't it link? (Problems with lorder)
+
+        According to the IRIX man pages, lorder is useless, but harmless
+        under IRIX. However, it has caused problems for some people
+        using both IRIX 6.2.
+
+        The solution is to add the following line to 
+        .../src/makefiles/Makefile.irix5
+
+        MK_NO_LORDER=true
+
+
+1.8)    I have major problems with IRIX 6!
+
+        The following is quoted directly from Bob Bruccoleri <bruc@bms.com>
+
+There is a really nasty loader bug in the compiler system (7.1)
+on Irix 6.x, and the error that Lasse Petersen is the result of it.
+Here is the original message. I don't know if all the changes have been
+folded into the current release.
+
+Date: Fri, 06 Jun 1997 17:12:20 -0400 (EDT)
+From: bruc@bms.com (Robert Bruccoleri)
+Subject: [PORTS] Patches for Irix 6.4
+
+I have worked out how to compile PostgreSQL on Irix 6.4 using the -n32 compiler
+mode and version 7.1 of the C compiler. (The n32 compiler use 32 bits addressing,
+but allows access to all the instructions in the MIPS4 instruction set.)
+There were several problems:
+
+1) The ld command is not referenced as a macro in all the Makefiles. On
+this platform, you have to include -n32 on all the ld commands. Makefiles
+were changed as needed.
+
+2) There is a bug in "ld" which mishandles the addresses of static procedures
+when object files are assembled into larger object files using "ld -r".
+Because of this, I put a hack into src/backend/Makefile to avoid all the
+SUBSYS.o files and just link all the objects. I have contacted SGI about the
+problem, and hopefully, it will be fixed in the near future.
+
+3) Lots of warnings are generated from the compiler. Since the regression
+tests worked OK, I didn't attempt to fix them. If anyone wants the compilation
+log, please let me know, and I'll email it to you.
+
+The version of postgresql was 970602. Here is Makefile.custom:
+
+CUSTOM_COPT = -O2 -n32
+MK_NO_LORDER = 1
+LD = ld -n32
+CC += -n32
+
+Here are the patches:
+
+*** ./backend/access/Makefile.orig      Sun Nov 10 00:00:15 1996
+- --- ./backend/access/Makefile Tue Jun  3 10:22:32 1997
+***************
+*** 8,13 ****
+- --- 8,16 ----
+  #
+  #-------------------------------------------------------------------------
+
++ SRCDIR = ../..
++ include ../../Makefile.global
++
+  OBJS = common/SUBSYS.o gist/SUBSYS.o hash/SUBSYS.o heap/SUBSYS.o \
+         index/SUBSYS.o rtree/SUBSYS.o nbtree/SUBSYS.o transam/SUBSYS.o
+
+
+*** ./backend/bootstrap/Makefile.orig   Fri Apr 18 06:00:23 1997
+- --- ./backend/bootstrap/Makefile      Tue Jun  3 10:23:59 1997
+***************
+*** 38,44 ****
+  all: SUBSYS.o
+
+  SUBSYS.o: $(OBJS)
+!       ld -r -o SUBSYS.o $(OBJS)
+
+  # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
+  # make depend, but we state it here explicitly anyway because
+- --- 38,44 ----
+  all: SUBSYS.o
+
+  SUBSYS.o: $(OBJS)
+!       $(LD) -r -o SUBSYS.o $(OBJS)
+
+  # bootstrap.o's dependency on bootstrap_tokens.h is computed by the
+  # make depend, but we state it here explicitly anyway because
+
+*** ./backend/Makefile.orig     Thu May 22 00:00:15 1997
+- --- ./backend/Makefile        Thu Jun  5 16:47:27 1997
+***************
+*** 54,60 ****
+  all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
+
+  postgres: $(OBJS) ../utils/version.o
+!       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+
+  $(OBJS): $(DIRS:%=%.dir)
+
+- --- 54,64 ----
+  all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source
+
+  postgres: $(OBJS) ../utils/version.o
+! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+!       -rm -f *.o
+!       find . -name "*.o" -exec cp \{\} . \;
+!       rm -f SUBSYS.o
+!       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
+
+  $(OBJS): $(DIRS:%=%.dir)
+
+***************
+*** 116,122 ****
+  install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
+           global1.bki.source local1_template1.bki.source \
+           libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
+!
+        $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
+  ifeq ($(MAKE_EXPORTS), true)
+        $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
+- --- 120,126 ----
+  install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
+           global1.bki.source local1_template1.bki.source \
+           libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
+!
+        $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
+  ifeq ($(MAKE_EXPORTS), true)
+        $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
+
+*** ./backend/optimizer/Makefile.orig   Wed Feb 19 12:00:34 1997
+- --- ./backend/optimizer/Makefile      Tue Jun  3 10:39:47 1997
+***************
+*** 8,13 ****
+- --- 8,16 ----
+  #
+  #-------------------------------------------------------------------------
+
++ SRCDIR= ../..
++ include ../../Makefile.global
++
+  all: submake SUBSYS.o
+
+  OBJS = path/SUBSYS.o plan/SUBSYS.o prep/SUBSYS.o util/SUBSYS.o geqo/SUBSYS.o
+
+*** ./backend/libpq/pqcomprim.c.orig    Mon May 26 00:00:23 1997
+- --- ./backend/libpq/pqcomprim.c       Fri Jun  6 16:02:24 1997
+***************
+*** 32,40 ****
+  #    define hton_l(n) (ntoh_l(n))
+  #  else       /* BYTE_ORDER != BIG_ENDIAN */
+  #    if BYTE_ORDER == PDP_ENDIAN
+! #      #error PDP_ENDIAN macros not written yet
+  #    else     /* BYTE_ORDER !=  anything known */
+! #      #error BYTE_ORDER not defined as anything understood
+  #    endif    /* BYTE_ORDER == PDP_ENDIAN */
+  #  endif      /* BYTE_ORDER == BIG_ENDIAN */
+  #endif                /* BYTE_ORDER == LITTLE_ENDIAN */
+- --- 32,40 ----
+  #    define hton_l(n) (ntoh_l(n))
+  #  else       /* BYTE_ORDER != BIG_ENDIAN */
+  #    if BYTE_ORDER == PDP_ENDIAN
+! #      error PDP_ENDIAN macros not written yet
+  #    else     /* BYTE_ORDER !=  anything known */
+! #      error BYTE_ORDER not defined as anything understood
+  #    endif    /* BYTE_ORDER == PDP_ENDIAN */
+  #  endif      /* BYTE_ORDER == BIG_ENDIAN */
+  #endif                /* BYTE_ORDER == LITTLE_ENDIAN */
+
+*** ./backend/storage/Makefile.orig     Sun Nov 10 00:01:06 1996
+- --- ./backend/storage/Makefile        Tue Jun  3 10:41:29 1997
+***************
+*** 8,13 ****
+- --- 8,16 ----
+  #
+  #-------------------------------------------------------------------------
+
++ SRCDIR= ../..
++ include ../../Makefile.global
++
+  all: submake SUBSYS.o
+
+  OBJS = buffer/SUBSYS.o file/SUBSYS.o ipc/SUBSYS.o large_object/SUBSYS.o \
+
+
+
+
+1.9)    Why does lex fail with PostgreSQL 6.2.1?
+
+        IRIX 5.3 lex has been reported to fail in 
+        postgresql-6.2.1/src/backend/parser with the error:
+
+        lex scan.l
+        "scan.l":line 86: Error: Invalid request %x xc
+        gmake[2]: *** [scan.c] Error 1
+
+        The answer is to use GNU flex 2.5.4 or later. Use the command
+           flex --version
+        to check you have a new enough version of flex
+
+
+1.10)   How do I install PostgreSQL V6.3 under Irix 6.x?
+
+        Irix 6.2-6.4 has a bug in ld which mishandles the addresses of
+        static procedures when object files are assembled into
+        larger object files using 'ld -r'. This bug has been reported
+        to Silicon Graphics. 
+
+        Depending on your Irix installation you may also encounter
+        2 other problems detailed below: Conflict in C standards,
+        Conflict in library functions.
+
+        a) Solving the ld bug
+        ---------------------
+
+        One option is to use the Gnu version of ld. Alternatively,
+        the following patch should be applied as a workaround. 
+        (Supplied by Bob Bruccoleri <bruc@bms.com> and modified for
+        PostgreSQL V6.3 by Lasse Hiller Petersen <lassehp@imv.aau.dk>)
+
+        Apply the following patch:
+
+*** ./backend/Makefile.orig     Tue Mar  3 15:33:58 1998
+--- ./backend/Makefile  Tue Mar  3 15:39:27 1998
+***************
+*** 63,69 ****
+                                global1.description
+local1_template1.description
+
+  postgres: $(OBJS) ../utils/version.o
+!       $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+
+  $(OBJS): $(DIRS:%=%.dir)
+
+--- 63,73 ----
+                                global1.description
+local1_template1.description
+
+  postgres: $(OBJS) ../utils/version.o
+! #     $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+!       -rm -f *.o
+!       find . -name "*.o" -exec cp \{\} . \;
+!       rm -f SUBSYS.o
+!       $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS)
+
+  $(OBJS): $(DIRS:%=%.dir)
+
+
+
+
+        Lasse configured with ./configure --enable-locale
+        and modified Makefile.custom to contain:
+CC = cc -n32
+LD = ld -n32
+        
+        He reports that the installation without -n32 works fine too,
+        but the -n32 was required for compatibility with his Perl
+        installation. His system was an Origin200 running IRIX64 v6.4.
+
+
+        b) Conflict in C standards
+        --------------------------
+
+        I have found that the following patch is also necessary in order
+        to prevent a duplicate definition of a Union used for semaphores.
+        Apply the following patch to:
+        .../src/makefile/Makefile.irix5:
+
+*** src/makefiles/Makefile.irix5.orig   Thu Mar  5 16:59:58 1998
+--- src/makefiles/Makefile.irix5        Thu Mar  5 17:01:13 1998
+***************
+*** 6,9 ****
+  %.so: %.o
+        $(LD) -G -Bdynamic -shared -o $@ $<
+
+!
+--- 6,9 ----
+  %.so: %.o
+        $(LD) -G -Bdynamic -shared -o $@ $<
+
+! CFLAGS+= -U_NO_XOPEN4
+
+        i.e. the addition of the line:
+        CFLAGS+= -U_NO_XOPEN4
+
+        This is needed to stop the semun union being redefined in
+        /usr/include/sys/sem.h
+
+        c) Conflict in library functions
+        --------------------------------
+
+        In addition, if you have the nsl and crypt libraries these will
+        conflict with the required definitions. I think that libnsl.a
+        may be the Netware socket library (or something similar). In
+        any case, if you have these libraries, they will be added to
+        Makefile.global and you will need to remove them.
+
+        Thus, you should edit .../src/Makefile.global. Goto (approximately)
+        line 217 where LDFLAGS= is set and remove -lnsl and -lcrypt
+        from this line.
+
+
+----------------------------------------------------------------------
+Section 2:      Deinstalling PostgreSQL
+----------------------------------------------------------------------
+
+2.1)    Why can't I move the executable files?
+
+        By default, the IRIX port uses the BSD compatible version of
+        install from /usr/bin/X11. If you read the man page for this
+        version of install, you will see that it is not meant for
+        end-user use; it has the interesting side-effect of chowning
+        files it installs to root.
+
+        You should still be able to delete the files as you (the
+        postgres user) will own the directory in which they are
+        stored.
+
+        The normal IRIX install program cannot be used easily as it
+        takes its arguments in the reverse order. It is therefore
+        recommended to use the GNU version of install (ginstall).
+        See Question 1.4
+
+
+----------------------------------------------------------------------
+Section 3:      Extending PostgreSQL
+----------------------------------------------------------------------
+3.1)    How do I compile a C program to create a function for extending
+        PostgreSQL
+
+        Here is a sample command line:
+
+        cc -I/usr/local/PostgreSQL/include/ -I/usr/local/PostgreSQL/src/backend 
+                -shared -o funcs.so funcs.c
+
+
+----------------------------------------------------------------------------
+Dr. Andrew C.R. Martin                             University College London
+EMAIL: (Work) martin@biochem.ucl.ac.uk    (Home) andrew@stagleys.demon.co.uk
+URL:   http://www.biochem.ucl.ac.uk/~martin
+Tel:   (Work) +44(0)171 419 3890                    (Home) +44(0)1372 275775
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e6a3ef2090e316c2a5fd366b4ab0ad04eb6e6131 100644 (file)
@@ -0,0 +1,702 @@
+=======================================================
+Frequently Asked Questions (FAQ) for PostgreSQL >= V6.1
+Linux Specific
+TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
+=======================================================
+last updated:           Fri Jun 19 13:35:00 BST 1998
+
+current maintainer:     Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
+original author:        Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
+
+
+Changes in this version (* = modified, + = new, - = removed):
+
++1.23)  Why does the compile fail with messages about F_BOOLIN, F_BOOLOUT
+        and F_BYTEAIN being undeclared?
+
+This file is divided approximately as follows:
+1.*)    Installing PostgreSQL
+2.*)    Compiling accessory programs
+3.*)    Runtime Problems
+
+
+Questions answered:
+1.1)    What changes do I need to make to src/Makefile.global or
+        src/Makefile.custom and are there any other changes needed?
+1.2)    Why do I get problems with missing libreadline?
+1.3)    [REDHAT] Why do I get problems with missing libdl and dlfcn.h?
+1.4)    [SLACKWARE 3.1] Why do I get problems with missing libdl and dlfcn.h?
+1.5)    My compile of the backend dies complaining about the include file
+        dlfcn.h missing
+1.6)    GCC complains about an ignored option -fpic
+1.7)    I get warnings of the form
+        warning: cast from pointer to integer of different size
+1.8)    [SuSE-Linux 4.2-4.4] Where is curses and termcap?
+1.9)    Why do I get problems with ld.so?
+1.10)   Why do I get `yy_flush_buffer undefined' errors?
+1.11)   How do I compile PostgreSQL on an a.out system?
+1.12)   Why does make fail with:
+        yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
+        make: /usr/bin/make: cannot execute binary file
+1.13)   What are the references in X11_LIB to libsocket and libnsl in
+        src/Makefile.global?
+1.14)   [DEBIAN] Where is libtermcap?
+1.15)   [REDHAT] Can I get PostgreSQL as an RPM?
+1.16)   While trying to compile a development version under Linux, compilation
+        fails with a message like:
+        In file included from /usr/include/sys/sem.h:8,
+                 from ipc.c:37:
+        /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_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 <mimo@lodz.pdi.net>
+        (http://www.pdi.lodz.pl/~mimo) has kindly put together an RPM
+        for PostgreSQL V6.0 on Intel architectures which he has uploaded to 
+        ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm
+
+        This is a pre-compiled version, the source RPM is on its
+        was as I write (3rd Feb 1997).
+
+1.16)   While trying to compile a development version under Linux, compilation
+        fails with a message like:
+        In file included from /usr/include/sys/sem.h:8,
+                 from ipc.c:37:
+        /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
+        ....
+        make: *** [ipc.o] Error 1
+
+        The problem is that Linux provides no prototypes for these
+        inline functions. The solution is to go into the 
+        .../src/backend/storage/ipc directory and edit the Makefile.
+        Change the line
+           CFLAGS+=$(INCLUDE_OPT)
+        to
+           CFLAGS+=$(INCLUDE_OPT) -Wno-error
+
+        Do the same in the ../src/backend/storage/lmgr directory.
+
+1.17)   When compiling postgres, gcc reports signal 11 and aborts.
+        More specifically:
+           gcc: Internal compiler error: program cc1 got fatal 
+                signal 11
+
+        This may be a hardware/memory problem. PortgreSQL is a big
+        program, and large gcc compilations (such as building
+        PostgreSQL or bebuilding the kernel) stress memory like 
+        few other programs, resulting in errors that do not occur
+        in normal operation. Lesser operating systems are also
+        unlikely to stress the hardware to this degree so you
+        may never see any problems under DOS/Windows.
+
+        More information on this problem at:
+           http://www.bitwizard.nl/sig11
+
+        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 <t-ishii@sra.co.jp> has done this under 
+        MkLinux DR2.1 update2 after a small patch available from:
+        ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz
+
+1.19)   Why does make exit or crash?
+
+        There have been a couple of reports of gmake either just
+        exiting early or seg faulting. The latter problem was reported
+        with gmake 3.74 - upgrading to 3.76.1 solved the problem. 
+        However, 3.74 is known to work fine in other people's setups.
+        In short, try upgrading gmake to the latest version you can 
+        find before reporting this as a problem
+
+1.20)   How can I optimise for 486 or pentium processors
+
+        The default compiler flags perform no optimisation for 486
+        or Pentium processors. To add such optimisation, edit
+        Makefile.custom and add:
+
+           CFLAGS+= -m486
+
+        or (for the new compilers that most people are not yet running)
+
+           CFLAGS+= -mpentium
+        or
+           CFLAGS+= -mpentiumpro
+
+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 
+        <john@intelligent.co.uk> which you should modify as needed:
+
+#!/bin/sh
+#
+# postgreSQL.init This shell script takes care of starting and stopping
+#               the PostgreSQL postmaster.
+#
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Source networking configuration.
+. /etc/sysconfig/network
+
+# Check that networking is up.
+[ ${NETWORKING} = "no" ] && exit 0
+
+# See how we were called.
+case "$1" in
+  start)
+        # Start daemons.
+        echo -n "Starting postgres Postmaster daemon:"
+        if [ -z "`pidofproc postmaster`" ]
+        then
+                su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &"
+                echo -n " postmaster"
+        else
+                echo -n " (already running)"
+        fi
+        echo
+        touch /var/lock/subsys/postgres
+        ;;
+  stop)
+        # Stop daemons.
+        echo -n "Shutting down postgres Postmaster daemon: "
+        killall -TERM postmaster 2>/dev/null
+        killall -TERM postgres 2>/dev/null
+        echo
+        rm -f /var/lock/subsys/postgres
+        ;;
+  *)
+        echo "Usage: postgres {start|stop}"
+        exit 1
+esac
+
+exit 0
+
+
+
+3.9)    Why does Query 32 in the regression tests take so long?
+
+        This is due to a bug in regression scripts which only happens
+        on linux boxes. There are two workarounds as far as I know
+        (information from Tatsuo Ishii <t-ishii@sra.co.jp>):
+
+        1. change following in regress.sh:
+                time postgres -texecutor -tplanner -Q bench < bench.sql
+        to:
+                postgres -texecutor -tplanner -Q bench < bench.sql
+
+        2. after running the test, remove a line at the very end of
+        bench.out something like:
+                85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k
+        then type:
+                sh ./perquery < bench.out > & bench.out.perquery
+
+
+
+3.10)   Why do I get funny rounding results in some date/time arithmetic,
+        such as
+           select '4 hours'::timespan;
+        returning '3 hours 59 minutes 60 seconds'?
+
+        You are running the new glibc2 libraries and have a version earlier than
+        2.0.7. It is a math rounding problem in the library. Upgrade your library.
+----------------------------------------------------------------------------
+Dr. Andrew C.R. Martin                             University College London
+EMAIL: (Work) martin@biochem.ucl.ac.uk    (Home) andrew@stagleys.demon.co.uk
+URL:   http://www.biochem.ucl.ac.uk/~martin
+Tel:   (Work) +44(0)171 419 3890                    (Home) +44(0)1372 275775