head	1.2;
access;
symbols;
locks; strict;
comment	@# @;


1.2
date	2000.09.23.00.42.35;	author petere;	state dead;
branches;
next	1.1;

1.1
date	2000.09.14.02.21.31;	author momjian;	state Exp;
branches;
next	;


desc
@@


1.2
log
@These are obsolete.
@
text
@
   Hufig gestellte Fragen (FAQ) zu PostgreSQL >= V6.1, Linux-spezifisch
                                      
                 Bitte Zusammen mit der normalen FAQ lesen!
     _________________________________________________________________
   
   Letztes Update des Originals: Tue Aug 10 11:15:00 BST 1999
   Original-FAQ gepflegt durch: Andrew C.R. Martin
   (martin@@biochem.ucl.ac.uk)
   Original Autor: Andrew C.R. Martin (martin@@biochem.ucl.ac.uk)
   
   Letztes Update der bersetzung: Mo, 23. August 1999, 10:00 CEST
   bersetzer: Karsten Schulz (schulz@@linux-systemhaus.de)
     _________________________________________________________________
   
   nderungen in dieser Version (* = gendert, + = neu, - = entfernt)
   
   +3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget
   failed (Permission denied)?
   
Diese Datei ist ungefhr wie folgt unterteilt:

   1.*) PostgreSQL kompilieren
   2.*) Hilfs- und Zusatzprogramme kompilieren
   3.*) Laufzeit Probleme
   
Beantwortete Fragen:

   
   
  PostgreSQL kompilieren
  
   1.1) Welche Anpassungen mssen in src/Makefile.global oder
   src/Makefile.custom gemacht werden und gibt es weitere notwendige
   nderungen?
   1.2) Warum habe ich Probleme mit der fehlenden Bibliothek libreadline?
   1.3) [REDHAT] Warum habe ich Probleme mit der fehlenden Bibliothek
   libdl und der fehlenden dlfcn.h?
   1.4) [SLACKWARE 3.1] Warum habe ich Probleme mit der fehlenden
   Bibliothek libdl und der fehlenden dlfcn.h?
   1.5) Die Kompilierung des Backends schlgt mit der Meldung fehl, da
   die Include-Datei dlfcn.h fehlen wrde.
   1.6) GCC meldet, da er die Option -fpic ignorieren wrde.
   1.7) Ich bekomme Warnungen, wie: warning: cast from pointer to integer
   of different size
   1.8) [SuSE-Linux 4.2-5.3] Wo sind curses und termcap?
   1.9) Warum bekomme ich Probleme mit ld.so?
   1.10) Wieso bekomme ich yy_flush_buffer undefined Fehler?
   1.11) Wie kompiliere ich PostgreSQL auf einem a.out System?
   1.12) Warum scheitert make mit der Meldung:
   yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y make:
   /usr/bin/make: cannot execute binary file
   1.13) Was sind die Bezge in der Bibliothek X11_LIB zu libsocket und
   libnsl in der Datei src/Makefile.global?
   1.14) [DEBIAN] Wo ist die Bibliothek libtermcap?
   1.15) [REDHAT] Kann ich PostgreSQL als RPM-Archiv bekommen?
   1.16) Whrend ich versuche eine Entwickler-Version unter Linux zu
   kompilieren, bricht der Vorgang mit folgender Fehlermeldung ab:
   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) Beim Kompilieren von PostgreSQL bricht der gcc mit einer Signal
   11 Meldung ab.
   1.18) Kann ich Version 6.1.1 unter MkLinux installieren?
   1.19) Warum stoppt make oder bricht sonstwie ab?
   1.20) Wie kann ich fr die Prozessoren 486 oder Pentium optimieren?
   1.21) Wieso bekomme ich seltsame Ergebnisse beim Drucken von Zeiten
   (z.B. beim Regressionstest 'timespan')?
   1.22) Warum bekomme ich keine shared libraries fr libpq, wenn ich
   Version 6.3.2 kompiliere?
   1.23) Warum scheitert der Kompilierungslauf mit Nachrichten, da
   F_BOOLIN, F_BOOLOUT und F_BYTEAIN nicht deklariert seien?
   
   
  Hilfs- und Zusatzprogramme kompilieren
  
   2.1) Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh
   kompiliert werden soll.
   
   
  Laufzeit Probleme
  
   3.1) Ich bekomme die Fehlermeldung _fUnKy_POSTPORT_sTuFf_ undefined,
   wenn Skripts wie createuser laufen.
   3.2) Nachdem ich postmaster starte, meldet das System Bad system call
   (Core dumped)
   3.3) Wenn ich versuche, den Postmaster zu starten, bekomme ich eine
   Fehlermeldung wie:
   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) Warum funktioniert createuser nicht?
   3.5) Wieso bekomme ich einen Fehler, wie:
   IpcMemoryCreate: memKey=155356396 , size=760632 ,
   permission=384IpcMemoryCreate: shmget(..., create, ...)
   failed: Invalid argument
   3.6) Wieso scheitert der Aufruf von psql mit: psql: can't load library
   'libpq.so.1
   3.7) Andere seltsame Verhaltensweisen
   3.8) Wenn PostgreSQL beim Systemhalt lief, fhrt Linux beim Neustart
   jedesmal einen Filesystemcheck (fsck) durch
   3.9) Warum dauert Query 32 in den RegressionsTests so lange?
   3.10) Warum bekomme ich lustige Rundungsergebnisse in einigen
   Datums/Zeit-Berechnungen, wie:
   select '4 hours'::timespan;
   liefert '3 hours 59 minutes 60 seconds'?
   +3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget
   failed (Permission denied)?
   
  Abschnitt 1: PostgreSQL kompilieren
  
    1.1) Welche Anpassungen mssen in src/Makefile.global oder
    src/Makefile.custom gemacht werden und gibt es weitere notwendige
    nderungen?
    
   nderungen an den Makefiles werden am einfachsten dadurch gemacht,
   indem das customize shellscript im src-Verzeichnis aufgerufen wird,
   das ein Makefile.custom erzeugt.
   
   Die einzige andere nderung, die evtl. zu machen wre, ist Flex zu
   ersetzen, wenn Du die Version 2.5.3 hast. Diese Version hat einen
   Fehler, der sich durch das Scheitern des createuser-Programms uert.
   (siehe dazu auch Frage 3.4).
   
   Falls Du die Makefiles manuell nderst, musst Du die folgende Variable
   setzen:
PORTNAME= linux

   Du musst auch die folgende Variable ndern, damit sie auf Deine
   Installation passt:
POSTGRESDIR

   Falls Du die USE_TCL-Option aktivierst, musst Du folgende Variablen
   setzen:
TCL_INCDIR=
TCL_LIBDIR=
TCL_LIB=
TK_INCDIR=
TK_LIBDIR=
TK_LIB=
X11_INCDIR=
X11_LIBDIR=
X11_LIB=

   Auf meinem Slackware 3.0 System sind das:
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

   Du solltest auch alle weiteren nderungen durchfhren, die in der
   Datei INSTALL und in Makefile.global dokumentiert sind.
   
    1.2) Warum habe ich Probleme mit der fehlenden Bibliothek libreadline?
    
   Linux Systeme kommen in der Regel nicht mit einer installierten GNU
   readline Bibliothek. Stelle entweder sicher, da Du die
   readline-Optionen in src/Makefile.global oder src/Makefile.custom
   nicht aktivierst oder installiere die GNU readline Bibliothek.
   Hinweis: Debian Linux (wie FreeBSD) kommt mit einer installierten GNU
   readline Bibliothek.
   
    1.3) [REDHAT] Warum habe ich Probleme mit der fehlenden Bibliothek libdl
    und der fehlenden dlfcn.h?
    
   Das Problem erscheint dadurch, da in der letzten Phase des
   Kompilierungsvorgangs Funktionen wie dlopen(), dlclose(), etc. nicht
   gelinkt werden knnen.
   
   Die libdl Bibliothek wird zum dynamischen Linken von
   Benutzerfunktionen zur Laufzeit benutzt. Aus irgendwelchen Grnden
   wurde diese Bibliothek mit der RedHat-Distribution nicht ausgeliefert.
   Anscheinend ist dies in der letzten RedHat 4.0 (Colgate) gendert
   worden.
   
   RedHat hat nun ein neues ld.so RPM-Archiv auf ihrem ftp-Server. Hole
   Dir einfach:
   
   ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.
   i386.rpm
   
   Installiere das RPM-Archiv wie blich und gut ist!
   
   Hinweis: Du mut configure und make clean nach der Installation der
   Bibliothek und vor dem erneuten Kompilieren laufen lassen.
   
   Es gab einen Bericht ber ein zerstrtes System, weil Programme auf
   diese Bibliothek whrend des Updates zugegriffen haben (alles in allem
   nicht weiter berraschend). Konsequenterweise ist es eine gute Idee,
   das System vor der Installation zu rebooten, um so wenige Programme
   wie mglich whrend des Updates laufen zu haben. In den
   Single-User-Mode zu gehen ist wahrscheinlich auch eine gute Idee!
   
   Wenn Du lieber den harten Weg gehen willst, kannst Du die Bibliothek
   und die Header-Dateien von:
   
   ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz
   
   holen. Alternativ findest Du vorkompilierte Binaries in
   distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb auf dem
   gleichen ftp-Server oder folge den Instruktionen bei Frage 1.2, die
   den gleichen Fehler fr Slackware 3.1 behandelt.
   
   Mache es aber nur auf diese Weise, wenn Du weit, was Du tust!
   
    1.4) [SLACKWARE 3.1] Warum habe ich Probleme mit der fehlenden Bibliothek
    libdl und der fehlenden dlfcn.h?
    
   Das Problem erscheint dadurch, da in der letzten Phase des
   Kompilierungsvorgangs Funktionen wie dlopen(), dlclose(), etc. nicht
   gelinkt werden knnen.
   
   Siehe die Antwort zu Frage 1.3.
   
   Slackware bis Version 3.0 war mit dieser Bibliothek und der
   Include-Datei ausgestattet und ab spten 3.1er-Versionen scheinen sie
   auch wieder da zu sein. Aber in frhen 3.1er-Versionen (vor dem
   09.09.96) fehlten sie und es wurden viele CD-ROMs von diesen ersten
   3.1.er-Versionen gepresst.
   
   Es gab einen Bericht ber ein zerstrtes System, weil Programme auf
   diese Bibliothek whrend des Updates zugegriffen haben (alles in allem
   nicht weiter berraschend). Konsequenterweise ist es eine gute Idee,
   das System vor der Installation zu rebooten, um so wenige Programme
   wie mglich whrend des Updates laufen zu haben. In den
   Single-User-Mode zu gehen ist wahrscheinlich auch eine gute Idee!
   
   Der einfachste Weg, den Fehler zu beseitigen ist, die Datei ldso.tgz
   von der a4-Diskette einer aktuelleren Slackware zu nehmen, diese Datei
   im Wurzelverzeichnis (/) zu entpacken und dann ein
sh install/doinst.sh

   durchzufhren. Danach ein
ldconfig

   durchfhren.
   
   Hinweis: Du mut configure und make clean nach der Installation der
   Bibliothek und vor dem erneuten Kompilieren laufen lassen.
   
   Falls Du manuell installieren mchtest, installiere zuerst die Datei
   dlfcn.h in /usr/include. Dann die libdl.so.1.7.14 (oder was immer die
   letzte Version ist) in /lib. Dann fhre folgende Befehle aus:
cd /lib
ln -sf libdl.so.1.7.14 libdl.so.1
ln -sf libdl.so.1 libdl.so

   Auf manchen Systemen (je nach Deiner gcc-Konfiguration) knnen noch
   folgende Befehle notwendig sein:
cd /usr/lib
ln -sf /lib/libdl.so .

   Und zum Schlu noch ein
ldconfig

   Hinweis: Du mut configure und make clean nach der Installation der
   Bibliothek und vor dem erneuten Kompilieren laufen lassen.
   
    1.5) Die Kompilierung des Backends schlgt mit der Meldung fehl, da die
    Include-Datei dlfcn.h fehlen wrde.
    
   Siehe die Antworten zu den Fragen 1.3 und 1.4. Und vergiss nicht,
   falls Du ein a.out-System benutzt, da Du das dld-Paket installiert
   haben mu (welches bei den meisten a.out-Systemen nicht dabei ist), um
   dlfcn.h zu haben. Siehe Frage 1.11.
   
    1.6) GCC meldet, da er die Option -fpic ignorieren wrde.
    
   Frhere Versionen des gcc nahmen entweder -fpic oder -fPIC an. Es
   scheint, da neuere Versionen (V2.7.2?) -fPIC erfordern. Falls Du ein
   ELF-System benutzt, kannst das alles ignoriert werden, da -fPIC als
   Standardvorgabe voreingestellt ist. Du kannst diese Angabe
   korrigieren, indem Du CFLAGS_SL in der Datei src/Makefile.global
   nderst.
   
    1.7) Ich bekomme Warnungen, wie: warning: cast from pointer to integer of
    different size
    
   Diese Warnungen wurden in frheren Versionen von Postgres95 gesichtet
   und knnen ignoriert werden. PostgreSQL V6.0 sollte ohne Warnungen
   kompiliert werden, auer jenen, die sich auf System-Header-Dateien
   beziehen (welche auch ignoriert werden knnen).
   
    1.8) [SuSE-Linux 4.2-5.3] Wo sind curses und termcap?
    
   SuSE-Linux 4.2 hat ncurses, nicht curses. Version 4.4 scheint beide
   Bibliotheken zu haben. Bei SuSE-Linux ist auerdem die
   termcap-Bibliothek in /usr/lib/termcap/ und nicht in /usr/lib.
   
      PostgreSQL (bis Version V6.0)
      
   Setze den Wert fr CURSES_LIB in src/Makefile.custom auf -lncurses
   (oder erledige das durch das customize script. Fge folgende Zeile zur
   Datei src/Makefile.custom hinzu:
LDADD_BE+= -L/usr/lib/termcap

   Mglicherweise mut Du in der Datei src/bin/psql/Makefile folgende
   nderung durchfhren:
ifeq ($(PORTNAME), linux)
  LD_ADD+=

   ndern in:
ifeq ($(PORTNAME), linux)
  LD_ADD+= -ltermcap

      PostgreSQL (V6.1)
      
   Das Konfigurationsscript wei nicht, da es auch in /usr/lib/termcap
   nach der termcap-Bibliothek schauen soll. Du solltest dieses
   Verzeichnis angeben, wenn es nach zustzlichen Such-Verzeichnissen
   fragt.
   
   Falls das nicht funkitoniert (Ich habe SuSE nicht, um das zu testen),
   dann solltest Du nach dem ./configure-Lauf die Datei
   src/Makefile.global ndern und in die LDFLAGS-Zeile den Eintrag
   -ltermcap (nach -lreadline) hinzufgen. (Alternativ kannst Du auch die
   Datei src/Makefile.custom ndern, bevor Du ./configure aufrufst.)
   
   Einige SuSE-Versionen liefern nur ncurses, deshalb kann es sein, da
   Du die Benutzung von ncurses statt curses erzwingen mut, indem Du
   -lcurses in -lncurses nderst. (besttigt fr SuSE 5.1)
   
      PostgreSQL (V6.4)
      
   In PostgreSQL V6.4 berprft configure sowohl das Vorhandensein von
   curses, als auch das von ncurses. In der Zwischenzeit kannst Du den
   patch von Karl Eichwalder (ke@@suse.de) anwenden:
   
   http://www.PostgreSQL.ORG/mhonarc/pgsql-patches/msg00407.html
   oder (mit deutschen Bemerkungen):
   http://www.suse.de/Support/sdb/ke_postgresql-632.html
   
   Es gab auerdem einen Bericht, da beim Update von SuSE 5.0 auf SuSE
   5.2 der Link von libtermcap.so.2.0.8 auf libtermcap.so nicht gesetzt
   wurde:
cd /usr/lib
ln -s libtermcap.so.2.0.8 libtermcap.so

    1.9) Warum bekomme ich Probleme mit ld.so?
    
   Falls Du Probleme mit ld.so bekommst - eine andere Bibliothek, die im
   ELF-System fr dynamisches Laden bentigt wird - dann hast Du Deine
   Systeminstallation oder wahrscheinlicher ein Linux-Update
   durcheinandergebracht Siehe die Fragen 1.3/1.4. Mglicherweise mut Du
   ld.so.x.y.z in /lib installieren und ldconfig laufen lassen. Die
   aktuellste Version des ld-Packages ist 1.7.14. Zum Zeitpunkt des
   Schreibens dieser FAQ ist die Version 1.8 noch experimental.
   
    1.10) Wieso bekomme ich yy_flush_buffer undefined Fehler?
    
   Das ist nicht wirklich Linux-spezifisch, aber es tritt hufiger auf
   alten Linux-Systemen auf. Du brauchst eine aktuelle Version von flex
   (2.5.2. oder neuer), um PostgreSQL zu kompilieren. Beachte, da flex
   2.5.3. einen Bug hat, siehe auch Frage 3.4.
   
    1.11) Wie kompiliere ich PostgreSQL auf einem a.out System?
    
   Als erstes mut Du die dld-Bibliothek installieren. Diese gibt es auf
   Sunsite unter Linux/libs/dld.3.2.7.tar.gz
   (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz).
   
   Dann fge folgende Zeile in src/Makefile.custom hinzu:
LINUX_ELF=

   oder benutze das customize Skript
   
    1.12) Warum scheitert make mit der Meldung:
    yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y make: /usr/bin/make:
    cannot execute binary file
    
   Das war ein Problem in frhreren Versionen von Postgres95.
   Standardmig benutzt PostgreSQL bison -y anstatt yacc.
   
   yacc ist normalerweise als Skript implementiert, das bison -y aufruft.
   Aus verschiedenen Grnden ist make nicht in der Lage, das Skript
   auszufhren (verschiedene Versionen von make? Verschiedene Versionen
   der bash?)
   
   Um das zu beheben, ndere einfach die Datei
   src/mk/port/postgres.mk.linux am Ende. Die Zeile:
# YACC = bison -y

   wird zu:
YACC = bison -y

    1.13) Was sind die Bezge in der Bibliothek X11_LIB zu libsocket und libnsl
    in der Datei src/Makefile.global?
    
   Das war ein Problem in Version 1.08 (Sun Solaris spezifisch). Sie sind
   behoben in 1.09 und 6.0
   
    1.14) [DEBIAN] Wo ist die Bibliothek libtermcap?
    
   Debian Linux kommt ohne die termcap-Bibliothek und benutzt ncurses
   (welche terminfo benutzt). Es gibt keinen Grund, die
   CURSES_LIB-Variable in src/bin/psql/Makefile zu ndern, da Debian
   einen Link von libncurses auf libcurses bereitstellt (im Gegensatz zu
   SuSE, siehe Frage 1.8)
   
   Du kannst die Datei src/bin/psql/Makefile wie folgt ndern:
ifeq ($(PORTNAME), linux)
  LD_ADD+= -ltermcap

   in
ifeq ($(PORTNAME), linux)
  LD_ADD+=


    1.15) [REDHAT] Kann ich PostgreSQL als RPM-Archiv bekommen?
    
   Ja! Michal Mosiewicz (http://www.pdi.lodz.pl/~mimo) hat ein RPM fr
   PostgreSQL V6.0 auf Intel Architekturen zusammengestellt, welches er
   nach ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm
   hochgeladen hat.
   
   Das ist eine vorkompilierte Version, das Quelltext-RPM stammt vom
   03.02.1997.
   
    1.16) Whrend ich versuche eine Entwickler-Version unter Linux zu
    kompilieren, bricht der Vorgang mit folgender Fehlermeldung ab:
    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
    
   Das Problem ist, da Linux keine Prototypen fr diese
   Inline-Funktionen bereithlt. Die Lsung liegt darin, das Makefile in
   .../src/backend/storage/ipc/ zu ndern: ndere die Zeile:
CFLAGS+=$(INCLUDE_OPT)

   in
CFLAGS+=$(INCLUDE_OPT) -Wno-error

   Mache dasselbe dann im ../src/backend/storage/lmgr Verzeichnis.
   
    1.17) Beim Kompilieren von PostgreSQL bricht der gcc mit einer Signal 11
    Meldung ab.
    
   Oder genauer: gcc: Internal compiler error: program cc1 got fatal
   signal 11
   
   Das knnen Hardware/Speicherprobleme sein. PostgreSQL ist ein groes
   Programm und groe gcc-Kompilierungslfe (wie eben PostgreSQL oder
   eine Kernel-Kompilierung) beanspruchen den Hauptspeicher wie wenig
   andere Programme. Dadurch knnen Fehler auftreten, die in normalen
   Situationen nicht erscheinen. Niedrigere Betriebssysteme beanspruchen
   die Hardware ebenfalls nicht in diesem Mae, deshalb kann es sein, da
   Du niemals Probleme unter DOS/Windows siehst.
   
   Mehr Information zu diesem Problem gibt es unter
   http://www.BitWizard.nl/sig11/ und in deutsch unter
   http://www.suse.de/sdb/de/html/kfr_58.html.
   
   Laut dieser Sig11-FAQ scheint es ein spezielles Problem mit dem RedHat
   5.0 gcc auf einem Cyrix-Prozessor zu geben. Siehe bitte dort nach den
   Details nach.
   
    1.18) Kann ich Version 6.1.1 unter MkLinux installieren?
    
   Tatsuo Ishii hat das unter MkLinux DR2.1 update2 geschafft, nachdem
   der kleine Patch von
   ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz
   eingespielt wurde.
   
    1.19) Warum stoppt make oder bricht sonstwie ab?
    
   Es gibt eine Reihe von Reports darber, da gmake zu frh aussteigt
   oder mit einem Segmentation Fault aussteigt. Das letzte Problem wurde
   von gmake 3.74 berichtet. Ein Update auf 3.76.1 lste dieses Problem.
   Wie auch immer, 3.74 arbeitet bei vielen Leuten zur vollsten
   Zufriedenheit. Kurz gesagt, upgrade Deinen gmake auf die aktuellste
   Version, bevor Du dieses Problem meldest.
   
    1.20) Wie kann ich fr die Prozessoren 486 oder Pentium optimieren?
    
   Die Standard-Compilerflags fhren keine Optimierung fr den 486er oder
   den Pentium-Prozessor durch. Um diese Optimierung zu aktivieren, fge
   wahlweise eine der folgenden Zeilen der Datei Makefile.custom hinzu:
CFLAGS+= -m486

   oder
CFLAGS+= -mpentium

   oder
CFLAGS+= -mpentiumpro

    1.21) Wieso bekomme ich seltsame Ergebnisse beim Drucken von Zeiten (z.B.
    beim Regressionstest 'timespan')?
    
   Die Zeit erscheint z.B. als: "4 hours 59 mins 60.00 secs" und nicht
   als "5 hours"
   
   Das ist ein Problem mit der glibc2-Bibliothek, die mit RedHat 5.0
   ausgeliefert wird. Update Deine glibc auf die aktuellste
   RedHat-Version fr v5.0/Hurricane. Alle Versionen vor glibc-2.9.7
   scheinen dieses Problem zu haben.
   
    1.22) Warum bekomme ich keine shared libraries fr libpq, wenn ich Version
    6.3.2 kompiliere?
    
   Es gab eine Last-Minute-nderung der Linux-Konfiguration fr Version
   6.3.2. Siehe fr einige Fehlerbehebungen und einen Linux-ELF-Patch in
   ftp://postgresql.org/pub/patches/ nach.
   
    1.23) Warum scheitert der Kompilierungslauf mit Nachrichten, da F_BOOLIN,
    F_BOOLOUT und F_BYTEAIN nicht deklariert seien?
    
   Die komplette Meldung sieht ungefhr so aus:
           -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

   Solange Du nicht weit, warum das passiert, ist dieses Problem
   ziemlich kniffelig, da diese Konstanten anscheinend nirgendwo
   definiert werden.
   
   Die Lsung ist dafr zu sorgen, da der cpp in Deinem Pfad erreichbar
   ist, bevor make gestartet wird.
   
   Auf Redhat 5.1, ist cpp in /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3
   
  Abschnitt 2: Hilfs- und Zusatzprogramme kompilieren
  
    2.1) Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh kompiliert
    werden soll.
    
   Fge folgende Zeile in src/Makefile.custom hinzu:
X11_LIBDIR = /usr/X11R6/lib

  Abschnitt 3: Laufzeit Probleme
  
    3.1) Ich bekomme die Fehlermeldung _fUnKy_POSTPORT_sTuFf_ undefined, wenn
    Skripts wie createuser laufen.
    
   Das ist ein Fehler in Versionen 1.06-1.07 und ist ab Version 1.08 und
   hher behoben.
   
    3.2) Nachdem ich postmaster starte, meldet das System Bad system call (Core
    dumped)
    
   Diese Fehlermeldung deutet an, da Du keinen Shared-Memory-Support in
   den Kernel einkompiliert hast. Der Kernel mu mit dieser Option neu
   kompiliert werden, um diese Eigenschaft hinzuzufgen.
   
    3.3) Wenn ich versuche, den Postmaster zu starten, bekomme ich eine
    Fehlermeldung wie:
    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.
    
   Deine Berechtigungen fr die Datei /dev/null sind falsch gesetzt. ein
   ls -l /dev/null sollte folgende Ausgabe zeigen:
crw-rw-rw-  1 root  wheel    2,   2 Oct  8 18:41 /dev/null

   Korrigiere die Berechtigungen mit:
chmod a+rw /dev/null

    3.4) Warum funktioniert createuser nicht?
    
   Es gibt ein Problem mit Version 2.5.3 des GNU flex und createuser. Die
   Mglichkeiten, diesen Fehler zu beheben sind: Entweder auf die
   flex-Version 2.5.3 zu gehen, auf Version 2.5.4 zu gehen, oder den
   Patch nach doc/README.flex einzuspielen.
   
   Die Version 2.5.4. gibt es unter
   ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz.
   
    3.5) Wieso bekomme ich einen Fehler, wie:
    IpcMemoryCreate: memKey=155356396 , size=760632 ,
    permission=384IpcMemoryCreate: shmget(..., create, ...)
    failed: Invalid argument
    
   Du hast keine IPC-Untersttzung in Deinen Linux-Kernel einkompiliert.
   Der Kernel mu mit dieser Option neu kompiliert werden, um diese
   Eigenschaft hinzuzufgen.
   
    3.6) Wieso scheitert der Aufruf von psql mit: psql: can't load library
    'libpq.so.1
    
   Psql wurde mit dynamischen Zugriff auf die libpq-bibliothek
   kompiliert. Um dieses Problem zu lsen, solltest Du Dich als root
   anmelden und die Datei /etc/ld.so.conf editieren. Fge eine Zeile am
   Ende hinzu, die den Namen des PostgreSQL-Bibliotheken-Verzeichnis
   enthlt (das lib-Verzeichnis im PostgreSQL-Installationsverzeichnis)
   und rufe den Befehl /sbin/ldconfig -v auf. Alternativ (und falls Du
   keinen root-Zugriff hast) kannst Du die LD_LIBRARY_PATH-Variable
   benutzen. Die LD_LIBRARY_PATH-Variable enthlt eine durch Doppelpunkt
   getrennte Liste mit Suchpfaden fr Shared-Bibliotheken. Diese Liste
   wird durchsucht, bevor auf die Informationen von ldconfig zugegriffen
   wird. Unter der bash sieht das ganze so aus:
export LD_LIBRARY_PATH='PathToPGSQL'/lib

   unter der tcsh so:
setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib

   wobei 'PathToPGSQL' das Installationsverzeichnis von PostgreSQL ist.
   Hinweis: der ldd-Befehl dient dazu, sich die dynamischen Bibliotheken
   fr eine bestimmte ausfhrbare Datei anzeigen zu lassen.
   
    3.7) Andere seltsame Verhaltensweisen
    
   Ich bin mir nicht sicher, welche Symptome alle auftreten knnen, auer
   da gar nichts richtig funktioniert, aber es stellte sich heraus, da
   man sorgsam darauf achten sollte, da die richtige Version der
   libpq-Bibliothek geladen wird. Falls Du alte Versionen in Deinem
   Bibliothekspfad hast (z.B. in /usr/lib) knnen diese statt der neueren
   Version geladen werden. Schaffe diese alten Versionen beiseite und
   siehe im brigen Frage 3.6 fr weitere Details bezglich dem Laden von
   Bibliotheken.
   
    3.8) Wenn PostgreSQL beim Systemhalt lief, fhrt Linux beim Neustart
    jedesmal einen Filesystemcheck (fsck) durch
    
   Es gab darber einige Berichte und es scheint, da dies passiert, wenn
   PostgreSQL von der /etc/inittab gestartet wird, wie im
   INSTALL-Dokument beschrieben.
   
   Deshalb wird Dir empfohlen, den postmaster von einem rc-Skript aus zu
   starten. Unter einem Slackware-artigem System wrdest Du
   /etc/rc.d/rc.local modifizieren, um den postmaster zu starten.
   
   Unter RedHat-artigen Systemen wrdest Du ein SysV-artiges Skript in
   /etc/rc.d/rc3.d basierend auf der /etc/rc.d/init.d Schablonen-Datei
   erstellen.
   
   Es gibt eine Beispieldatei unter dem Verzeichnis
   contrib/linux/postgres.init.
   
   Hier ist noch ein anderes Beispiel von John Robinson welches Du
   entsprechend anpassen kannst.
#!/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/postgr
eSQL/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) Warum dauert Query 32 in den RegressionsTests so lange?
    
   Das passiert wegen eines Fehlers in den Regressions-Skripten auf
   Linux-Kisten. Es gibt - soweit ich wei - zwei Mglichkeiten, diese
   Fehler zu umgehen (die Information stammt von Tatsuo Ishii):
   
   1. ndere folgende Zeile in regress.sh:
time postgres -texecutor -tplanner -Q bench < bench.sql

   in
postgres -texecutor -tplanner -Q bench < bench.sql

   2. nachdem der Test gelaufen ist, entferne eine Zeile ganz am Ende der
   Datei bench.out, die ungefhr so aussieht:
85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k

   dann gib folgendes auf der Befehlszeile ein:
sh ./perquery < bench.out > & bench.out.perquery

    3.10) Warum bekomme ich lustige Rundungsergebnisse in einigen
    Datums/Zeit-Berechnungen, wie:
    select '4 hours'::timespan;
    liefert '3 hours 59 minutes 60 seconds'?
    
   Du benutzt neue glibc2-Bibliotheken in einer Version kleiner als
   2.0.7. Das ist ein mathematisches Rundungsproblem. Aktualisiere Deine
   Bibliothek.
   
    3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget failed
    (Permission denied)?
    
   Im Detail erscheint der Fehler mit dieser Meldung:
In detail, a message like this may appear:
IpcMemoryCreate: shmget failed (Permission denied)
key=5432010, size=120, permission=700
IpcMemoryAttach: shmat failed (Permission denied) id=0
FATAL 1:  AttachSLockMemory: could not attach segment

   Dieser Fehler wird durch nicht gelschte Segmente im shared memory
   verursacht. (Du kannst sie mit dem Programm ipcs sehen. Benutze das
   Programm ipcrm, um sie zu lschen.
     _________________________________________________________________
   
   Author of the english version
   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
   
   Translator of the german version
   Karsten Schulz Linux Systemhaus Schulz
   EMAIL: (Work) schulz@@Linux-Systemhaus.de (Home) kaschu@@t800.ping.de
   URL: http://www.Linux-Systemhaus.de/
   Tel: (Work) +49 231 3944432 (Fax) +49 231 3944435
@


1.1
log
@Add new FAQ's.
@
text
@@

