PostgreSQL unter Windows98
Seit der Version 8 gibt es für alle neueren Windows-Versionen einen nativen Installer für PostgreSQL, der von der PostgreSQL-Seite heruntergeladen werden kann.
Für ältere Windows-Versionen gibt es keine keine Setup-Datei, so wie man es gemeinhin bei Windows-Programmen gewohnt ist. Der Grund liegt darin, dass PostgreSQL kein Windows-Programm war, sondern für UNIX- und Linux-Plattformen entwickelt wurde. Erst seit der Version 8 steht ein Windows-Installer zur Verfügung, der aber nur mit neueren Versionen genutzt werden kann, da er ein NTFS-Dateisystem voraussetzt.
Für ältere Windows-Versionen deshalb eine UNIX-Systemumgebung emuliert werden, innerhalb der PostgreSQL läuft. Cygnus Solutions (jetzt Red Hat) hat mit Cygwin.dll eine Bibliothek entwickelt, die eine UNIX-Umgebung auf einem Windows-System emuliert. So ist es möglich, dass Programme, die ursprünglich für diese Betriebssysteme programmiert wurden, auch auf einer Windows-Maschine ausgeführt werden können. Cygwin.dll arbeitet mit allen WIN9x, WIN2000 und WIN-NT Betriebssystemen zusammen.
Die Installation von PostgreSQL ist nicht recht einfach, da das Datenbanksystem bereits in der Cygwin-Distribution enthalten ist, und mit dem Setup-Programm von Cygwin installiert wird.
Cygwin - eine UNIX-Umgebung für Windows
Erster Schritt: Die Dateien herunterladen
Auf den Seiten http://www.cygwin.com oder http://sources.redhat.com/cygwin/ können Sie das Cywin-Paket kostenlos herunterladen. Doch zuerst müssen Sie die Datei setup.exe auf Ihren Rechner herunterladen. Klicken Sie dazu auf das nebenstehende Bildchen und speichern die Datei setup.exe in Ihrem Dateisystem.
Nun kann der eigentliche Installationsvorgang beginnen. setup.exe führt Sie von einem Fenster zum nächsten, und fragt dabei alle notwendigen Informationen ab. Nach dem Aufruf von setup.exe meldet sich die Cygwin-Installation mit dem folgenden Startfenster.
Ein Klick auf 'weiter' bringt Sie zu einem Auswahldialog, in dem Sie angeben, was Sie tun möchten. Sie haben die Wahl, ob Sie direkt vom Internet installieren wollen oder die Dateien herunterladen möchten. Wenn Sie die zweite Option wählen, und die Dateien auf Ihren Rechner herunterziehen, haben Sie immer die Möglichkeit, Cygwin aus diesem Verzeichnis neu zu installieren, sollte irgend etwas nicht klappen.
Mit einem Klick auf 'weiter' gelangen Sie zum nächsten Fenster, 'Select local package directory'. Hier tragen Sie den Pfad zu einem lokalen Verzeichnis Ihres Rechners ein. In dieses Verzeichnis werden die Cygwin-Dateien kopiert. Danach klicken Sie auf 'weiter' und geben im nächsten Fenster an, wie die Verbindung zum Internet aufgebaut werden soll. Wenn Sie den Button 'Use IE5 Settings' markieren, werden dieselben Einstellungen für die Verbindung benutzt, wie für den Browser. Im darauffolgenden Fenster wird die Verbindung hergestellt und eine Liste aller Mirrors geladen, auf denen die Cygwin-Distribution zum Download verfügbar ist. Wenn der Ladevorgang beendet ist, können sie aus dem nächsten Fenster einen Server auswählen, von welchem Sie downloaden wollen. Wählen Sie einen Mirror in Ihrer Nähe und klicken Sie auf 'weiter'.
Im nächsten Fenster wird die Datei setup.ini heruntergeladen und danach meldet sich Cygwin mit einer Auswahl aller verfügbaren Pakete. Markieren Sie alle Pakete aus der Sektion Base, und natürlich aus der Sektion Database das Paket PostgreSQL, zum herunterladen. Wenn Sie auf den Button 'View' am oberen Rand des Fensters klicken, erhalten Sie verschiedene Ansichten der Paketauswahl. Sie können so auch einzelne Pakete aus den verschiedenen Sektionen auswählen. Achten Sie darauf, dass der Button 'Current' angeklickt ist, um die aktuellen Versionen der Pakete auszuwählen. Die folgenden Pakete müssen unbedingt in Ihrer Downloadliste enthalten sein:
- PostgreSQL
- cygwin
- readline
- libreadline
- zlib
- crypt
Mit einen Klick auf 'Next' starten Sie den Download. Sie können im nächsten Fenster mitverfolgen, welche Pakete gerade heruntergeladen werden und den Fortschritt des Downloads beobachten.
Wenn alle Dateien auf Ihrem Rechner sind, meldet setup.exe den erfolgreichen Download mit der folgenden Meldung:

Zweiter Schritt: Cygwin installieren
Um jetzt die Installation von Cygwin durchzuführen rufen Sie die Datei setup.exe erneut auf und wählen 'Install from local Directory'. Danach werden Sie aufgefordert, ein Verzeichnis anzugeben, in welches Cygwin installiert werden soll. Angenommen, sie tragen hier den Pfad C:\unix ein, dann wird dieses Verzeichnis von nun an als CYGWINHOME/ referenziert und /cygdrive/c/ ist ein Alias für das Laufwerk C.
Im folgenden Fenster geben Sie den Pfad zu dem Verzeichnis ein, in welches Sie zuvor die Cygwin-Dateien heruntergeladen haben und starten die Installation von Cygwin. In einm letzten Dialogfenster werden sie gefragt, ob setup.exe eine Desktop-Verknüpfung erstellen soll. antworten Sie mit 'ja'. Damit ist der Installationsvorgang beendet.
Um die Unix-Umgebung auszuprobieren, klicken Sie auf dieses neue Icon. Es öffnet sich eine DOS-Box mit einer Cygwin-shell. Die Eingabeaufforderung hat die Form: IhrRechner@IHRRECHNER ~ und Sie befinden sich im Verzeichnis /home/IhrRechner. (Cygwin benutzt den Namen, den Sie bei der Windws-Installation für Ihren Rechner vergeben haben.) Geben Sie zum Test ein paar Kommandos ein, wie beispielsweise:
mars@MARS ~
$ pwd
/home/mars
mars@MARS ~
$ cd /
mars@MARS / ~
$ ls
bin etc cygwin.bat lib tmp var
cygwin.ico home sbin usr
mars@MARS / ~ |
Mit der Eingabe von exit,
logout oder CTRL+D beenden Sie die Shell wieder.
Sie können den Pfad C:\unix\bin vor den Windows-Pfaden in die Datei autoexec.bat eintragen, damit Sie die Anwendungen ohne Angabe des Pfades direkt aufrufen können.
Der Cygserver
UNIX und Linux unterstützen die Verwaltung gemeinsam benutzter Speicherblöcke und eines internen Nachrichtensystems, so genannter shared-memory-blocks, und Semaphoren. Diese Speichertechnologie wird von Windows nicht unterstützt und muss deshalb ebenfalls emuliert werden, da PostgreSQL diese Technologien benutzt. Damit das Datenbanksystem unter Windows initialisiert werden kann und lauffähig ist, müssen Sie jedesmal, wenn Sie PostgreSQL benutzen den Cygserver installieren und starten. Dieses Programm wird standardmässig im Verzeichnis /usr/sbin/ installiert. Das folgende Kommando startet den Cygserver im Hintergrund.
$ mars@MARS ~
$ export CYGWIN=server
$cygserver-config
$ /usr/sbin/cygserver &
|
Die Initialisierung von PostgreSQL
Rufen Sie die Initialisierungsroutine initdb mit der Option -D, gefolgt vom Pfad zum PostgreSQL Datenverzeichnis auf. In diesem Verzeichnis wird der PostgreSQL Datenbankcluster installiert. Wenn Sie zusätzlich die Option -W angeben, werden Sie aufgefordert, einen Benutzernamen anzugeben. Dieser Benutzer wird der Superuser der Datenbank.
mars@MARS / ~
$ initdb -D /usr/local/pgsql/data
$ The files belonging to this database system will be owned by
user "mars".
This user must also own the server process.
creating directory /usr/share/postgresql/data... ok
creating directory /usr/share/postgresql/data/base... ok
creating directory /usr/share/postgresql/data/global... ok
creating directory /usr/share/postgresql/data/pg_xlog... ok
creating directory /usr/share/postgresql/data/pg_clog... ok
creating template1 database in /usr/share/postgresql/data/base/1...
creating configuration files... ok
initializing pg_shadow... ok
enabling unlimited row size for system tables... ok
creating system views... ok
loading pg_description... ok
vacuuming database template1... ok
copying template1 to template0... ok
Success. You can now start the database server using:
/usr/bin/postmaster -D /usr/local/pgsql/data
or
/usr/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
|
Aus den Meldungen von initdb sehen Sie, welche Aufgaben initdb erfüllt. Es legt das Datenverzeichnis /usr/local/pgsql/data sowie andere von PostgreSQL benötigte Verzeichnisse an und die Datenbank template1, die als Vorlage für alle neuen Datenbanken benutzt wird. Ferner werden Konfigurationsdateien und Systemtabellen erstellt. Danach meldet initdb den Erfolg der Initialisierung und stellt Ihnen zwei Möglickeiten zur Auswahl, den PostgreSQL Datenbankserver zu starten.
Den Datenbankserver starten und beenden
Standardmässig werden Verbindungen zu PostgreSQL über Unix-Domain-Sockets hergestellt. Damit PostgreSQL auch TCP/IP-Verbindungen akzeptiert, muss beim Start des Postmasters die Option -i angegeben werden. Wenn dieser Parameter nicht angegeben wird, kann keine Verbindung aufgebaut werden und das Programm bricht mit einem Socket-Fehler ab. Starten Sie deshalb den Datenbankserver entweder mit
$ postmaster -i -D /usr/local/pgsql/data &
|
oder
$ pg_ctl start -D /usr/local/pgsql/data -o "-i"
|
Im folgenden Beispiel wird der Postmaster als Hintergrundprozess gestartet, danach meldet sich der Datenbankserver mit einigen DEBUG-Meldungen.
mars@MARS / ~
$export CYGWIN=server
$ cygserver &
$ postmaster -i -D /usr/local/pgsql/data &
$ DEBUG: checkpoint record is at 0/113640
DEBUG: redo record is at 0/113640; undo record is at 0/0;
shutdown TRUE
DEBUG: next transaction id: 89; next oid: 16556
DEBUG: database system is ready
|
Damit ist das Datenbanksystem betriebsbereit. Falls der Postmaster nicht als Hintergrundprozess (mit &) gestartet wurde, sollten Sie jetzt eine zweite Konsole öffnen, da in der aktuellen Konsole Meldungen des Datenbankservers ausgegeben werden. Mit Klick auf die Desktopverknüpfung wird eine zweite Konsole geöffnet. Nun können Sie wie gewohnt mit PostgreSQL arbeiten.
Sie beenden den Datenbankserver wieder mit:
mars@MARS / ~
$ pg_ctl stop -D /usr/local/pgsql/data
waiting for postmaster to shut down..... done
postmaster successfully shut down
|
Den Datenbankserver als Dienst unter Windows2000 starten
Um PostgreSQL nicht immer von der Konsole aus
starten zu müssen, können Sie PostgreSQL und den IPC-Daemon als
Dienst unter Windows2000 installieren.
Dazu muss zunächst der Pfad zu den cygwin-binaries mit in die
Windows Umgebungsvariablen aufgenommen werden.
Dazu gehen Sie in Start/Einstellungen/Systemsteuerung/System klicken auf
die Kartei Erweitert und dann auf Umgebungsvariablen. Dort fügen
Sie dann an den Anfang (!) der Variable Path 'C:\unix\bin' an.

Jetzt können Sie den IPC-Daemon als Dienst installieren. Dazu rufen Sie
die cygwin Umgebung auf und geben folgenden Befehl ein:
mars@MARS / ~
$ ipc-daemon --install-as-service
|
Nach einem Reboot sollte der IPC-Daemon nun als Dienst laufen.
Nachschauen können Sie das unter Start/Einstellungen/Systemsteuerung/Verwaltung/Dienste.

Als nächstes wird PostgreSQL als Dienst installiert. Der Dienst
muss mit dem gleichen User angelegt werden, der auch die PostgreSQL
Datenbank initialisiert hat. Dieser User muss auch Dienste unter
Windows2000 anlegen dürfen.
Im cygwin Fenster wird folgender Befehl eingegeben, damit PostgreSQL
als Dienst gestartet wird:
(Die Datenbank sollte wie oben beschrieben schon initialisiert sein.)
mars@MARS / ~
$ cygrunsrv --install postmaster \
--path /usr/bin/postmaster \
--args "-D /usr/local/pgsql/data -i" \
--dep ipc-daemon \
--termsig INT \
--user mars \
--shutdown
|
Der Befehl muss in einer Zeile eingeben werden, oder wie im Beispiel
mit Backslashes.
Nach der Eingabe des Passworts und einem erneuten Reboot sollte der
postmaster nun als Dienst laufen.
Nun haben Sie den PostgreSQL Datenbankserver bei jedem Start von Windows
automatisch zur Verfügung. Zu beachten ist hierbei, dass das
Passwort beim Anlegen des Dienstes falsch eingetragen wird. Um das zu
korrigieren klicken Sie mit der rechten Maustaste auf den postmaster
Dienst und korrigieren Ihr Passwort (Loginpasswort) entsprechend.
Weitere Informationsquellen
Sowohl PostgreSQL als auch Cygwin bieten Unterstützung durch Mailinglisten. Auf der Seite http://www.postgresql.org/community/lists/ können Sie sich in verschiedene Mailinglisten eintragen, auch zu allen Fragen rund um PostgreSQL und Cygwin. Listen zu allen Themen von Cygwin können Sie auf den Seiten http://cygwin.com/lists.html und http://sources.redhat.com/cygwin/lists.html abonnieren. Leider sind alle Listen englischsprachig. Im Usenet gibt es de.alt.comp.cygwin+co, eine deutschsprachige Newsgroup zu Cygwin-Themen.
© 2005 by Cornelia Boenigk, Norbert Pfeiffer und Hakan Kuecuekyilmaz
|