diff options
Diffstat (limited to 'doc/src/FAQ/FAQ_linux_german.html')
-rw-r--r-- | doc/src/FAQ/FAQ_linux_german.html | 748 |
1 files changed, 748 insertions, 0 deletions
diff --git a/doc/src/FAQ/FAQ_linux_german.html b/doc/src/FAQ/FAQ_linux_german.html new file mode 100644 index 00000000000..4f32472430f --- /dev/null +++ b/doc/src/FAQ/FAQ_linux_german.html @@ -0,0 +1,748 @@ +<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> |