1999-06-05 07:43:07 +04:00
|
|
|
|
1998-11-24 06:48:22 +03:00
|
|
|
=======================================================
|
|
|
|
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:
|
1999-06-05 07:43:07 +04:00
|
|
|
/usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bi
|
|
|
|
t'
|
1998-11-24 06:48:22 +03:00
|
|
|
....
|
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when
|
1998-11-24 06:48:22 +03:00
|
|
|
running scripts like createuser
|
1999-06-05 07:43:07 +04:00
|
|
|
3.2) I run postmaster and after that system says 'Bad system call(Core
|
1998-11-24 06:48:22 +03:00
|
|
|
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?
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Changes to the makefiles are most easily made by running the
|
1998-11-24 06:48:22 +03:00
|
|
|
customize shell script in the src directory which will write a
|
1999-06-05 07:43:07 +04:00
|
|
|
Makefile.custom for you.
|
1998-11-24 06:48:22 +03:00
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
The only other change you may have to make is to replace
|
1998-11-24 06:48:22 +03:00
|
|
|
Flex if you have version 2.5.3 which has a bug which generally
|
|
|
|
manifests itself as createuser failing (See Question 3.4)
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
If you modify the makefiles by hand, you *must* set the
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
in src/Makefile.global or src/Makefile.custom or install the GNU
|
1998-11-24 06:48:22 +03:00
|
|
|
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:
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.
|
|
|
|
7.14-4.i386.rpm
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
altogether surprising). Consequently it is a good idea to reboot
|
1998-11-24 06:48:22 +03:00
|
|
|
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!
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
If you want to do it the hard way, you can obtain the library and the
|
1998-11-24 06:48:22 +03:00
|
|
|
header file from:
|
1999-06-05 07:43:07 +04:00
|
|
|
|
1998-11-24 06:48:22 +03:00
|
|
|
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Alternatively, you may find precompiled binaries in
|
1998-11-24 06:48:22 +03:00
|
|
|
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.
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
See the answer to question 1.3. Slackware up to version 3.0 was
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
releases (before 9th September 1996) had them missing and many
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
altogether surprising). Consequently it is a good idea to reboot
|
1998-11-24 06:48:22 +03:00
|
|
|
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.
|
|
|
|
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
1.5) My compile of the backend dies complaining about the include file
|
1998-11-24 06:48:22 +03:00
|
|
|
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.
|
1999-06-05 07:43:07 +04:00
|
|
|
It appears that more recent versions (V2.7.2?) require -fPIC.
|
|
|
|
If you are using an ELF version of Linux, this can safely be
|
1998-11-24 06:48:22 +03:00
|
|
|
ignored as -fPIC is the default.
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
You can correct this by editing src/Makefile.global and
|
1998-11-24 06:48:22 +03:00
|
|
|
changing CFLAGS_SL
|
|
|
|
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
1.7) I get warnings of the form
|
1998-11-24 06:48:22 +03:00
|
|
|
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.
|
1999-06-05 07:43:07 +04:00
|
|
|
SuSE-Linux also has the termcap library is in /usr/lib/termcap
|
1998-11-24 06:48:22 +03:00
|
|
|
instead of in /usr/lib.
|
|
|
|
|
|
|
|
PostgreSQL (up to V6.0)
|
|
|
|
-----------------------
|
1999-06-05 07:43:07 +04:00
|
|
|
Set the value of CURSES_LIB in src/Makefile.custom to -lncurses
|
1998-11-24 06:48:22 +03:00
|
|
|
(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
|
1999-06-05 07:43:07 +04:00
|
|
|
(after -lreadline). (Alternatively, you can modify
|
1998-11-24 06:48:22 +03:00
|
|
|
src/Makefile.custom before running configure.)
|
|
|
|
|
|
|
|
Some versions of SuSE provide only ncurses, so you may need
|
1999-06-05 07:43:07 +04:00
|
|
|
to force use of ncurses rather than curses by changing
|
1998-11-24 06:48:22 +03:00
|
|
|
-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
|
1999-06-05 07:43:07 +04:00
|
|
|
For some reason (certain versions of make? certain versions of
|
1998-11-24 06:48:22 +03:00
|
|
|
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?
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
This was a problem in 1.08 (they are Sun Solaris specific).
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
(which uses terminfo instead). There is no need to change the
|
|
|
|
CURSES_LIB variable in src/bin/psql/Makefile since Debian provides
|
1998-11-24 06:48:22 +03:00
|
|
|
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?
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Yes! Michal Mosiewicz
|
1998-11-24 06:48:22 +03:00
|
|
|
(http://www.pdi.lodz.pl/~mimo) has kindly put together an RPM
|
1999-06-05 07:43:07 +04:00
|
|
|
for PostgreSQL V6.0 on Intel architectures which he has uploaded to
|
1998-11-24 06:48:22 +03:00
|
|
|
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:
|
1999-06-05 07:43:07 +04:00
|
|
|
/usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bi
|
|
|
|
t'
|
1998-11-24 06:48:22 +03:00
|
|
|
....
|
|
|
|
make: *** [ipc.o] Error 1
|
|
|
|
|
|
|
|
The problem is that Linux provides no prototypes for these
|
1999-06-05 07:43:07 +04:00
|
|
|
inline functions. The solution is to go into the
|
1998-11-24 06:48:22 +03:00
|
|
|
.../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:
|
1999-06-05 07:43:07 +04:00
|
|
|
gcc: Internal compiler error: program cc1 got fatal
|
1998-11-24 06:48:22 +03:00
|
|
|
signal 11
|
|
|
|
|
|
|
|
This may be a hardware/memory problem. PortgreSQL is a big
|
|
|
|
program, and large gcc compilations (such as building
|
1999-06-05 07:43:07 +04:00
|
|
|
PostgreSQL or bebuilding the kernel) stress memory like
|
1998-11-24 06:48:22 +03:00
|
|
|
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?
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Tatsuo Ishii has done this under
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
with gmake 3.74 - upgrading to 3.76.1 solved the problem.
|
1998-11-24 06:48:22 +03:00
|
|
|
However, 3.74 is known to work fine in other people's setups.
|
1999-06-05 07:43:07 +04:00
|
|
|
In short, try upgrading gmake to the latest version you can
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
Redhat 5.0. Update your glibc to the latest RedHat version
|
|
|
|
for v5.0/hurricane. Anything prior to glibc-2.0.7 is likely
|
1998-11-24 06:48:22 +03:00
|
|
|
to have the problem.
|
1999-06-05 07:43:07 +04:00
|
|
|
|
1998-11-24 06:48:22 +03:00
|
|
|
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,
|
1999-06-05 07:43:07 +04:00
|
|
|
including a linux_elf patch.
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
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
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
This is tricky unless you know why it happens, as these constants
|
1998-11-24 06:48:22 +03:00
|
|
|
don't seem to be defined anywhere.
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
The solution is to make sure that cpp is included in your path
|
|
|
|
before you start the make.
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
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
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when
|
1998-11-24 06:48:22 +03:00
|
|
|
running scripts like createuser
|
|
|
|
|
|
|
|
This is a bug in V1.06-V1.07 of Postgres and is fixed in V1.08
|
|
|
|
and above.
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
3.2) I run postmaster and after that system says 'Bad system call(Core
|
1998-11-24 06:48:22 +03:00
|
|
|
dumped)'
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
This indicates that you have not compiled shared memory support
|
|
|
|
into your kernel. You need to recompile the Linux kernel to add this
|
1998-11-24 06:48:22 +03:00
|
|
|
feature.
|
|
|
|
|
|
|
|
|
|
|
|
3.3) When I try to start the Postmaster, why do I get an error of the form
|
1999-06-05 07:43:07 +04:00
|
|
|
Failed Assertion("!(file != 0):(null)", File:
|
1998-11-24 06:48:22 +03:00
|
|
|
"/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
|
|
|
|
!(file != 0) (0)
|
|
|
|
initdb: could not create template database
|
|
|
|
initdb: cleaning up.
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Your permissions on the file /dev/null are wrong.
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
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?
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
There is a problem with Version 2.5.3 of GNU flex and createuser.
|
1998-11-24 06:48:22 +03:00
|
|
|
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'
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Psql has been compiled to link dynamically with the libpq
|
|
|
|
library.
|
1998-11-24 06:48:22 +03:00
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
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
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
paths to be searched for shared libraries. This list is
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
I'm not sure what the symptoms might be except for nothing
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
sure you get them out of the way and look at Q3.6 for
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
release you should create a SysV style script in
|
1998-11-24 06:48:22 +03:00
|
|
|
/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
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
Here's another sample file supplied by John Robinson
|
|
|
|
which you should modify as needed:
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
#!/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
|
1999-06-05 07:43:07 +04:00
|
|
|
su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgr
|
|
|
|
eSQL/data -p 5432 &"
|
1998-11-24 06:48:22 +03:00
|
|
|
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
|
1999-06-05 07:43:07 +04:00
|
|
|
(information from Tatsuo Ishii ):
|
1998-11-24 06:48:22 +03:00
|
|
|
|
|
|
|
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:
|
1999-06-05 07:43:07 +04:00
|
|
|
85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata
|
|
|
|
0maxresident)k
|
1998-11-24 06:48:22 +03:00
|
|
|
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'?
|
|
|
|
|
1999-06-05 07:43:07 +04:00
|
|
|
You are running the new glibc2 libraries and have a version earlier tha
|
|
|
|
n
|
|
|
|
2.0.7. It is a math rounding problem in the library. Upgrade your libra
|
|
|
|
ry.
|
1998-11-24 06:48:22 +03:00
|
|
|
----------------------------------------------------------------------------
|
|
|
|
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
|