diff options
Diffstat (limited to 'doc/src/FAQ/FAQ_linux.html')
-rw-r--r-- | doc/src/FAQ/FAQ_linux.html | 704 |
1 files changed, 0 insertions, 704 deletions
diff --git a/doc/src/FAQ/FAQ_linux.html b/doc/src/FAQ/FAQ_linux.html deleted file mode 100644 index d89fcc4d8ac..00000000000 --- a/doc/src/FAQ/FAQ_linux.html +++ /dev/null @@ -1,704 +0,0 @@ -<PRE> -======================================================= -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 -</PRE> |