mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			403 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			403 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =====================================================
 | |
| Frequently Asked Questions (FAQ) for PostgresSQL V6.0
 | |
| Linux Specific
 | |
| TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
 | |
| =====================================================
 | |
| last updated:           Wed Jan 29 20:16:00 GMT 1997
 | |
| 
 | |
| current maintainer:     Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
 | |
| original author:        Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
 | |
| 
 | |
| 
 | |
| Changes in this version (* = modified, + = new, - = removed):
 | |
| *1.1)   What changes do I need to make to src/Makefile.global or
 | |
|         src/Makefile.custom?
 | |
| *1.2)   Why do I get problems with missing libreadline?
 | |
| *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] Where is curses and termcap?
 | |
| *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.14)  [DEBIAN] Where is libtermcap?
 | |
| *2.1)   The linker fails to find libX11 when compiling pgtclsh
 | |
| +3.6)   Why does psql fail with:
 | |
|         psql: can't load library 'libpq.so.1'
 | |
| -4.*)   Spurious problems
 | |
| 
 | |
| 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?
 | |
| 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] 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?
 | |
| 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'
 | |
| 4.1)    Why doesn't the postmaster start the first time?
 | |
| 
 | |
| ----------------------------------------------------------------------
 | |
| Section 1:      Compiling PostgreSQL
 | |
| ----------------------------------------------------------------------
 | |
| 
 | |
| 1.1)    What changes do I need to make to src/Makefile.global or
 | |
|         src/Makefile.custom?
 | |
| 
 | |
| 	These changes are most easily made by running the customize
 | |
| 	shell script in the src directory which will write a
 | |
| 	Makefile.custom for you.
 | |
| 
 | |
|         If you do it 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?
 | |
| 
 | |
|         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!
 | |
| 
 | |
|         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?
 | |
| 
 | |
|         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 3.1 distribution and unpack this file
 | |
|         from the root (/) directory, then do
 | |
| 
 | |
|                 sh install/doinst.sh
 | |
| 
 | |
|         to complete the installation. Follow this with
 | |
| 
 | |
|                 ldconfig
 | |
| 
 | |
|         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
 | |
| 
 | |
| 
 | |
| 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] Where is curses and termcap?
 | |
| 
 | |
|         SuSE-Linux has ncurses but not curses. Set the value of CURSES_LIB
 | |
|         in src/Makefile.custom to -lncurses (or do this through the
 | |
|         customize script).
 | |
| 
 | |
|         SuSE-Linux has the termcap library is in /usr/lib/termcap instead of 
 | |
|         in /usr/lib. If you have a problem, you need to add the following 
 | |
|         line to src/Makefile.custom:
 | |
| 
 | |
|                 LDADD_BE+= -L/usr/lib/termcap
 | |
| 
 | |
|         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.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
 | |
| 
 | |
|         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+=
 | |
| 
 | |
| 
 | |
| ----------------------------------------------------------------------
 | |
| 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, apply a patch to
 | |
|         V2.5.3 (supplied in doc/README.flex) or wait for V2.5.4 which 
 | |
|         will fix the bug.
 | |
| 
 | |
| 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
 | |
| 
 |