mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-17 19:30:00 +08:00
Add new FAQ's.
This commit is contained in:
parent
264d4259b9
commit
7e2c430b1e
1075
doc/FAQ_german
Normal file
1075
doc/FAQ_german
Normal file
File diff suppressed because it is too large
Load Diff
752
doc/FAQ_linux_german
Normal file
752
doc/FAQ_linux_german
Normal file
@ -0,0 +1,752 @@
|
|||||||
|
|
||||||
|
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
|
695
doc/FAQ_linux_italian
Normal file
695
doc/FAQ_linux_italian
Normal file
@ -0,0 +1,695 @@
|
|||||||
|
|
||||||
|
=======================================================
|
||||||
|
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
|
||||||
|
----------------------------------------------------------------------------
|
Loading…
Reference in New Issue
Block a user