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

Cygwin-Setup-Datei 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
Setup

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.

path

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.

IPC-Daemon Service

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.

postmaster Service

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

Elefant
© Cornelia Boenigk
Wasenstrasse 8
72124 Pliezhausen
mail: c@pgsql.info
PostgreSQL powered
Valid HTML 4.01
Valid CSS