|
|
|
|
@ -1,31 +1,18 @@ |
|
|
|
|
===================================================== |
|
|
|
|
Frequently Asked Questions (FAQ) for PostgresSQL V6.0 |
|
|
|
|
======================================================= |
|
|
|
|
Frequently Asked Questions (FAQ) for PostgreSQL >= V6.1 |
|
|
|
|
Linux Specific |
|
|
|
|
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
|
|
|
|
===================================================== |
|
|
|
|
last updated: Wed Jan 29 20:16:00 GMT 1997 |
|
|
|
|
======================================================= |
|
|
|
|
last updated: Wed Oct 01 11:45:00 BST 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 |
|
|
|
|
|
|
|
|
|
+3.9) Why does Query 32 in the regression tests take so long? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This file is divided approximately as follows: |
|
|
|
|
1.*) Installing PostgreSQL |
|
|
|
|
@ -35,7 +22,7 @@ This file is divided approximately as follows: |
|
|
|
|
|
|
|
|
|
Questions answered: |
|
|
|
|
1.1) What changes do I need to make to src/Makefile.global or |
|
|
|
|
src/Makefile.custom? |
|
|
|
|
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? |
|
|
|
|
@ -44,7 +31,7 @@ Questions answered: |
|
|
|
|
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.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? |
|
|
|
|
@ -54,6 +41,16 @@ Questions answered: |
|
|
|
|
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? |
|
|
|
|
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 |
|
|
|
|
@ -72,20 +69,28 @@ Questions answered: |
|
|
|
|
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? |
|
|
|
|
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? |
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------- |
|
|
|
|
Section 1: Compiling PostgreSQL |
|
|
|
|
---------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
1.1) What changes do I need to make to src/Makefile.global or |
|
|
|
|
src/Makefile.custom? |
|
|
|
|
src/Makefile.custom and are there any other changes needed? |
|
|
|
|
|
|
|
|
|
These changes are most easily made by running the customize |
|
|
|
|
shell script in the src directory which will write a |
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
If you do it by hand, you *must* set the following variable: |
|
|
|
|
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 |
|
|
|
|
@ -130,6 +135,10 @@ Section 1: Compiling PostgreSQL |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
@ -164,6 +173,10 @@ Section 1: Compiling PostgreSQL |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
@ -236,26 +249,41 @@ Section 1: Compiling PostgreSQL |
|
|
|
|
except those related to system header files (which can also |
|
|
|
|
be safely ignored). |
|
|
|
|
|
|
|
|
|
1.8) [SuSE-Linux 4.2] Where is curses and termcap? |
|
|
|
|
1.8) [SuSE-Linux 4.2-4.4] 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 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. |
|
|
|
|
|
|
|
|
|
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: |
|
|
|
|
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 comment out the |
|
|
|
|
change: |
|
|
|
|
You may need to edit src/bin/psql/Makefile and change: |
|
|
|
|
ifeq ($(PORTNAME), linux) |
|
|
|
|
LD_ADD+= -ltermcap |
|
|
|
|
LD_ADD+= |
|
|
|
|
to: |
|
|
|
|
ifeq ($(PORTNAME), linux) |
|
|
|
|
LD_ADD+= |
|
|
|
|
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). |
|
|
|
|
|
|
|
|
|
You may also wish to force use of ncurses rather than curses by |
|
|
|
|
changing -lcurses to -lncurses. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.9) Why do I get problems with ld.so? |
|
|
|
|
@ -282,6 +310,7 @@ Section 1: Compiling PostgreSQL |
|
|
|
|
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= |
|
|
|
|
@ -327,6 +356,57 @@ Section 1: Compiling PostgreSQL |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------- |
|
|
|
|
Section 2: Compiling accessory programs |
|
|
|
|
---------------------------------------------------------------------- |
|
|
|
|
@ -375,9 +455,10 @@ Section 3: Runtime Problems |
|
|
|
|
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. |
|
|
|
|
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 , |
|
|
|
|
@ -398,5 +479,122 @@ Section 3: Runtime Problems |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
/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 |
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------- |
|
|
|
|
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 |