+++ /dev/null
-
- Häufig 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 (* = geändert, + = neu, - = entfernt)
-
- +3.11) Wieso bekomme ich einen Fehler wie: IpcMemoryCreate: shmget
- failed (Permission denied)?
-
-Diese Datei ist ungefähr wie folgt unterteilt:
-
- 1.*) PostgreSQL kompilieren
- 2.*) Hilfs- und Zusatzprogramme kompilieren
- 3.*) Laufzeit Probleme
-
-Beantwortete Fragen:
-
-
-
- PostgreSQL kompilieren
-
- 1.1) Welche Anpassungen müssen 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 schlägt mit der Meldung fehl, daß
- die Include-Datei dlfcn.h fehlen würde.
- 1.6) GCC meldet, daß er die Option -fpic ignorieren würde.
- 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 Bezüge 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) Während 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 für 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 für 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, führt 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 müssen 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 wäre, 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 äußert.
- (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 durchführen, 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 können.
-
- Die libdl Bibliothek wird zum dynamischen Linken von
- Benutzerfunktionen zur Laufzeit benutzt. Aus irgendwelchen Gründen
- wurde diese Bibliothek mit der RedHat-Distribution nicht ausgeliefert.
- Anscheinend ist dies in der letzten RedHat 4.0 (Colgate) geändert
- 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 mußt configure und make clean nach der Installation der
- Bibliothek und vor dem erneuten Kompilieren laufen lassen.
-
- Es gab einen Bericht über ein zerstörtes System, weil Programme auf
- diese Bibliothek während 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 möglich während 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 für Slackware 3.1 behandelt.
-
- Mache es aber nur auf diese Weise, wenn Du weißt, 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 können.
-
- Siehe die Antwort zu Frage 1.3.
-
- Slackware bis Version 3.0 war mit dieser Bibliothek und der
- Include-Datei ausgestattet und ab späten 3.1er-Versionen scheinen sie
- auch wieder da zu sein. Aber in frühen 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 zerstörtes System, weil Programme auf
- diese Bibliothek während 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 möglich während 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
-
- durchzuführen. Danach ein
-ldconfig
-
- durchführen.
-
- Hinweis: Du mußt configure und make clean nach der Installation der
- Bibliothek und vor dem erneuten Kompilieren laufen lassen.
-
- Falls Du manuell installieren möchtest, 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 führe 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) können noch
- folgende Befehle notwendig sein:
-cd /usr/lib
-ln -sf /lib/libdl.so .
-
- Und zum Schluß noch ein
-ldconfig
-
- Hinweis: Du mußt configure und make clean nach der Installation der
- Bibliothek und vor dem erneuten Kompilieren laufen lassen.
-
- 1.5) Die Kompilierung des Backends schlägt mit der Meldung fehl, daß die
- Include-Datei dlfcn.h fehlen würde.
-
- 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 würde.
-
- Frühere 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 früheren Versionen von Postgres95 gesichtet
- und können ignoriert werden. PostgreSQL V6.0 sollte ohne Warnungen
- kompiliert werden, außer jenen, die sich auf System-Header-Dateien
- beziehen (welche auch ignoriert werden können).
-
- 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 außerdem die
- termcap-Bibliothek in /usr/lib/termcap/ und nicht in /usr/lib.
-
- PostgreSQL (bis Version V6.0)
-
- Setze den Wert für CURSES_LIB in src/Makefile.custom auf -lncurses
- (oder erledige das durch das customize script. Füge folgende Zeile zur
- Datei src/Makefile.custom hinzu:
-LDADD_BE+= -L/usr/lib/termcap
-
- Möglicherweise mußt Du in der Datei src/bin/psql/Makefile folgende
- Änderung durchführen:
-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 zusätzlichen 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) hinzufügen. (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 mußt, indem Du
- -lcurses in -lncurses änderst. (bestätigt für SuSE 5.1)
-
- PostgreSQL (V6.4)
-
- In PostgreSQL V6.4 überprüft 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 außerdem 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 für dynamisches Laden benötigt wird - dann hast Du Deine
- Systeminstallation oder wahrscheinlicher ein Linux-Update
- durcheinandergebracht Siehe die Fragen 1.3/1.4. Möglicherweise mußt 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 häufiger 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 mußt 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 füge 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 frühreren Versionen von Postgres95.
- Standardmäßig benutzt PostgreSQL bison -y anstatt yacc.
-
- yacc ist normalerweise als Skript implementiert, das bison -y aufruft.
- Aus verschiedenen Gründen ist make nicht in der Lage, das Skript
- auszuführen (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 Bezüge 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 für
- 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) Während 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 für diese
- Inline-Funktionen bereithält. Die Lösung 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 können Hardware/Speicherprobleme sein. PostgreSQL ist ein großes
- Programm und große gcc-Kompilierungsläfe (wie eben PostgreSQL oder
- eine Kernel-Kompilierung) beanspruchen den Hauptspeicher wie wenig
- andere Programme. Dadurch können Fehler auftreten, die in normalen
- Situationen nicht erscheinen. Niedrigere Betriebssysteme beanspruchen
- die Hardware ebenfalls nicht in diesem Maße, 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 darüber, daß gmake zu früh aussteigt
- oder mit einem Segmentation Fault aussteigt. Das letzte Problem wurde
- von gmake 3.74 berichtet. Ein Update auf 3.76.1 löste 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 für die Prozessoren 486 oder Pentium optimieren?
-
- Die Standard-Compilerflags führen keine Optimierung für den 486er oder
- den Pentium-Prozessor durch. Um diese Optimierung zu aktivieren, füge
- 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 für v5.0/Hurricane. Alle Versionen vor glibc-2.9.7
- scheinen dieses Problem zu haben.
-
- 1.22) Warum bekomme ich keine shared libraries für libpq, wenn ich Version
- 6.3.2 kompiliere?
-
- Es gab eine Last-Minute-Änderung der Linux-Konfiguration für Version
- 6.3.2. Siehe für 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 ungefähr 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 weißt, warum das passiert, ist dieses Problem
- ziemlich kniffelig, da diese Konstanten anscheinend nirgendwo
- definiert werden.
-
- Die Lösung ist dafür 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.
-
- Füge 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
- höher 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 hinzuzufügen.
-
- 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 für 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
- Möglichkeiten, 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-Unterstützung in Deinen Linux-Kernel einkompiliert.
- Der Kernel muß mit dieser Option neu kompiliert werden, um diese
- Eigenschaft hinzuzufügen.
-
- 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 lösen, solltest Du Dich als root
- anmelden und die Datei /etc/ld.so.conf editieren. Füge eine Zeile am
- Ende hinzu, die den Namen des PostgreSQL-Bibliotheken-Verzeichnis
- enthält (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 enthält eine durch Doppelpunkt
- getrennte Liste mit Suchpfaden für 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
- für eine bestimmte ausführbare Datei anzeigen zu lassen.
-
- 3.7) Andere seltsame Verhaltensweisen
-
- Ich bin mir nicht sicher, welche Symptome alle auftreten können, außer
- 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) können diese statt der neueren
- Version geladen werden. Schaffe diese alten Versionen beiseite und
- siehe im übrigen Frage 3.6 für weitere Details bezüglich dem Laden von
- Bibliotheken.
-
- 3.8) Wenn PostgreSQL beim Systemhalt lief, führt Linux beim Neustart
- jedesmal einen Filesystemcheck (fsck) durch
-
- Es gab darüber 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 würdest Du
- /etc/rc.d/rc.local modifizieren, um den postmaster zu starten.
-
- Unter RedHat-artigen Systemen würdest 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 Möglichkeiten, 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 ungefähr 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 gelöschte Segmente im shared memory
- verursacht. (Du kannst sie mit dem Programm ipcs sehen. Benutze das
- Programm ipcrm, um sie zu löschen.
- _________________________________________________________________
-
- 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
+++ /dev/null
-
-=======================================================
-Frequently Asked Questions (FAQ) per PostgreSQL >= V6.1
-Specifiche per Linux Os
-DA LEGGERE IN CONGIUNZIONE CON LE NORMALI FAQ
-=======================================================
-Ultimo aggiornamento: Lunedi' 18 Maggio 11:17:00 GMT 1998
-
-Curatore corrente: Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
-Autore originale: Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
-Traduzione FAQ in italiano: Daniele Medri 'MaDriD' (madrid@darshan.org)
-
-Cambiamenti in questa versione (* = modificato, + = nuovo, - = rimosso):
-
-+1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
- nel test di regressione 'timespan'?
-Questo file è diviso approsimativamente nel sequente modo:
-1.*) Istallare PostgreSQL
-2.*) Compilare programmi accessori
-3.*) Problemi di esecuzione
-
-
-Domande risposte:
-1.1) Quali cambiamenti devo fare a src/Makefile.global o a src/Makefile.cust
-om
- e ci sono altri cambiamenti necessari?
-1.2) Perche' ricevo problemi con missing libreadline?
-1.3) [REDHAT] Perche' ricevo problemi di libdl e dlfcn.h perse?
-1.4) [SLACKWARE 3.1] Perche' ricevo problemi di libdl e dlfcn.h perse?
-1.5) La mia compilazione si arresta segnalando la mancanza dell'include file
- dlfcn.h perso.
-1.6) GCC reclama una ignorata opzione -fpic
-1.7) Ricevo messaggi di warning (errore) del tipo
- warning: cast from pointer to integer of different size
-1.8) [SuSE-Linux 4.2-4.4] Dove sono curses e termcap?
-1.9) Perche' ho problemi con ld.so?
-1.10) Perche' ricevo errori del tipo `yy_flush_buffer undefined'?
-1.11) Come posso compilare PostgreSQL su un sistema a.out?
-1.12) Che cosa fallisce con:
- yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
- make: /usr/bin/make: cannot execute binary file
-1.13) Quali sono i riferimenti in X11_LIB a libsocket e libnsl in
- src/Makefile.global?
-1.14) [DEBIAN] Dov'e' libtermcap?
-1.15) [REDHAT] Posso trovare PostgreSQL come RPM?
-1.16) Quando tento di compilare una versione in sviluppo sotto Linux, la
- compilazione fallisce con il seguente messaggio:
- 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_bi
-t'
- ....
- make: *** [ipc.o] Error 1
-1.17) Quando sto' compilando postgres, gcc riporta un signal 11 e si interrom
-pe.
-1.18) Posso installare 6.1.1 su MkLinux?
-1.19) Perche' esce o va in crash?
-1.20) Come posso ottimizzarlo per un 486 o un processore pentium
-1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
- nel test di regressione 'timespan'?
-2.1) Il linker non trova libX11 quando sta' compilando pgtclsh
-3.1) Ricevo un messaggio tipo _fUnKy_POSTPORT_sTuFf_ non definito quando
- lancio uno script come createuser
-3.2) Lancio postmaster e dopo il sistema dice 'Bad system call(Core
- dumped)'
-3.3) Quando tento di lanciare Postmaster, perche' ricevo un errore del tipo
- 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) Perche' createuser non funziona?
-3.5) Perche' ricevo un errore del tipo:
- IpcMemoryCreate: memKey=155356396 , size=760632 ,
- permission=384IpcMemoryCreate: shmget(..., create, ...)
- failed: Invalid argument
-3.6) Perche' psql fallisce con:
- psql: can't load library 'libpq.so.1'
-3.7) Altri comportamenti strani
-3.8) Quando PostgreSQL e' attivo allo shutdown di sistema, Linux
- esegue al reboot un fsck al disco.
-3.9) Perche' la Query 32 nel test di regressione pretende molto tempo?
-3.10) Perche' ricevo dei risultati arrotondati su date/time aritmetici,
- come
- select '4 hours'::timespan;
- returning '3 hours 59 minutes 60 seconds'?
-
-----------------------------------------------------------------------
-Sezione 1: Compilare PostgreSQL
-----------------------------------------------------------------------
-
-1.1) Quali cambiamenti devo fare a src/Makefile.global o a
- src/Makefile.custom e ci sono altri cambiamenti necessari?
-
- I cambiamenti ai makefiles sono piu'facilmente fatti usando
- lo script di shell per la personalizzazione che si trova nella
- directory src che scrive un file Makefile.custom appropriato.
-
- I soli altri cambiamenti che tu devi fare e rimpiazzare Flex se tu
- hai una versione 2.5.3, la quale ha dei bug che si manifestano al
- fallimento di createuser (Vedi domanda 3.4)
-
- Se tu modifichi i makefiles a mano, tu *devi* settare le seguenti
- variabili:
- PORTNAME= linux
-
- Tu devi anche cambiare quello che segue per settare la tua propria
- installazione:
- POSTGRESDIR
-
- Se tu cambi sull'opzione USE_TCL, devi settare questo:
- TCL_INCDIR=
- TCL_LIBDIR=
- TCL_LIB=
- TK_INCDIR=
- TK_LIBDIR=
- TK_LIB=
- X11_INCDIR=
- X11_LIBDIR=
- X11_LIB=
-
- Sul mio sistema Slackware3.0 esse sono:
- 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
-
- Devi fare ogni altro cambiamento necessario come documentato nel
- file INSTALL e in Makefile.global
-
-
-1.2) Perche' ricevo problemi con missing libreadline?
-
- I sistemi Linux in genere non vengono distribuiti con la libreria
- Gnu readline installata. Si può in ogni caso o disattivare l'opzione
- di readline in src/Makefile.global o src/Makefile.custom, oppure
- installare la libreria GNU stessa (readline).
-
- Nota che Linux Debian (come FreeBSD) esce con le readline installate.
-
-1.3) [REDHAT] Perche' ricevo problemi di libdl e dlfcn.h perse??
-
- Questa manifestazione avvisa che non c'e' la capacita' di linkare
- funzioni come dlopen(), dlclose(), etc. durante l'ultima fase di compil
-azione.
-
- La libreria libdl e' usata per linkare in maniera dinamica le funzioni
- e rendere flessibile l'avvio dell'applicativo. Per alcune ragioni quest
-a
- non era presente nella distribuzione Red Hat. La versione Redhat 4.0
- (Colgate) a colmato a questa mancanza.
-
- RedHat ha ora una nuova versione di ld.so in formato RPM nei propri sit
-i FTP.
- Scaricate:
-
- ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.
-14-4.i386.rpm
-
- Installa il file RPM nella maniera usuale e andra'!
-
- ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
- make clean dopo aver installato la libreria e prima di ricompilare.
-
- C'e' stata una sola notizia di sistema corrotto da programmi che
- accedevano a queste librerie mentre venivano aggiornate (nessun altra
- sorpresa.) Conseguentemente e' una buona idea quella di fare un reboot
- del sistema prima di installare le nuove librerie e avere pochi
- processi attivi durante questo upgrade. Lanciare il sistema in
- modalita' utente singolo (single-user) e' probabilmente una buona idea!
-
- Se tu vuoi fare la strada piu' dura, puoi ottenere la libreria e
- l'header file da:
-
- ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz
-
- Alternativamente puoi trovare i file binari precompilati in
- distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb
- nel medesimo sito, o seguire le istruzioni date alla domanda 1.2 per
- correggere lo stesso errore con le aggiornate versioni di Slackware 3.1
-.
- Non scegliere questo metodo se non sai quello che stai facendo!
-
-
-
-1.4) [SLACKWARE 3.1] Perche' ricevo problemi di libdl e dlfcn.h perse??
-
- Questa manifestazione avvisa che non c'e' la capacita' di linkare
- funzioni come dlopen(), dlclose(), etc. durante l'ultima fase di compil
-azione.
- Guarda la risposta alla domanda 1.3. Slackware fino alla versione 3.0
- era provvista di questa libreria e degli include file e ritornarono nel
-l'ultima
- versione 3.1, ma la prima versione della 3.1 (prima del 9 settembre 199
-6)
- non aveva queste e molte versioni su CD-ROM erano state stampate
- con la prima edizione.
-
- C'e' stata una sola notizia di sistema corrotto da programmi che
- accedevano a queste librerie mentre venivano aggiornate (nessun altra
- sorpresa.) Conseguentemente e' una buona idea quella di fare un reboot
- del sistema prima di installare le nuove librerie e avere pochi
- processi attivi durante questo upgrade. Lanciare il sistema in
- modalita' utente singolo (single-user) e' probabilmente una buona idea!
-
- Per fissare facilmente questo basta ottenere il file ldso.tgz dal quart
-o
- dischetto della piu' recente distribuzione Slackware e scompattarlo da
- dalla directory di root (/) e poi lanciare
-
- sh install/doinst.sh
-
- per completare l'installazione. Successivamente lanciare
-
- ldconfig
-
- ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
- make clean dopo aver installato la libreria e prima di ricompilare.
-
- Se vuoi installarla manualmente bisogna installare prima il file
- dlfcn.h in /usr/include.
-
- Secondo, installa il file libdl.so.1.7.14 (o qualsiasi altra versione)
- in /lib, e poi fai:
-
- cd /lib
- ln -sf libdl.so.1.7.14 libdl.so.1
- ln -sf libdl.so.1 libdl.so
-
- Su certi sistemi (a seconda della personale configurazione di GCC)
- e' necessario fare:
-
- cd /usr/lib
- ln -sf /lib/libdl.so .
-
- Finalmente
-
- ldconfig
-
- ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
- make clean dopo aver installato la libreria e prima di ricompilare.
-
-
-1.5) La mia compilazione si arresta segnalando la mancanza dell'include file
- dlfcn.h perso.
-
- Guarda la risposta 1.3/1.4. Non dimenticare che se stai usando un siste
-ma
- a.out devi prima avere installato il pacchetto dld (il quale non viene
- fornito con molti sistemi a.out) per avere dlfcn.h e gli altri.
- Guarda la domanda 1.11.
-
-
-1.6) GCC reclama una ignorata opzione -fpic
-
- Le prime versioni di GCC accettavano entrambe -fpic o -£PIC.
- Nelle piu' recenti versioni (V2.7.2?) richiede -£PIC.
- Se tu stai usando una versione ELF di Linux, questa puo' per sicurezza
- essere ignorata perche' -£PIC e' di default.
-
- Puoi correggere questa editando il file src/Makefile.global e cambiare
- CFLAGS_SL
-
-
-1.7) Ricevo messaggi di warning (errore) del tipo
- warning: cast from pointer to integer of different size
-
- Questi appararivano nelle prime versione di Postgres95 e posso per sicu
-rezza
- essere ignorate. PostgreSQL V6.0 dovrebbe compilare senza warnings
- ad eccezione di quelli relativi agli header file di sistema (i quali po
-ssono
- essere ignorati per sicurezza).
-
-1.8) [SuSE-Linux 4.2-4.4] Dove sono curses e termcap?
-
- SuSE-Linux 4.2 ha le ncurses ma non le curses. 4.4 ha entrambe.
- SuSE-Linux ha anche le librerie termcap in /usr/lib/termcap
- invece di essere in /usr/lib.
-
- PostgreSQL (fino alla V6.0)
- -----------------------
- Setta il valore delle CURSES_LIB in src/Makefile.custom a -lncurses
- (o fai questo attraverso lo script di personalizzazione).
- Aggiundi la seguente riga al file src/Makefile.custom:
-
- LDADD_BE+= -L/usr/lib/termcap
-
- Devi editare il file src/bin/psql/Makefile e cambiare:
- ifeq ($(PORTNAME), linux)
- LD_ADD+=
- con:
- ifeq ($(PORTNAME), linux)
- LD_ADD+= -ltermcap
-
- PostgreSQL (V6.1)
- -----------------
- Lo script di configurazone non sa' di cercare nella directory
- /usr/lib/termcap per le librerie termcap, percio' tu devi specificare
- questo come una delle directory delle librerie dove cercare.
-
- Se non funziona (non ho SuSE per verificare che vada)
- allora lancia configure, edita src/Makefile.global e aggiungi
- -ltermcap alla linea LDFLAGS
- (dopo -lreadline). (Alternativamente poi configurare
- src/Makefile.custom prima di lanciare configure.)
-
- Alcune versioni di SuSE forniscono solo ncurses, percio' tu devi
- forzare l'uso delle ncurses piuttosto che le curses cambiando
- -lcurses con -lncurses. (dimostrato per SuSE 5.1)
-
-
-1.9) Perche' ho problemi con ld.so?
-
- Se tu hai problemi con ld.so, un altra libreria richiesta sotto ELF
- per il caricamento dinamico, allora hai creato disordine con la tua
- installazione o fatto un upgrade di Linux.
-
- Guarda le risposte alle domande 1.3/1.4. Devi installare ld.so.x.y.z in
- /lib e lanciare ldconfig.
-
- La piu' recente vesione stabile del pacchetto ld eì 1.7.14
- Mentre scrivo, la versione 1.8.x di ld e' sperimentale.
-
-1.10) Perche' ricevo errori del tipo `yy_flush_buffer undefined'?
-
- Questo non e' specifico per Linux, ma e' comune nelle vecchie istallazi
-one
- di Linux. Devi avere una versione recente di Flex (2.5.2 o superiore)
- per compilare PostgreSQL. Nota che Flex 2.5.3 ha dei bug: guarda la
- domanda 3.4.
-
-1.11) Come posso compilare PostgreSQL su un sistema a.out?
-
- Prima, devi installare la libreria dld. Puoi ottenere questa da Sunsite
- come:
- Linux/libs/dld.3.2.7.tar.gz
- (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz)
-
- Secondo, aggiungi la seguente linea al file src/Makefile.custom:
- LINUX_ELF=
- (o usa lo script di configurazione)
-
-1.12) Che cosa fallisce con:
- yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
- make: /usr/bin/make: cannot execute binary file
-
- Questo e' un problema delle prime versioni di Postgres95. Il default
- per PostgreSQL e' di usare bison -y piuttosto che yacc.
-
- yacc e' generalmente implementato come script che invoca bison -y
- Per alcune ragioni (certe versioni di make? certe versioni di bash?)
- make non puo' eseguire questo file di script.
-
- Per correggere questo, edita semplicemente src/mk/port/postgres.mk.linu
-x
- e alla fine del file cambia:
- # YACC = bison -y
- con
- YACC = bison -y
-
-1.13) Quali sono i riferimenti in X11_LIB a libsocket e libnsl in
- src/Makefile.global?
-
- Questo era un problema nella versione 1.08 (specifica per Sun Solaris)
- E' stata fissata nella 1.09 e 6.0
-
-1.14) [DEBIAN] Dov'e' libtermcap?
-
- Debian Linux viene distribuita senza librerie termcap e usa ncurses
- (le quali usano terminfo all'interno). Non c'e' bisogno di cambiare la
- variabile CURSES_LIB in src/bin/psql/Makefile peche' Debian provvede
- con un link da libncurses a libcurses (diversamente da SuSE-Linux --
- Vedi domanda 1.8).
-
- Devi editare src/bin/psql/Makefile e commentare i cambiamenti:
- ifeq ($(PORTNAME), linux)
- LD_ADD+= -ltermcap
- con:
- ifeq ($(PORTNAME), linux)
- LD_ADD+=
-
-
-1.15) [REDHAT] Posso trovare PostgreSQL come RPM?
-
- Si! Michal Mosiewicz
- (http://www.pdi.lodz.pl/~mimo) ha creato un RPM
- per PostgreSQL V6.0 per architettura Intel uplodata a
- ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm
-
- Questa e' una precompilata versione, le sorgenti RPM erano come
- io ho scritto (3 Febbraio 1997).
-
-1.16) Quando tento di compilare una versione in sviluppo sotto Linux, la
- compilazione fallisce con il seguente messaggio:
- 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_bi
-t'
- ....
- make: *** [ipc.o] Error 1
-
- Il problema e' che Linux non prevede prototipi per queste funzioni inli
-ne.
- La soluzione e' di andare dentro la directory .../src/backend/storage/i
-pc
- ed editare Makefile.
- Cambia la linea
- CFLAGS+=$(INCLUDE_OPT)
- con
- CFLAGS+=$(INCLUDE_OPT) -Wno-error
-
- Fai lo stesso con la directory ../src/backend/storage/lmgr.
-
-1.17) Quando sto' compilando postgres, gcc riporta un signal 11 e si interrom
-pe.
- Piu' specificatamente:
- gcc: Internal compiler error: program cc1 got fatal
- signal 11
-
- Questo e' un problema di hardware/memoria. PostgreSQL e' un grande
- programma, e una larga compilazione con gcc (come la compilazione
- di PostgreSQL o la compilazione del kernel) stressa la memoria come
- molti altri programmi, mostrando errori che non appaiono nelle normali
- operazioni. Sistemi operativi inferiori non riescono a stressare l'hard
-ware
- in questo modo, per questo non vedrai mai questi errori sotto DOS/Windo
-ws.
-
- Maggiori informazioni in merito:
- http://www.bitwizard.nl/sig11
-
- Da questo Sig11 FAQ, sembra essere un errore specifico con Redhat 5.0
- lanciando su un processore Cyrix. Guarda il link superiore per i dettag
-li!
-
-1.18) Posso installare 6.1.1 su MkLinux?
-
- Tatsuo Ishii ha fatto questo su MkLinux DR2.1 update2 dopo una piccola
- patch disponibile presso:
- ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz
-
-1.19) Perche' esce o va in crash??
-
- Ci sono state diverse segnalazioni di gmake, dove in tutte si usciva
- subito e c'era una seg faulting. Il problema piu' marcato e' stato
- riportato con gmake 3.74 - upgradandolo alla 3.76.1 si e' risolto.
- Comunque, la versione 3.74 e' funzionante per altri tipi di setup.
- In breve, prova ad upgradare gmake all'ultima versione che puoi trovare
- prima di riportarlo come un problema.
-
-1.20) Come posso ottimizzarlo per un 486 o un processore pentium
-
- Le flags di compilazione per default non permettono l'optimizzazione pe
-r 486
- o per processori Pentium. Per aggiungerla come ottimizzazione, edita
- Makefile.custom e aggiungi:
-
- CFLAGS+= -m486
-
- o (per i nuovi compilatori che molte persone non stanno usando)
-
- CFLAGS+= -mpentium
- o
- CFLAGS+= -mpentiumpro
-
-1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
- nel test di regressione 'timespan'?
- Le ore appaiono come: '4 hours 59 mins 60.00 secs'
- invece di '5 hours'
-
- Questo e' un problema con le librerie glibc2 le quali appaiono con
- RedHat 5.0. Aggiorna le tue glibc con le ultime versioni di RedHat per
- v5.0/hurricane. Tutto quello che e' anteriore alle glibc-2.0.7 ha
- questi problemi.
-
-----------------------------------------------------------------------
-Sezione 2: Compilare programmi accessori
-----------------------------------------------------------------------
-
-2.1) Il linker non trova libX11 quando sta' compilando pgtclsh
-
- Aggiungi la seguente riga al file src/Makefile.custom
- X11_LIBDIR = /usr/X11R6/lib
-
-
-----------------------------------------------------------------------
-Sezione 3: Problemi di esecuzione
-----------------------------------------------------------------------
-
-3.1) Ricevo un messaggio tipo _fUnKy_POSTPORT_sTuFf_ non definito quando
- lancio uno script come createuser
-
- Questo e' un bug nella V.1.06-V1.07 di Postgres ed e' fissata con la ve
-rsione
- 1.08 o superiore.
-
-3.2) Lancio postmaster e dopo il sistema dice 'Bad system call(Core
- dumped)'
-
- Questo indica che non hai compilato il supporto per la memoria condivis
-a nel
- kernel. Devi ricompilare il kernel per aggiungere questa feature.
-
-3.3) Quando tento di lanciare Postmaster, perche' ricevo un errore del tipo
- 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.
-
- I permessi sul file /dev/null sono sbagliati.
-
- ls -l /dev/null should give you something like:
-
- crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null
-
- Correggi i permessi con:
-
- chmod a+rw /dev/null
-
-3.4) Perche' createuser non funziona?
-
- C'e' un problema con la versione 2.5.3 di GNU Flex e createuser.
- Le tue opzioni devono recedere a Flex V2.5.2, aggiornale alla V2.5.4 o
- applica una patch alla V2.5.3 la quale e' fornita in doc/README.flex
- Puoi ottenere la V.2.5.4 da:
- ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz
-
-3.5) Perche' ricevo un errore del tipo:
- IpcMemoryCreate: memKey=155356396 , size=760632 ,
- permission=384IpcMemoryCreate: shmget(..., create, ...)
- failed: Invalid argument
-
- Non hai compilato il supporto IPC nel kernel di Linux.
- Devi ricompilare il kernel con questa opzione.
-
-3.6) Perche' psql fallisce con:
- psql: can't load library 'libpq.so.1'
-
- Psql e' stata compilata per linkarsi dinamicamente con la libreria libp
-q.
-
- Per risolvere questo, devi accedere come root ed editare il file
- /etc/ld.so.conf
- Aggiungi una linea singola alla fine, la quale prende il nome della dir
-ectory
- delle librerie di PostgreSQL (la sottodirectory delle librerie
- dell'installazione diPostgreSQL) e lancia
- /sbin/ldconfig -v
-
- Alternativamente, (e se tu non hai accesso come root), devi usare la
- variabile di ambiente LD_LIBRARY_PATH.
-
- La variabile LD_LIBRARY_PATH contiene una lista di paths per ricercare
-le librerie
- condivise. Questa lista e' ricercata prima delle librerie specificate d
-a ldconfig.
-
- Percio' sotto Bash, devi fare qualcosa del tipo:
- export LD_LIBRARY_PATH='PathToPGSQL'/lib
- o, usando tcsh
- setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
- rimpiazzando 'PathToPGSQL' con l'appropriato path alla tua directory Po
-stgreSQL
- al top level.
- Nota che il comando ldd puo' essere eseguito su un programma linkato di
-namicamente
- alla lista di paths a tutte le librerie condivise sopra, alle quali gli
- eseguibili
- dipendono.
-
-
-3.7) Altri comportamenti strani
-
- Non sono sicuro quali siano i sintomi che non permettono la corretta es
-ecuzione,
- ma si puo' ipotizzare che le ragioni vadano oltre il regolare funzionam
-ento del
- loader dinamico nel caricare la corretta versione delle librerie libpq.
-
- Se hai una versione vecchia dai una occhiata al path delle librerie
- (per esempio in /usr/lib) che dovrebbero caricare nelle nuove versioni
-che intendi
- far girare. Renditi sicuro di prendere queste nel percorso e guarda la
-Domanda 3.6
- per i dettagli in merito al caricamento dinamico delle librerie.
-
-3.8) Quando PostgreSQL e' attivo allo shutdown di sistema, Linux
- esegue al reboot un fsck al disco.
-
- Ci sono state alcune segnalazioni di questo e sembre essere il
- risultato di lanciare PostgreSQL dal /etc/inittab come suggerito
- nel file INSTALL.
-
- Si raccomanda percio' di lanciare il postmaster da un rc script.
- Sotto una versione di tipo Slackware, devi modificare /etc/rc.d/rc.loca
-l
- per lanciare il postmaster. Sotto una versione in stile RedHat
- devi creare uno script in stile SysV sotto /etc/rc.d/rc3.d basato
- sul file /etc/rc.d/init.d.
-
- C'e' un esempio di file in contrib/linux/postgres.init
-
- Un altro file di esempio è proposto da John Robinson
- il quale puo' essere modificato a seconda delle esigenze:
-
-#!/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) Perche' la Query 32 nel test di regressione pretende molto tempo?
-
- Questo e' un bug nello script di regressione presente su Linux Os.
- Ci sono due raggiri per evitarli (informazione di Tatsuo Ishii ):
-
- 1. cambia quello che segue in regress.sh:
- time postgres -texecutor -tplanner -Q bench < bench.sql
- a:
- postgres -texecutor -tplanner -Q bench < bench.sql
-
- 2. dopo aver lanciato il test, rimuovi la linea finale di
- bench.out, qualcosa del tipo:
- 85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata
- 0maxresident)k
- poi digita:
- sh ./perquery < bench.out > & bench.out.perquery
-
-
-
-3.10) Perche' ricevo dei risultati arrotondati su date/time aritmetici,
- come
- select '4 hours'::timespan;
- returning '3 hours 59 minutes 60 seconds'?
-
- Stai usando le nuove librerie glibc2 e hai una versione precedene alla
- 2.0.7. E' un problema di arrotondamento matematico nella libreria.
- Aggiorna le tue librerie.
-----------------------------------------------------------------------------
-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
-----------------------------------------------------------------------------
-Daniele Medri 'MaDriD' - e-mail: madrid@darshan.org web: www.darshan.org
-----------------------------------------------------------------------------
+++ /dev/null
-<HTML>
-<HEAD>
-<TITLE>Linux PostgreSQL FAQ (german)</TITLE>
- <META NAME="Author" CONTENT="Karsten Schulz">
- <META NAME="GENERATOR" CONTENT="all pages hand-made by Karsten Schulz, using NEdit (Linux)">
- <META http-equiv="content-type" CONTENT="text/html;CHARSET=iso8859-1">
- <META NAME="robots" CONTENT="index">
- <META NAME="robots" CONTENT="follow">
- <META NAME="description" CONTENT="Die deutsche Übersetzung der Linux-spezifischen FAQ zum Datenbanksystem PostgreSQL">
- <META NAME="keywords" CONTENT="Linux, FAQ, DB, PostgreSQL, SQL, deutsch, german">
- <LINK REV=MADE HREF="mailto:schulz@Linux-Systemhaus.de" TITLE="Karsten Schulz">
-</HEAD>
-<BODY BGCOLOR="#FFFFFF">
-
-<CENTER><H1>Häufig gestellte Fragen (FAQ) zu PostgreSQL >= V6.1, Linux-spezifisch</H1>
-<STRONG>Bitte Zusammen mit der normalen FAQ lesen!</STRONG></CENTER>
-
-<HR>
-<TABLE BORDER=0>
-<TR>
- <TD>Letztes Update des Originals:</TD>
- <TD>Tue Aug 10 11:15:00 BST 1999</TD>
-</TR>
-<TR>
- <TD>Original-FAQ gepflegt durch:</TD>
- <TD>Andrew C.R. Martin (<A HREF="mailto:martin@biochem.ucl.ac.uk">martin@biochem.ucl.ac.uk</A>)</TD>
-</TR>
-<TR>
- <TD>Original Autor:</TD>
- <TD>Andrew C.R. Martin (<A HREF="mailto:martin@biochem.ucl.ac.uk">martin@biochem.ucl.ac.uk</A>)</TD>
-</TR>
-<TR>
- <TD COLSPAN=2> </TD>
-</TR>
-<TR>
- <TD>Letztes Update der Übersetzung:</TD>
- <TD>Mo, 23. August 1999, 10:00 CEST</TD>
-</TR>
-<TR>
- <TD>Übersetzer:</TD>
- <TD>Karsten Schulz (<A HREF="mailto:schulz@linux-systemhaus.de">schulz@linux-systemhaus.de</A>)</TD>
-</TR>
-</TABLE>
-<HR>
-<P>
-Änderungen in dieser Version (* = geändert, + = neu, - = entfernt)
-<P>
-
-<A HREF="#3.11">+3.11)</A> Wieso bekomme ich einen Fehler wie: <EM>IpcMemoryCreate: shmget failed (Permission denied)</EM>?<BR>
-
-<H2>Diese Datei ist ungefähr wie folgt unterteilt:</H2>
-
-<A HREF="#1.">1.*)</A> PostgreSQL kompilieren<BR>
-<A HREF="#2.">2.*)</A> Hilfs- und Zusatzprogramme kompilieren<BR>
-<A HREF="#3.">3.*)</A> Laufzeit Probleme<BR>
-<P><BR>
-
-
-<H2>Beantwortete Fragen:</H2>
-<A NAME="1."> </A><H3><A HREF="#Sec1">PostgreSQL kompilieren</A></H3>
-
-
-<A HREF="#1.1">1.1)</A> Welche Anpassungen müssen in src/Makefile.global oder src/Makefile.custom gemacht werden
- und gibt es weitere notwendige Änderungen?<BR>
-<A HREF="#1.2">1.2)</A> Warum habe ich Probleme mit der fehlenden Bibliothek libreadline?<BR>
-<A HREF="#1.3">1.3)</A> [REDHAT] Warum habe ich Probleme mit der fehlenden Bibliothek libdl und der fehlenden dlfcn.h?<BR>
-<A HREF="#1.4">1.4)</A> [SLACKWARE 3.1] Warum habe ich Probleme mit der fehlenden Bibliothek libdl und der fehlenden dlfcn.h?<BR>
-<A HREF="#1.5">1.5)</A> Die Kompilierung des Backends schlägt mit der Meldung fehl, daß die Include-Datei dlfcn.h fehlen würde.<BR>
-<A HREF="#1.6">1.6)</A> GCC meldet, daß er die Option -fpic ignorieren würde.<BR>
-<A HREF="#1.7">1.7)</A> Ich bekomme Warnungen, wie: <EM>warning: cast from pointer to integer of different size</EM><BR>
-<A HREF="#1.8">1.8)</A> [SuSE-Linux 4.2-5.3] Wo sind curses und termcap?<BR>
-<A HREF="#1.9">1.9)</A> Warum bekomme ich Probleme mit ld.so?<BR>
-<A HREF="#1.10">1.10)</A> Wieso bekomme ich <EM>yy_flush_buffer undefined</EM> Fehler?<BR>
-<A HREF="#1.11">1.11)</A> Wie kompiliere ich PostgreSQL auf einem a.out System?<BR>
-<A HREF="#1.12">1.12)</A> Warum scheitert make mit der Meldung:<BR><EM>
- yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
- make: /usr/bin/make: cannot execute binary file</EM><BR>
-<A HREF="#1.13">1.13)</A> Was sind die Bezüge in der Bibliothek X11_LIB zu libsocket und libnsl in der Datei src/Makefile.global?<BR>
-<A HREF="#1.14">1.14)</A> [DEBIAN] Wo ist die Bibliothek libtermcap?<BR>
-<A HREF="#1.15">1.15)</A> [REDHAT] Kann ich PostgreSQL als RPM-Archiv bekommen?<BR>
-<A HREF="#1.16">1.16)</A> Während ich versuche eine Entwickler-Version unter Linux zu kompilieren, bricht der Vorgang mit folgender
- Fehlermeldung ab:<BR><EM>
- In file included from /usr/include/sys/sem.h:8,<BR>
- from ipc.c:37:<BR>
- /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'<BR>
- ....<BR>
- make: *** [ipc.o] Error 1</EM><BR>
-<A HREF="#1.17">1.17)</A> Beim Kompilieren von PostgreSQL bricht der gcc mit einer Signal 11 Meldung ab.<BR>
-<A HREF="#1.18">1.18)</A> Kann ich Version 6.1.1 unter MkLinux installieren?<BR>
-<A HREF="#1.19">1.19)</A> Warum stoppt make oder bricht sonstwie ab?<BR>
-<A HREF="#1.20">1.20)</A> Wie kann ich für die Prozessoren 486 oder Pentium optimieren?<BR>
-<A HREF="#1.21">1.21)</A> Wieso bekomme ich seltsame Ergebnisse beim Drucken von Zeiten (z.B. beim Regressionstest 'timespan')?<BR>
-<A HREF="#1.22">1.22)</A> Warum bekomme ich keine shared libraries für libpq, wenn ich Version 6.3.2 kompiliere?<BR>
-<A HREF="#1.23">1.23)</A> Warum scheitert der Kompilierungslauf mit Nachrichten, daß F_BOOLIN, F_BOOLOUT und F_BYTEAIN nicht deklariert seien?<BR>
-
-<P>
-
-<A NAME="2."> </A><H3><A HREF="#Sec2">Hilfs- und Zusatzprogramme kompilieren</A></H3>
-
-<A HREF="#2.1">2.1)</A> Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh kompiliert werden soll.<BR>
-
-
-<A NAME="3."> </A><H3><A HREF="#Sec3">Laufzeit Probleme</A></H3>
-
-<A HREF="#3.1">3.1)</A> Ich bekomme die Fehlermeldung <EM>_fUnKy_POSTPORT_sTuFf_ undefined</EM>, wenn Skripts wie createuser laufen.<BR>
-<A HREF="#3.2">3.2)</A> Nachdem ich postmaster starte, meldet das System <EM>Bad system call (Core dumped)</EM><BR>
-<A HREF="#3.3">3.3)</A> Wenn ich versuche, den Postmaster zu starten, bekomme ich eine Fehlermeldung wie:<BR><EM>
- Failed Assertion("!(file != 0):(null)", File:<BR>
- "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)<BR>
- !(file != 0) (0)<BR>
- initdb: could not create template database<BR>
- initdb: cleaning up.</EM><BR>
-<A HREF="#3.4">3.4)</A> Warum funktioniert createuser nicht?<BR>
-<A HREF="#3.5">3.5)</A> Wieso bekomme ich einen Fehler, wie:<BR><EM>
- IpcMemoryCreate: memKey=155356396 , size=760632 ,<BR>
- permission=384IpcMemoryCreate: shmget(..., create, ...)<BR>
- failed: Invalid argument</EM><BR>
-<A HREF="#3.6">3.6)</A> Wieso scheitert der Aufruf von psql mit: <EM>psql: can't load library 'libpq.so.1</EM><BR>
-<A HREF="#3.7">3.7)</A> Andere seltsame Verhaltensweisen<BR>
-<A HREF="#3.8">3.8)</A> Wenn PostgreSQL beim Systemhalt lief, führt Linux beim Neustart jedesmal einen Filesystemcheck (fsck) durch<BR>
-<A HREF="#3.9">3.9)</A> Warum dauert Query 32 in den RegressionsTests so lange?<BR>
-<A HREF="#3.10">3.10)</A> Warum bekomme ich lustige Rundungsergebnisse in einigen Datums/Zeit-Berechnungen, wie:<BR><EM>
- select '4 hours'::timespan;<BR>
- liefert '3 hours 59 minutes 60 seconds'</EM>?<BR>
-<A HREF="#3.11">+3.11)</A> Wieso bekomme ich einen Fehler wie: <EM>IpcMemoryCreate: shmget failed (Permission denied)</EM>?<BR>
-
-<P>
-
-<H3><A NAME="Sec1">Abschnitt 1: PostgreSQL kompilieren</A></H3>
-
-<H4><A NAME="1.1">1.1)</A> Welche Anpassungen müssen in src/Makefile.global oder src/Makefile.custom gemacht werden
- und gibt es weitere notwendige Änderungen?</H4>
-
-Änderungen an den Makefiles werden am einfachsten dadurch gemacht, indem das <EM>customize shellscript</EM>
-im src-Verzeichnis aufgerufen wird, das ein Makefile.custom erzeugt.
-<P>
-Die einzige andere Änderung, die evtl. zu machen wäre, 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 äußert.
-(siehe dazu auch <A HREF="#3.4">Frage 3.4</A>).
-<P>
-Falls Du die Makefiles manuell änderst, <STRONG>musst</STRONG> Du die
-folgende Variable setzen:<BR><BR>
-<PRE>
-PORTNAME= linux
-</PRE>
-
-Du musst auch die folgende Variable ändern, damit sie auf Deine
-Installation passt:
-<PRE>
-POSTGRESDIR
-</PRE>
-Falls Du die <EM>USE_TCL</EM>-Option aktivierst, musst Du folgende Variablen setzen:<BR><BR>
-
-<PRE>
-TCL_INCDIR=
-TCL_LIBDIR=
-TCL_LIB=
-TK_INCDIR=
-TK_LIBDIR=
-TK_LIB=
-X11_INCDIR=
-X11_LIBDIR=
-X11_LIB=
-</PRE>
-
-Auf meinem Slackware 3.0 System sind das:
-<PRE>
-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
-</PRE>
-<P>
-Du solltest auch alle weiteren Änderungen durchführen, die in der
-Datei INSTALL und in Makefile.global dokumentiert sind.
-
-<H4><A NAME="1.2">1.2)</A> Warum habe ich Probleme mit der fehlenden Bibliothek libreadline?</H4>
-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.<BR>
-Hinweis: Debian Linux (wie FreeBSD) kommt mit einer installierten GNU readline Bibliothek.
-
-<H4><A NAME="1.3">1.3)</A> [REDHAT] Warum habe ich Probleme mit der fehlenden Bibliothek libdl und der fehlenden dlfcn.h?</H4>
-Das Problem erscheint dadurch, daß in der letzten Phase des Kompilierungsvorgangs Funktionen wie
-dlopen(), dlclose(), etc. nicht gelinkt werden können.
-<P>
-Die libdl Bibliothek wird zum dynamischen Linken von Benutzerfunktionen zur Laufzeit
-benutzt. Aus irgendwelchen Gründen wurde diese Bibliothek mit der RedHat-Distribution
-nicht ausgeliefert. Anscheinend ist dies in der letzten RedHat 4.0 (Colgate) geändert worden.
-<P>
-RedHat hat nun ein neues ld.so RPM-Archiv auf ihrem ftp-Server. Hole Dir einfach:
-<P>
-<A HREF="ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/">ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm</A>
-<P>
-Installiere das RPM-Archiv wie üblich und gut ist!
-<P>
-Hinweis: Du mußt <EM>configure</EM> und <EM>make clean</EM> nach der Installation
-der Bibliothek und vor dem erneuten Kompilieren laufen lassen.
-<P>
-Es gab einen Bericht über ein zerstörtes System, weil Programme auf
-diese Bibliothek während 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 möglich während
-des Updates laufen zu haben. In den Single-User-Mode zu gehen ist wahrscheinlich
-auch eine gute Idee!
-<P>
-Wenn Du lieber den harten Weg gehen willst, kannst Du die Bibliothek und
-die Header-Dateien von:
-<P>
-<A HREF="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/">ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz</A>
-<P>
-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 <A HREF="#1.2">Frage 1.2</A>, die den gleichen Fehler
-für Slackware 3.1 behandelt.
-<P>
-Mache es aber nur auf diese Weise, wenn Du weißt, was Du tust!
-
-
-<H4><A NAME="1.4">1.4)</A> [SLACKWARE 3.1] Warum habe ich Probleme mit der fehlenden Bibliothek libdl und der fehlenden dlfcn.h?</H4>
-Das Problem erscheint dadurch, daß in der letzten Phase des Kompilierungsvorgangs Funktionen wie
-dlopen(), dlclose(), etc. nicht gelinkt werden können.
-<P>
-Siehe die Antwort zu <A HREF="#1.3">Frage 1.3</A>.
-<P>
-Slackware bis Version 3.0 war mit dieser Bibliothek und der Include-Datei ausgestattet und ab späten
-3.1er-Versionen scheinen sie auch wieder da zu sein. Aber in frühen 3.1er-Versionen (vor dem 09.09.96)
-fehlten sie und es wurden viele CD-ROMs von diesen ersten 3.1.er-Versionen gepresst.
-<P>
-Es gab einen Bericht über ein zerstörtes System, weil Programme auf
-diese Bibliothek während 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 möglich während
-des Updates laufen zu haben. In den Single-User-Mode zu gehen ist wahrscheinlich
-auch eine gute Idee!
-<P>
-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
-<PRE>sh install/doinst.sh</PRE>
-durchzuführen. Danach ein <PRE>ldconfig</PRE>durchführen.
-<P>
-Hinweis: Du mußt <EM>configure</EM> und <EM>make clean</EM> nach der Installation
-der Bibliothek und vor dem erneuten Kompilieren laufen lassen.
-<P>
-Falls Du manuell installieren möchtest, 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 führe
-folgende Befehle aus:
-<PRE>
-cd /lib
-ln -sf libdl.so.1.7.14 libdl.so.1
-ln -sf libdl.so.1 libdl.so
-</PRE>
-Auf manchen Systemen (je nach Deiner gcc-Konfiguration) können noch folgende
-Befehle notwendig sein:
-<PRE>
-cd /usr/lib
-ln -sf /lib/libdl.so .
-</PRE>
-Und zum Schluß noch ein <PRE>ldconfig</PRE>
-<P>
-Hinweis: Du mußt <EM>configure</EM> und <EM>make clean</EM> nach der Installation
-der Bibliothek und vor dem erneuten Kompilieren laufen lassen.
-
-<H4><A NAME="1.5">1.5)</A> Die Kompilierung des Backends schlägt mit der Meldung fehl, daß die Include-Datei dlfcn.h fehlen würde.</H4>
-Siehe die Antworten zu den Fragen <A HREF="#1.3">1.3</A> und <A HREF="#1.4">1.4</A>.
-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 <A HREF="#1.11">Frage 1.11</A>.
-
-<H4><A NAME="1.6">1.6)</A> GCC meldet, daß er die Option -fpic ignorieren würde.</H4>
-Frühere Versionen des gcc nahmen entweder <CODE>-fpic</CODE> oder <CODE>-fPIC</CODE> an.
-Es scheint, daß neuere Versionen (V2.7.2?) <CODE>-fPIC</CODE> erfordern.
-Falls Du ein ELF-System benutzt, kannst das alles ignoriert werden, da <CODE>-fPIC</CODE>
-als Standardvorgabe voreingestellt ist.
-
-Du kannst diese Angabe korrigieren, indem Du CFLAGS_SL in der Datei src/Makefile.global
-änderst.
-
-
-<H4><A NAME="1.7">1.7)</A> Ich bekomme Warnungen, wie: <EM>warning: cast from pointer to integer of different size</EM></H4>
-Diese Warnungen wurden in früheren Versionen von Postgres95 gesichtet und können ignoriert werden.
-PostgreSQL V6.0 sollte ohne Warnungen kompiliert werden, außer jenen, die sich auf System-Header-Dateien beziehen
-(welche auch ignoriert werden können).
-
-
-<H4><A NAME="1.8">1.8)</A> [SuSE-Linux 4.2-5.3] Wo sind curses und termcap?</H4>
-SuSE-Linux 4.2 hat ncurses, nicht curses. Version 4.4 scheint beide Bibliotheken zu haben.
-Bei SuSE-Linux ist außerdem die termcap-Bibliothek in /usr/lib/termcap/ und nicht in /usr/lib.
-
-<H5>PostgreSQL (bis Version V6.0)</H5>
-Setze den Wert für CURSES_LIB in src/Makefile.custom auf -lncurses (oder erledige das durch das <EM>customize script</EM>.
-Füge folgende Zeile zur Datei src/Makefile.custom hinzu:
-<PRE>
-LDADD_BE+= -L/usr/lib/termcap
-</PRE>
-Möglicherweise mußt Du in der Datei src/bin/psql/Makefile folgende Änderung durchführen:
-<PRE>
-ifeq ($(PORTNAME), linux)
- LD_ADD+=
-</PRE>
-ändern in:
-<PRE>
-ifeq ($(PORTNAME), linux)
- LD_ADD+= -ltermcap
-</PRE>
-
-<H5>PostgreSQL (V6.1)</H5>
-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 zusätzlichen Such-Verzeichnissen fragt.
-<P>
-Falls das nicht funkitoniert (Ich habe SuSE nicht, um das zu testen), dann solltest Du nach dem <EM>./configure</EM>-Lauf
-die Datei src/Makefile.global ändern und in die LDFLAGS-Zeile den Eintrag -ltermcap (nach -lreadline) hinzufügen.
-(Alternativ kannst Du auch die Datei src/Makefile.custom ändern, bevor Du <EM>./configure</EM> aufrufst.)
-<P>
-Einige SuSE-Versionen liefern nur ncurses, deshalb kann es sein, daß Du die
-Benutzung von ncurses statt curses erzwingen mußt, indem Du -lcurses in -lncurses änderst.
-(bestätigt für SuSE 5.1)
-<P>
-<H5>PostgreSQL (V6.4)</H5>
-In PostgreSQL V6.4 überprüft <CODE>configure</CODE> sowohl das Vorhandensein von
-curses, als auch das von ncurses.
-In der Zwischenzeit kannst Du den patch von <A HREF="mailto:ke@suse.de">Karl Eichwalder (ke@suse.de)</A>
-anwenden:
-<P>
-<A HREF="http://www.PostgreSQL.ORG/mhonarc/pgsql-patches/msg00407.html">http://www.PostgreSQL.ORG/mhonarc/pgsql-patches/msg00407.html</A><BR>
-oder (mit deutschen Bemerkungen):<BR>
-<A HREF="http://www.suse.de/Support/sdb/ke_postgresql-632.html">http://www.suse.de/Support/sdb/ke_postgresql-632.html</A>
-<P>
-Es gab außerdem 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:
-<PRE>
-cd /usr/lib
-ln -s libtermcap.so.2.0.8 libtermcap.so
-</PRE>
-
-<H4><A NAME="1.9">1.9)</A> Warum bekomme ich Probleme mit ld.so?</H4>
-
-Falls Du Probleme mit ld.so bekommst - eine andere Bibliothek, die im ELF-System für dynamisches Laden
-benötigt wird - dann hast Du Deine Systeminstallation oder wahrscheinlicher ein Linux-Update durcheinandergebracht
-
-Siehe die Fragen <A HREF="#1.3">1.3</A>/<A HREF="#1.4">1.4</A>. Möglicherweise mußt 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.
-
-<H4><A NAME="1.10">1.10)</A> Wieso bekomme ich <EM>yy_flush_buffer undefined</EM> Fehler?</H4>
-Das ist nicht wirklich Linux-spezifisch, aber es tritt häufiger 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 <A HREF="3.4">Frage 3.4</A>.
-
-<H4><A NAME="1.11">1.11)</A> Wie kompiliere ich PostgreSQL auf einem a.out System?</H4>
-Als erstes mußt Du die dld-Bibliothek installieren. Diese gibt es auf Sunsite unter
-Linux/libs/dld.3.2.7.tar.gz (<A HREF="ftp://sunsite.unc.edu/pub/Linux/libs/">ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz</A>).
-<P>
-Dann füge folgende Zeile in src/Makefile.custom hinzu:
-<PRE>
-LINUX_ELF=
-</PRE>
-oder benutze das <EM>customize Skript</EM>
-
-<H4><A NAME="1.12">1.12)</A> Warum scheitert make mit der Meldung:<BR><EM>
- yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
- make: /usr/bin/make: cannot execute binary file</EM></H4>
-
-Das war ein Problem in frühreren Versionen von Postgres95. Standardmäßig benutzt PostgreSQL <CODE>bison -y</CODE>
-anstatt <CODE>yacc</CODE>.
-<P>
-yacc ist normalerweise als Skript implementiert, das <CODE>bison -y</CODE> aufruft. Aus verschiedenen Gründen ist
-<EM>make</EM> nicht in der Lage, das Skript auszuführen (verschiedene Versionen von make? Verschiedene Versionen der bash?)
-<P>
-Um das zu beheben, ändere einfach die Datei src/mk/port/postgres.mk.linux am Ende. Die Zeile:
-<PRE>
-# YACC = bison -y
-</PRE>
-wird zu:
-<PRE>
-YACC = bison -y
-</PRE>
-
-
-<H4><A NAME="1.13">1.13)</A> Was sind die Bezüge in der Bibliothek X11_LIB zu libsocket und libnsl in der Datei src/Makefile.global?</H4>
-Das war ein Problem in Version 1.08 (Sun Solaris spezifisch). Sie sind behoben in 1.09 und 6.0
-
-<H4><A NAME="1.14">1.14)</A> [DEBIAN] Wo ist die Bibliothek libtermcap?</H4>
-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 <A HREF="1.8">Frage 1.8</A>)
-<P>
-Du kannst die Datei src/bin/psql/Makefile wie folgt ändern:
-<PRE>
-ifeq ($(PORTNAME), linux)
- LD_ADD+= -ltermcap
-</PRE>
-in
-<PRE>
-ifeq ($(PORTNAME), linux)
- LD_ADD+=
- </PRE>
-
-
-<H4><A NAME="1.15">1.15)</A> [REDHAT] Kann ich PostgreSQL als RPM-Archiv bekommen?</H4>
-Ja! <A HREF="mailto:mimo@lodz.pdi.net">Michal Mosiewicz</A> (<A HREF="http://www.pdi.lodz.pl/~mimo">http://www.pdi.lodz.pl/~mimo</A>)
-hat ein RPM für PostgreSQL V6.0 auf Intel Architekturen zusammengestellt,
-welches er nach <A HREF="ftp://ftp.redhat.org/pub/Incoming/">ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm</A>
-hochgeladen hat.
-<P>
-Das ist eine vorkompilierte Version, das Quelltext-RPM stammt vom 03.02.1997.
-
-
-
-<H4><A NAME="1.16">1.16)</A> Während ich versuche eine Entwickler-Version unter Linux zu kompilieren, bricht der Vorgang mit folgender
- Fehlermeldung ab:<BR><EM>
- In file included from /usr/include/sys/sem.h:8,<BR>
- from ipc.c:37:<BR>
- /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'<BR>
- ....<BR>
- make: *** [ipc.o] Error 1</EM></H4>
-
-Das Problem ist, daß Linux keine Prototypen für diese Inline-Funktionen bereithält. Die Lösung
-liegt darin, das Makefile in .../src/backend/storage/ipc/ zu ändern:
-Ändere die Zeile:
-<PRE>
-CFLAGS+=$(INCLUDE_OPT)
-</PRE>
-in
-<PRE>
-CFLAGS+=$(INCLUDE_OPT) -Wno-error
-</PRE>
-Mache dasselbe dann im ../src/backend/storage/lmgr Verzeichnis.
-
-
-<H4><A NAME="1.17">1.17)</A> Beim Kompilieren von PostgreSQL bricht der gcc mit einer Signal 11 Meldung ab.</H4>
-Oder genauer: <EM>gcc: Internal compiler error: program cc1 got fatal signal 11</EM>
-<P>
-Das können Hardware/Speicherprobleme sein. PostgreSQL ist ein großes Programm und große
-gcc-Kompilierungsläfe (wie eben PostgreSQL oder eine Kernel-Kompilierung) beanspruchen den Hauptspeicher
-wie wenig andere Programme. Dadurch können Fehler auftreten, die in normalen Situationen nicht erscheinen.
-Niedrigere Betriebssysteme beanspruchen die Hardware ebenfalls nicht in diesem Maße, deshalb kann es sein, daß Du niemals
-Probleme unter DOS/Windows siehst.
-<P>
-Mehr Information zu diesem Problem gibt es unter <A HREF="http://www.BitWizard.nl/sig11/">http://www.BitWizard.nl/sig11/</A> und
-in deutsch unter <A HREF="http://www.suse.de/sdb/de/html/kfr_58.html">http://www.suse.de/sdb/de/html/kfr_58.html</A>.
-<P>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.
-
-<H4><A NAME="1.18">1.18)</A> Kann ich Version 6.1.1 unter MkLinux installieren?</H4>
-<A HREF="mailto:t-ishii@sra.co.jp">Tatsuo Ishii</A> hat das unter MkLinux DR2.1 update2 geschafft, nachdem der kleine Patch
-von <A HREF="ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/">ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz</A>
-eingespielt wurde.
-
-
-<H4><A NAME="1.19">1.19)</A> Warum stoppt make oder bricht sonstwie ab?</H4>
-Es gibt eine Reihe von Reports darüber, daß gmake zu früh aussteigt oder mit einem Segmentation Fault aussteigt.
-Das letzte Problem wurde von gmake 3.74 berichtet. Ein Update auf 3.76.1 löste 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.
-
-<H4><A NAME="1.20">1.20)</A> Wie kann ich für die Prozessoren 486 oder Pentium optimieren?</H4>
-Die Standard-Compilerflags führen keine Optimierung für den 486er oder den Pentium-Prozessor durch.
-Um diese Optimierung zu aktivieren, füge wahlweise <U>eine</U> der folgenden Zeilen
-der Datei Makefile.custom hinzu:
-<PRE>
-CFLAGS+= -m486
-</PRE>
-oder
-<PRE>
-CFLAGS+= -mpentium
-</PRE>
-oder
-<PRE>
-CFLAGS+= -mpentiumpro
-</PRE>
-
-<H4><A NAME="1.21">1.21)</A> Wieso bekomme ich seltsame Ergebnisse beim Drucken von Zeiten (z.B. beim Regressionstest 'timespan')?</H4>
-Die Zeit erscheint z.B. als: "4 hours 59 mins 60.00 secs" und nicht als "5 hours"
-<P>
-Das ist ein Problem mit der glibc2-Bibliothek, die mit RedHat 5.0 ausgeliefert wird. Update Deine glibc auf die aktuellste RedHat-Version
-für v5.0/Hurricane. Alle Versionen vor glibc-2.9.7 scheinen dieses Problem zu haben.
-
-<H4><A NAME="1.22">1.22)</A> Warum bekomme ich keine shared libraries für libpq, wenn ich Version 6.3.2 kompiliere?</H4>
-Es gab eine Last-Minute-Änderung der Linux-Konfiguration für Version 6.3.2.
-Siehe für einige Fehlerbehebungen und einen Linux-ELF-Patch in <A HREF="ftp://postgresql.org/pub/patches/">ftp://postgresql.org/pub/patches/</A> nach.
-
-<H4><A NAME="1.23">1.23)</A> Warum scheitert der Kompilierungslauf mit Nachrichten, daß F_BOOLIN, F_BOOLOUT und F_BYTEAIN nicht deklariert seien?</H4>
-Die komplette Meldung sieht ungefähr so aus:
-<PRE>
- -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
-</PRE>
-Solange Du nicht weißt, warum das passiert, ist dieses Problem ziemlich kniffelig, da diese
-Konstanten anscheinend nirgendwo definiert werden.
-<P>
-Die Lösung ist dafür zu sorgen, daß der cpp in Deinem Pfad erreichbar ist, bevor
-make gestartet wird.
-<P>
-Auf Redhat 5.1, ist cpp in /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3
-
-
-
-
-<H3><A NAME="Sec2">Abschnitt 2: Hilfs- und Zusatzprogramme kompilieren</A></H3>
-
-<H4><A NAME="2.1">2.1)</A> Der Linker findet die Bibliothek libX11 nicht, wenn pgtclsh kompiliert werden soll.</H4>
-Füge folgende Zeile in src/Makefile.custom hinzu:
-<PRE>
-X11_LIBDIR = /usr/X11R6/lib
-</PRE>
-
-<H3><A NAME="Sec3">Abschnitt 3: Laufzeit Probleme</A></H3>
-
-<H4><A NAME="3.1">3.1)</A> Ich bekomme die Fehlermeldung <EM>_fUnKy_POSTPORT_sTuFf_ undefined</EM>, wenn Skripts wie createuser laufen.</H4>
-Das ist ein Fehler in Versionen 1.06-1.07 und ist ab Version 1.08 und höher behoben.
-
-<H4><A NAME="3.2">3.2)</A> Nachdem ich postmaster starte, meldet das System <EM>Bad system call (Core dumped)</EM></H4>
-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 hinzuzufügen.
-
-<H4><A NAME="3.3">3.3)</A> Wenn ich versuche, den Postmaster zu starten, bekomme ich eine Fehlermeldung wie:<BR><EM>
- Failed Assertion("!(file != 0):(null)", File:<BR>
- "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)<BR>
- !(file != 0) (0)<BR>
- initdb: could not create template database<BR>
- initdb: cleaning up.</EM></H4>
-
-Deine Berechtigungen für die Datei /dev/null sind falsch gesetzt.
-ein <CODE>ls -l /dev/null</CODE> sollte folgende Ausgabe zeigen:
-<PRE>
-crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null
-</PRE>
-Korrigiere die Berechtigungen mit:
-<PRE>
-chmod a+rw /dev/null
-</PRE>
-
-<H4><A NAME="3.4">3.4)</A> Warum funktioniert createuser nicht?</H4>
-Es gibt ein Problem mit Version 2.5.3 des GNU flex und createuser. Die Möglichkeiten, 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.
-<P>
-Die Version 2.5.4. gibt es unter <A HREF="ftp://prep.ai.mit.edu/pub/gnu/">ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz</A>.
-
-
-<H4><A NAME="3.5">3.5)</A> Wieso bekomme ich einen Fehler, wie:<BR><EM>
- IpcMemoryCreate: memKey=155356396 , size=760632 ,<BR>
- permission=384IpcMemoryCreate: shmget(..., create, ...)<BR>
- failed: Invalid argument</EM></H4>
-
-Du hast keine IPC-Unterstützung in Deinen Linux-Kernel einkompiliert.
-Der Kernel muß mit dieser Option neu kompiliert werden, um diese Eigenschaft hinzuzufügen.
-
-<H4><A NAME="3.6">3.6)</A> Wieso scheitert der Aufruf von psql mit: <EM>psql: can't load library 'libpq.so.1</EM></H4>
-Psql wurde mit dynamischen Zugriff auf die libpq-bibliothek kompiliert.
-Um dieses Problem zu lösen, solltest Du Dich als root anmelden und die Datei /etc/ld.so.conf editieren.
-Füge eine Zeile am Ende hinzu, die den Namen des PostgreSQL-Bibliotheken-Verzeichnis enthält (das
-lib-Verzeichnis im PostgreSQL-Installationsverzeichnis) und rufe den Befehl <CODE>/sbin/ldconfig -v</CODE> auf.
-
-Alternativ (und falls Du keinen root-Zugriff hast) kannst Du die LD_LIBRARY_PATH-Variable
-benutzen.
-Die LD_LIBRARY_PATH-Variable enthält eine durch Doppelpunkt getrennte Liste mit Suchpfaden für
-Shared-Bibliotheken. Diese Liste wird durchsucht, bevor auf die Informationen von ldconfig zugegriffen wird.
-Unter der bash sieht das ganze so aus:
-<PRE>
-export LD_LIBRARY_PATH='PathToPGSQL'/lib
-</PRE>
-unter der tcsh so:
-<PRE>
-setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
-</PRE>
-wobei 'PathToPGSQL' das Installationsverzeichnis von PostgreSQL ist.
-Hinweis: der ldd-Befehl dient dazu, sich die dynamischen Bibliotheken für eine bestimmte
-ausführbare Datei anzeigen zu lassen.
-
-
-<H4><A NAME="3.7">3.7)</A> Andere seltsame Verhaltensweisen</H4>
-Ich bin mir nicht sicher, welche Symptome alle auftreten können, außer 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) können diese statt der
-neueren Version geladen werden. Schaffe diese alten Versionen beiseite und siehe im übrigen
-<A HREF="3.6">Frage 3.6</A> für weitere Details bezüglich dem Laden von Bibliotheken.
-
-<H4><A NAME="3.8">3.8)</A> Wenn PostgreSQL beim Systemhalt lief, führt Linux beim Neustart jedesmal einen Filesystemcheck (fsck) durch</H4>
-Es gab darüber einige Berichte und es scheint, daß dies passiert, wenn PostgreSQL von der /etc/inittab
-gestartet wird, wie im INSTALL-Dokument beschrieben.
-<P>
-Deshalb wird Dir empfohlen, den postmaster von einem rc-Skript aus zu starten.
-Unter einem Slackware-artigem System würdest Du /etc/rc.d/rc.local modifizieren,
-um den postmaster zu starten.
-<P>
-Unter RedHat-artigen Systemen würdest Du ein SysV-artiges Skript in /etc/rc.d/rc3.d
-basierend auf der /etc/rc.d/init.d Schablonen-Datei erstellen.
-<P>
-Es gibt eine Beispieldatei unter dem Verzeichnis contrib/linux/postgres.init.
-<P>
-Hier ist noch ein anderes Beispiel von <A HREF="mailto:john@intelligent.co.uk">John Robinson</A>
-welches Du entsprechend anpassen kannst.
-
-<PRE>
-#!/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
-</PRE>
-
-
-<H4><A NAME="3.9">3.9)</A> Warum dauert Query 32 in den RegressionsTests so lange?</H4>
-Das passiert wegen eines Fehlers in den Regressions-Skripten auf Linux-Kisten.
-Es gibt - soweit ich weiß - zwei Möglichkeiten, diese Fehler zu umgehen
-(die Information stammt von <A HREF="mailto:t-ishii@sra.co.jp">Tatsuo Ishii</A>):
-<P>
-1. ändere folgende Zeile in regress.sh:
-<PRE>
-time postgres -texecutor -tplanner -Q bench < bench.sql
-</PRE>
-in
-<PRE>
-postgres -texecutor -tplanner -Q bench < bench.sql
-</PRE>
-2. nachdem der Test gelaufen ist, entferne eine Zeile ganz am Ende der Datei bench.out,
-die ungefähr so aussieht:
-<PRE>
-85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k
-</PRE>
-dann gib folgendes auf der Befehlszeile ein:
-<PRE>
-sh ./perquery < bench.out > & bench.out.perquery
-</PRE>
-
-
-
-<H4><A NAME="#3.10">3.10)</A> Warum bekomme ich lustige Rundungsergebnisse in einigen Datums/Zeit-Berechnungen, wie:<BR><EM>
- select '4 hours'::timespan;<BR>
- liefert '3 hours 59 minutes 60 seconds'</EM>?</H4>
-
-Du benutzt neue glibc2-Bibliotheken in einer Version kleiner als 2.0.7. Das ist ein mathematisches Rundungsproblem.
-Aktualisiere Deine Bibliothek.
-
-
-<H4><A NAME="3.11">3.11)</A> Wieso bekomme ich einen Fehler wie: <EM>IpcMemoryCreate: shmget failed (Permission denied)</EM>?</H4>
-Im Detail erscheint der Fehler mit dieser Meldung:<BR>
-<PRE>
-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
-</PRE>
-Dieser Fehler wird durch nicht gelöschte Segmente im <EM>shared memory</EM> verursacht.
-(Du kannst sie mit dem Programm <EM>ipcs</EM> sehen.
-Benutze das Programm <EM>ipcrm</EM>, um sie zu löschen.
-<HR>
-<P><BR>
-<P><BR>
-<CENTER>
-<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=2>
-<TR>
- <TH COLSPAN=2>Author of the english version</TH>
-</TR>
-<TR>
- <TD ALIGN=LEFT>Dr. Andrew C.R. Martin</TD>
- <TD ALIGN=RIGHT>University College London</TD>
-</TR>
-<TR>
- <TD ALIGN=LEFT>EMAIL: (Work) martin@biochem.ucl.ac.uk</TD>
- <TD ALIGN=RIGHT>(Home) andrew@stagleys.demon.co.uk</TD>
-</TR>
-<TR>
- <TD ALIGN=CENTER COLSPAN=2>URL: http://www.biochem.ucl.ac.uk/~martin</TD>
-</TR>
-<TR>
- <TD ALIGN=LEFT>Tel: (Work) +44(0)171 419 3890</TD>
- <TD ALIGN=RIGHT>(Home) +44(0)1372 275775</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=2>
-<TR>
- <TH COLSPAN=2>Translator of the german version</TH>
-</TR>
-<TR>
- <TD ALIGN=LEFT>Karsten Schulz</TD>
- <TD ALIGN=RIGHT>Linux Systemhaus Schulz</TD>
-</TR>
-<TR>
- <TD ALIGN=LEFT>EMAIL: (Work) schulz@Linux-Systemhaus.de</TD>
- <TD ALIGN=RIGHT>(Home) kaschu@t800.ping.de</TD>
-</TR>
-<TR>
- <TD ALIGN=CENTER COLSPAN=2>URL: http://www.Linux-Systemhaus.de/</TD>
-</TR>
-<TR>
- <TD ALIGN=LEFT>Tel: (Work) +49 231 3944432</TD>
- <TD ALIGN=RIGHT>(Fax) +49 231 3944435</TD>
-</TR>
-</TABLE>
-</CENTER>
-</BODY>
-</HTML>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <META NAME="GENERATOR" CONTENT="Mozilla/4.06 [en] (X11; I; Linux 2.1.105 i586) [Netscape]">
-</HEAD>
-<BODY BGCOLOR="#FFFDEC">
-
-<PRE>=======================================================
-Frequently Asked Questions (FAQ) per PostgreSQL >= V6.1
-Specifiche per Linux Os
-DA LEGGERE IN CONGIUNZIONE CON LE NORMALI FAQ
-=======================================================
-Ultimo aggiornamento: Lunedi' 18 Maggio 11:17:00 GMT 1998
-
-Curatore corrente: Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
-Autore originale: Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
-Traduzione FAQ in italiano: Daniele Medri 'MaDriD' (madrid@darshan.org)
-
-Cambiamenti in questa versione (* = modificato, + = nuovo, - = rimosso):
-
-+1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
- nel test di regressione 'timespan'?</PRE>
-
-<PRE>Questo file è diviso approsimativamente nel sequente modo:
-1.*) Istallare PostgreSQL
-2.*) Compilare programmi accessori
-3.*) Problemi di esecuzione
-
-
-Domande risposte:
-1.1) Quali cambiamenti devo fare a src/Makefile.global o a src/Makefile.custom
- e ci sono altri cambiamenti necessari?
-1.2) Perche' ricevo problemi con missing libreadline?
-1.3) [REDHAT] Perche' ricevo problemi di libdl e dlfcn.h perse?
-1.4) [SLACKWARE 3.1] Perche' ricevo problemi di libdl e dlfcn.h perse?
-1.5) La mia compilazione si arresta segnalando la mancanza dell'include file
- dlfcn.h perso.
-1.6) GCC reclama una ignorata opzione -fpic
-1.7) Ricevo messaggi di warning (errore) del tipo
- warning: cast from pointer to integer of different size
-1.8) [SuSE-Linux 4.2-4.4] Dove sono curses e termcap?
-1.9) Perche' ho problemi con ld.so?
-1.10) Perche' ricevo errori del tipo `yy_flush_buffer undefined'?
-1.11) Come posso compilare PostgreSQL su un sistema a.out?
-1.12) Che cosa fallisce con:
- yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
- make: /usr/bin/make: cannot execute binary file
-1.13) Quali sono i riferimenti in X11_LIB a libsocket e libnsl in
- src/Makefile.global?
-1.14) [DEBIAN] Dov'e' libtermcap?
-1.15) [REDHAT] Posso trovare PostgreSQL come RPM?
-1.16) Quando tento di compilare una versione in sviluppo sotto Linux, la
- compilazione fallisce con il seguente messaggio:
- 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) Quando sto' compilando postgres, gcc riporta un signal 11 e si interrompe.
-1.18) Posso installare 6.1.1 su MkLinux?
-1.19) Perche' esce o va in crash?
-1.20) Come posso ottimizzarlo per un 486 o un processore pentium
-1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
- nel test di regressione 'timespan'?
-2.1) Il linker non trova libX11 quando sta' compilando pgtclsh
-3.1) Ricevo un messaggio tipo _fUnKy_POSTPORT_sTuFf_ non definito quando
- lancio uno script come createuser
-3.2) Lancio postmaster e dopo il sistema dice 'Bad system call(Core
- dumped)'
-3.3) Quando tento di lanciare Postmaster, perche' ricevo un errore del tipo
- 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) Perche' createuser non funziona?
-3.5) Perche' ricevo un errore del tipo:
- IpcMemoryCreate: memKey=155356396 , size=760632 ,
- permission=384IpcMemoryCreate: shmget(..., create, ...)
- failed: Invalid argument
-3.6) Perche' psql fallisce con:
- psql: can't load library 'libpq.so.1'
-3.7) Altri comportamenti strani
-3.8) Quando PostgreSQL e' attivo allo shutdown di sistema, Linux
- esegue al reboot un fsck al disco.
-3.9) Perche' la Query 32 nel test di regressione pretende molto tempo?
-3.10) Perche' ricevo dei risultati arrotondati su date/time aritmetici,
- come
- select '4 hours'::timespan;
- returning '3 hours 59 minutes 60 seconds'?
-
-----------------------------------------------------------------------
-Sezione 1: Compilare PostgreSQL
-----------------------------------------------------------------------
-
-1.1) Quali cambiamenti devo fare a src/Makefile.global o a
- src/Makefile.custom e ci sono altri cambiamenti necessari?
-
- I cambiamenti ai makefiles sono piu'facilmente fatti usando
- lo script di shell per la personalizzazione che si trova nella
- directory src che scrive un file Makefile.custom appropriato.
-
- I soli altri cambiamenti che tu devi fare e rimpiazzare Flex se tu
- hai una versione 2.5.3, la quale ha dei bug che si manifestano al
- fallimento di createuser (Vedi domanda 3.4)
-
- Se tu modifichi i makefiles a mano, tu *devi* settare le seguenti
- variabili:
- PORTNAME= linux
-
- Tu devi anche cambiare quello che segue per settare la tua propria
- installazione:
- POSTGRESDIR
-
- Se tu cambi sull'opzione USE_TCL, devi settare questo:
- TCL_INCDIR=
- TCL_LIBDIR=
- TCL_LIB=
- TK_INCDIR=
- TK_LIBDIR=
- TK_LIB=
- X11_INCDIR=
- X11_LIBDIR=
- X11_LIB=
-
- Sul mio sistema Slackware3.0 esse sono:
- 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
-
- Devi fare ogni altro cambiamento necessario come documentato nel
- file INSTALL e in Makefile.global
-
-
-1.2) Perche' ricevo problemi con missing libreadline?
-
- I sistemi Linux in genere non vengono distribuiti con la libreria
- Gnu readline installata. Si può in ogni caso o disattivare l'opzione
- di readline in src/Makefile.global o src/Makefile.custom, oppure
- installare la libreria GNU stessa (readline).
-
- Nota che Linux Debian (come FreeBSD) esce con le readline installate.
-
-1.3) [REDHAT] Perche' ricevo problemi di libdl e dlfcn.h perse??
-
- Questa manifestazione avvisa che non c'e' la capacita' di linkare
- funzioni come dlopen(), dlclose(), etc. durante l'ultima fase di compilazione.
-
- La libreria libdl e' usata per linkare in maniera dinamica le funzioni
- e rendere flessibile l'avvio dell'applicativo. Per alcune ragioni questa
- non era presente nella distribuzione Red Hat. La versione Redhat 4.0
- (Colgate) a colmato a questa mancanza.
-
- RedHat ha ora una nuova versione di ld.so in formato RPM nei propri siti FTP.
- Scaricate:
-
- ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm
-
- Installa il file RPM nella maniera usuale e andra'!
-
- ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
- make clean dopo aver installato la libreria e prima di ricompilare.
-
- C'e' stata una sola notizia di sistema corrotto da programmi che
- accedevano a queste librerie mentre venivano aggiornate (nessun altra
- sorpresa.) Conseguentemente e' una buona idea quella di fare un reboot
- del sistema prima di installare le nuove librerie e avere pochi
- processi attivi durante questo upgrade. Lanciare il sistema in
- modalita' utente singolo (single-user) e' probabilmente una buona idea!
-
- Se tu vuoi fare la strada piu' dura, puoi ottenere la libreria e
- l'header file da:
-
- ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz
-
- Alternativamente puoi trovare i file binari precompilati in
- distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb
- nel medesimo sito, o seguire le istruzioni date alla domanda 1.2 per
- correggere lo stesso errore con le aggiornate versioni di Slackware 3.1.
- Non scegliere questo metodo se non sai quello che stai facendo!
-
-
-
-1.4) [SLACKWARE 3.1] Perche' ricevo problemi di libdl e dlfcn.h perse??
-
- Questa manifestazione avvisa che non c'e' la capacita' di linkare
- funzioni come dlopen(), dlclose(), etc. durante l'ultima fase di compilazione.</PRE>
-
-<PRE> Guarda la risposta alla domanda 1.3. Slackware fino alla versione 3.0
- era provvista di questa libreria e degli include file e ritornarono nell'ultima
- versione 3.1, ma la prima versione della 3.1 (prima del 9 settembre 1996)
- non aveva queste e molte versioni su CD-ROM erano state stampate
- con la prima edizione.
-
- C'e' stata una sola notizia di sistema corrotto da programmi che
- accedevano a queste librerie mentre venivano aggiornate (nessun altra
- sorpresa.) Conseguentemente e' una buona idea quella di fare un reboot
- del sistema prima di installare le nuove librerie e avere pochi
- processi attivi durante questo upgrade. Lanciare il sistema in
- modalita' utente singolo (single-user) e' probabilmente una buona idea!
-
- Per fissare facilmente questo basta ottenere il file ldso.tgz dal quarto
- dischetto della piu' recente distribuzione Slackware e scompattarlo da
- dalla directory di root (/) e poi lanciare
-
- sh install/doinst.sh
-
- per completare l'installazione. Successivamente lanciare
-
- ldconfig
-
- ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
- make clean dopo aver installato la libreria e prima di ricompilare.
-
- Se vuoi installarla manualmente bisogna installare prima il file
- dlfcn.h in /usr/include.
-
- Secondo, installa il file libdl.so.1.7.14 (o qualsiasi altra versione)
- in /lib, e poi fai:
-
- cd /lib
- ln -sf libdl.so.1.7.14 libdl.so.1
- ln -sf libdl.so.1 libdl.so
-
- Su certi sistemi (a seconda della personale configurazione di GCC)
- e' necessario fare:
-
- cd /usr/lib
- ln -sf /lib/libdl.so .
-
- Finalmente
-
- ldconfig
-
- ATTENZIONE! Devi rilanciare nuovamente il file configure e fare un
- make clean dopo aver installato la libreria e prima di ricompilare.
-
-
-1.5) La mia compilazione si arresta segnalando la mancanza dell'include file
- dlfcn.h perso.
-
- Guarda la risposta 1.3/1.4. Non dimenticare che se stai usando un sistema
- a.out devi prima avere installato il pacchetto dld (il quale non viene
- fornito con molti sistemi a.out) per avere dlfcn.h e gli altri.
- Guarda la domanda 1.11.
-
-
-1.6) GCC reclama una ignorata opzione -fpic
-
- Le prime versioni di GCC accettavano entrambe -fpic o -£PIC.
- Nelle piu' recenti versioni (V2.7.2?) richiede -£PIC.
- Se tu stai usando una versione ELF di Linux, questa puo' per sicurezza
- essere ignorata perche' -£PIC e' di default.
-
- Puoi correggere questa editando il file src/Makefile.global e cambiare
- CFLAGS_SL
-
-
-1.7) Ricevo messaggi di warning (errore) del tipo
- warning: cast from pointer to integer of different size
-
- Questi appararivano nelle prime versione di Postgres95 e posso per sicurezza
- essere ignorate. PostgreSQL V6.0 dovrebbe compilare senza warnings
- ad eccezione di quelli relativi agli header file di sistema (i quali possono
- essere ignorati per sicurezza).
-
-1.8) [SuSE-Linux 4.2-4.4] Dove sono curses e termcap?
-
- SuSE-Linux 4.2 ha le ncurses ma non le curses. 4.4 ha entrambe.
- SuSE-Linux ha anche le librerie termcap in /usr/lib/termcap
- invece di essere in /usr/lib.
-
- PostgreSQL (fino alla V6.0)
- -----------------------
- Setta il valore delle CURSES_LIB in src/Makefile.custom a -lncurses
- (o fai questo attraverso lo script di personalizzazione).
- Aggiundi la seguente riga al file src/Makefile.custom:
-
- LDADD_BE+= -L/usr/lib/termcap
-
- Devi editare il file src/bin/psql/Makefile e cambiare:
- ifeq ($(PORTNAME), linux)
- LD_ADD+=
- con:
- ifeq ($(PORTNAME), linux)
- LD_ADD+= -ltermcap
-
- PostgreSQL (V6.1)
- -----------------
- Lo script di configurazone non sa' di cercare nella directory
- /usr/lib/termcap per le librerie termcap, percio' tu devi specificare
- questo come una delle directory delle librerie dove cercare.
-
- Se non funziona (non ho SuSE per verificare che vada)
- allora lancia configure, edita src/Makefile.global e aggiungi
- -ltermcap alla linea LDFLAGS
- (dopo -lreadline). (Alternativamente poi configurare
- src/Makefile.custom prima di lanciare configure.)
-
- Alcune versioni di SuSE forniscono solo ncurses, percio' tu devi
- forzare l'uso delle ncurses piuttosto che le curses cambiando
- -lcurses con -lncurses. (dimostrato per SuSE 5.1)
-
-
-1.9) Perche' ho problemi con ld.so?
-
- Se tu hai problemi con ld.so, un altra libreria richiesta sotto ELF
- per il caricamento dinamico, allora hai creato disordine con la tua
- installazione o fatto un upgrade di Linux.
-
- Guarda le risposte alle domande 1.3/1.4. Devi installare ld.so.x.y.z in
- /lib e lanciare ldconfig.
-
- La piu' recente vesione stabile del pacchetto ld eì 1.7.14
- Mentre scrivo, la versione 1.8.x di ld e' sperimentale.
-
-1.10) Perche' ricevo errori del tipo `yy_flush_buffer undefined'?
-
- Questo non e' specifico per Linux, ma e' comune nelle vecchie istallazione
- di Linux. Devi avere una versione recente di Flex (2.5.2 o superiore)
- per compilare PostgreSQL. Nota che Flex 2.5.3 ha dei bug: guarda la
- domanda 3.4.
-
-1.11) Come posso compilare PostgreSQL su un sistema a.out?
-
- Prima, devi installare la libreria dld. Puoi ottenere questa da Sunsite come:
- Linux/libs/dld.3.2.7.tar.gz
- (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz)
-
- Secondo, aggiungi la seguente linea al file src/Makefile.custom:
- LINUX_ELF=
- (o usa lo script di configurazione)
-
-1.12) Che cosa fallisce con:
- yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
- make: /usr/bin/make: cannot execute binary file
-
- Questo e' un problema delle prime versioni di Postgres95. Il default
- per PostgreSQL e' di usare bison -y piuttosto che yacc.
-
- yacc e' generalmente implementato come script che invoca bison -y
- Per alcune ragioni (certe versioni di make? certe versioni di bash?)
- make non puo' eseguire questo file di script.
-
- Per correggere questo, edita semplicemente src/mk/port/postgres.mk.linux
- e alla fine del file cambia:
- # YACC = bison -y
- con
- YACC = bison -y
-
-1.13) Quali sono i riferimenti in X11_LIB a libsocket e libnsl in
- src/Makefile.global?
-
- Questo era un problema nella versione 1.08 (specifica per Sun Solaris)
- E' stata fissata nella 1.09 e 6.0
-
-1.14) [DEBIAN] Dov'e' libtermcap?
-
- Debian Linux viene distribuita senza librerie termcap e usa ncurses
- (le quali usano terminfo all'interno). Non c'e' bisogno di cambiare la
- variabile CURSES_LIB in src/bin/psql/Makefile peche' Debian provvede
- con un link da libncurses a libcurses (diversamente da SuSE-Linux --
- Vedi domanda 1.8).
-
- Devi editare src/bin/psql/Makefile e commentare i cambiamenti:
- ifeq ($(PORTNAME), linux)
- LD_ADD+= -ltermcap
- con:
- ifeq ($(PORTNAME), linux)
- LD_ADD+=
-
-
-1.15) [REDHAT] Posso trovare PostgreSQL come RPM?
-
- Si! Michal Mosiewicz <mimo@lodz.pdi.net>
- (http://www.pdi.lodz.pl/~mimo) ha creato un RPM
- per PostgreSQL V6.0 per architettura Intel uplodata a
- ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm
-
- Questa e' una precompilata versione, le sorgenti RPM erano come
- io ho scritto (3 Febbraio 1997).
-
-1.16) Quando tento di compilare una versione in sviluppo sotto Linux, la
- compilazione fallisce con il seguente messaggio:
- 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
-
- Il problema e' che Linux non prevede prototipi per queste funzioni inline.
- La soluzione e' di andare dentro la directory .../src/backend/storage/ipc
- ed editare Makefile.
- Cambia la linea
- CFLAGS+=$(INCLUDE_OPT)
- con
- CFLAGS+=$(INCLUDE_OPT) -Wno-error
-
- Fai lo stesso con la directory ../src/backend/storage/lmgr.
-
-1.17) Quando sto' compilando postgres, gcc riporta un signal 11 e si interrompe.
- Piu' specificatamente:
- gcc: Internal compiler error: program cc1 got fatal
- signal 11
-
- Questo e' un problema di hardware/memoria. PostgreSQL e' un grande
- programma, e una larga compilazione con gcc (come la compilazione
- di PostgreSQL o la compilazione del kernel) stressa la memoria come
- molti altri programmi, mostrando errori che non appaiono nelle normali
- operazioni. Sistemi operativi inferiori non riescono a stressare l'hardware
- in questo modo, per questo non vedrai mai questi errori sotto DOS/Windows.
-
- Maggiori informazioni in merito:
- http://www.bitwizard.nl/sig11
-
- Da questo Sig11 FAQ, sembra essere un errore specifico con Redhat 5.0
- lanciando su un processore Cyrix. Guarda il link superiore per i dettagli!
-
-1.18) Posso installare 6.1.1 su MkLinux?
-
- Tatsuo Ishii <t-ishii@sra.co.jp> ha fatto questo su MkLinux DR2.1 update2 dopo una piccola
- patch disponibile presso:
- ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz
-
-1.19) Perche' esce o va in crash??
-
- Ci sono state diverse segnalazioni di gmake, dove in tutte si usciva
- subito e c'era una seg faulting. Il problema piu' marcato e' stato
- riportato con gmake 3.74 - upgradandolo alla 3.76.1 si e' risolto.
- Comunque, la versione 3.74 e' funzionante per altri tipi di setup.
- In breve, prova ad upgradare gmake all'ultima versione che puoi trovare
- prima di riportarlo come un problema.
-
-1.20) Come posso ottimizzarlo per un 486 o un processore pentium
-
- Le flags di compilazione per default non permettono l'optimizzazione per 486
- o per processori Pentium. Per aggiungerla come ottimizzazione, edita
- Makefile.custom e aggiungi:
-
- CFLAGS+= -m486
-
- o (per i nuovi compilatori che molte persone non stanno usando)
-
- CFLAGS+= -mpentium
- o
- CFLAGS+= -mpentiumpro
-
-1.21) Perche' ricevo strani risultati con i tempi di stampa (per esempio
- nel test di regressione 'timespan'?
- Le ore appaiono come: '4 hours 59 mins 60.00 secs'
- invece di '5 hours'
-
- Questo e' un problema con le librerie glibc2 le quali appaiono con
- RedHat 5.0. Aggiorna le tue glibc con le ultime versioni di RedHat per
- v5.0/hurricane. Tutto quello che e' anteriore alle glibc-2.0.7 ha
- questi problemi.
-
-----------------------------------------------------------------------
-Sezione 2: Compilare programmi accessori
-----------------------------------------------------------------------
-
-2.1) Il linker non trova libX11 quando sta' compilando pgtclsh
-
- Aggiungi la seguente riga al file src/Makefile.custom
- X11_LIBDIR = /usr/X11R6/lib
-
-
-----------------------------------------------------------------------
-Sezione 3: Problemi di esecuzione
-----------------------------------------------------------------------
-
-3.1) Ricevo un messaggio tipo _fUnKy_POSTPORT_sTuFf_ non definito quando
- lancio uno script come createuser
-
- Questo e' un bug nella V.1.06-V1.07 di Postgres ed e' fissata con la versione
- 1.08 o superiore.
-
-3.2) Lancio postmaster e dopo il sistema dice 'Bad system call(Core
- dumped)'
-
- Questo indica che non hai compilato il supporto per la memoria condivisa nel
- kernel. Devi ricompilare il kernel per aggiungere questa feature.
-
-3.3) Quando tento di lanciare Postmaster, perche' ricevo un errore del tipo
- 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.
-
- I permessi sul file /dev/null sono sbagliati.
-
- ls -l /dev/null should give you something like:
-
- crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null
-
- Correggi i permessi con:
-
- chmod a+rw /dev/null
-
-3.4) Perche' createuser non funziona?
-
- C'e' un problema con la versione 2.5.3 di GNU Flex e createuser.
- Le tue opzioni devono recedere a Flex V2.5.2, aggiornale alla V2.5.4 o
- applica una patch alla V2.5.3 la quale e' fornita in doc/README.flex
- Puoi ottenere la V.2.5.4 da:
- ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz
-
-3.5) Perche' ricevo un errore del tipo:
- IpcMemoryCreate: memKey=155356396 , size=760632 ,
- permission=384IpcMemoryCreate: shmget(..., create, ...)
- failed: Invalid argument
-
- Non hai compilato il supporto IPC nel kernel di Linux.
- Devi ricompilare il kernel con questa opzione.
-
-3.6) Perche' psql fallisce con:
- psql: can't load library 'libpq.so.1'
-
- Psql e' stata compilata per linkarsi dinamicamente con la libreria libpq.
-
- Per risolvere questo, devi accedere come root ed editare il file
- /etc/ld.so.conf
- Aggiungi una linea singola alla fine, la quale prende il nome della directory
- delle librerie di PostgreSQL (la sottodirectory delle librerie
- dell'installazione diPostgreSQL) e lancia
- /sbin/ldconfig -v
-
- Alternativamente, (e se tu non hai accesso come root), devi usare la
- variabile di ambiente LD_LIBRARY_PATH.
-
- La variabile LD_LIBRARY_PATH contiene una lista di paths per ricercare le librerie
- condivise. Questa lista e' ricercata prima delle librerie specificate da ldconfig.
-
- Percio' sotto Bash, devi fare qualcosa del tipo:
- export LD_LIBRARY_PATH='PathToPGSQL'/lib
- o, usando tcsh
- setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
- rimpiazzando 'PathToPGSQL' con l'appropriato path alla tua directory PostgreSQL
- al top level.
- Nota che il comando ldd puo' essere eseguito su un programma linkato dinamicamente
- alla lista di paths a tutte le librerie condivise sopra, alle quali gli eseguibili
- dipendono.
-
-
-3.7) Altri comportamenti strani
-
- Non sono sicuro quali siano i sintomi che non permettono la corretta esecuzione,
- ma si puo' ipotizzare che le ragioni vadano oltre il regolare funzionamento del
- loader dinamico nel caricare la corretta versione delle librerie libpq.
- Se hai una versione vecchia dai una occhiata al path delle librerie
- (per esempio in /usr/lib) che dovrebbero caricare nelle nuove versioni che intendi
- far girare. Renditi sicuro di prendere queste nel percorso e guarda la Domanda 3.6
- per i dettagli in merito al caricamento dinamico delle librerie.
-
-3.8) Quando PostgreSQL e' attivo allo shutdown di sistema, Linux
- esegue al reboot un fsck al disco.
-
- Ci sono state alcune segnalazioni di questo e sembre essere il
- risultato di lanciare PostgreSQL dal /etc/inittab come suggerito
- nel file INSTALL.
-
- Si raccomanda percio' di lanciare il postmaster da un rc script.
- Sotto una versione di tipo Slackware, devi modificare /etc/rc.d/rc.local
- per lanciare il postmaster. Sotto una versione in stile RedHat
- devi creare uno script in stile SysV sotto /etc/rc.d/rc3.d basato
- sul file /etc/rc.d/init.d.
-
- C'e' un esempio di file in contrib/linux/postgres.init
-
- Un altro file di esempio è proposto da John Robinson
- <john@intelligent.co.uk> il quale puo' essere modificato a seconda delle esigenze:
-
-#!/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) Perche' la Query 32 nel test di regressione pretende molto tempo?
-
- Questo e' un bug nello script di regressione presente su Linux Os.
- Ci sono due raggiri per evitarli (informazione di Tatsuo Ishii <t-ishii@sra.co.jp>):
-
- 1. cambia quello che segue in regress.sh:
- time postgres -texecutor -tplanner -Q bench < bench.sql
- a:
- postgres -texecutor -tplanner -Q bench < bench.sql
-
- 2. dopo aver lanciato il test, rimuovi la linea finale di
- bench.out, qualcosa del tipo:
- 85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k
- poi digita:
- sh ./perquery < bench.out > & bench.out.perquery
-
-
-
-3.10) Perche' ricevo dei risultati arrotondati su date/time aritmetici,
- come
- select '4 hours'::timespan;
- returning '3 hours 59 minutes 60 seconds'?
-
- Stai usando le nuove librerie glibc2 e hai una versione precedene alla
- 2.0.7. E' un problema di arrotondamento matematico nella libreria.
- Aggiorna le tue librerie.</PRE>
-
-<PRE>
-----------------------------------------------------------------------------
-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
-----------------------------------------------------------------------------
-Daniele Medri 'MaDriD' - e-mail: madrid@darshan.org web: www.darshan.org
-----------------------------------------------------------------------------</PRE>
-
-</BODY>
-</HTML>