Postgres unter Cygwin

Neben der nativen Postgres-Installation (die wir empfehlen) gibt es auch die Möglichkeit, Postgres unter Cygwin zu betrieben. Insgesamt eignet sich eine unter Cygwin kompilierte Postgres-Installation unter nur für den Testbetrieb, denn bei der Sortierung werden Umlaute falsch eingeordnet und es wird sehr großzügig mit der Prozessorlast umgegangen: Wenn Postgres-Prozesse laufen, dann ist die Performance des Rechners für andere Anwendungen weitgehend gesperrt.

Aber auch bei der nativen Postgres-Installation unter Windows benötigen Sie für Postgres und SuperX unter Windows die UNIX-Shell-Emulation cygwin. Cygwin bietet rudimentäre UNIX-Funktionen wie z.B. die "bash", aber keine UNIX-typischen Dateirechte (z.B. Ausführungsrechte für User, Gruppen oder Andere).Außerdem unterstützt Cygwin (unseres Wissens) keine Locales, und unter Win98 haben wir keine stabile Installation hinbekommen. In den Mailinglisten wurden häufiger Probleme mit Win98 berichtet, unter WinME, Win2000 und Windows XP haben wir Cygwin erfolgreich getestet.

Das folgende Beispiel arbeitet mit Postgres 7.4.x. Postgres ist als Paket im Installer von Cygwin auswählbar.

Für die Installation muss man eine Windows-Kennung benutzen, die Rechte für "Standardbenutzer" reichen aus (es sei denn Cygwin soll als Dienst laufen). Außerdem: Wenn Sie planen, Daten bzw. entladene Datenbank-Exporte zwischen verschiedenen Rechnern hin- und herzuschieben, sollten Sie darauf achten, dass Sie immer die gleiche Kennung benutzen. Sie können z.b. superx nehmen. Die Windows Kennung, unter der man Cygwin installiert, wird nämlich nach Cygwin durchgereicht.

Vorgehen:

1.    Die setup-Datei setup.exe der Unix-Emulation Cygwin von http://www.cygwin.com herunterladen und starten
Dann je nach Belieben  direkt aus dem Internet installieren oder zunächst herunterladen und dann install from local directory (alle Komponenten ausgewählt lassen) anklicken (wir empfehlen letzteres Vorgehen, da das Online-Cygwin-Paket ständig aktualisiert wird).

2.    Als Installationspfad sollten Sie unbedingt einen Pfad wählen, der keine Leerzeichen enthält, z.B. c:\cygwin).

3.    Bei der Frage, für welchen User Cygwin installiert werden soll, wählen Sie "All users", und beim Standard-Dateiformat wählen Sie Unix.

4.    Bei der Auswahl der Pakete sollten Sie wie folgt vorgehen: Bei den Shells mauss auf jeden Fall die bash ausgewählt sein. Zusätzlich zu den Defaults müssen lediglich Base ->  TextUtils, Database -> Postgres, Admin -> cron, net->openssh und Libs -> libint und libint1 manuell ausgewählt werden. Ein Mailprogramm (mutt, mail) sollte auch installiert werden. Wenn Sie Postgres selbst aus den Quellen installieren wollen, dann wählen Sie natürlich nicht Postgres aus.
Danach einmal starten, das home-Verzeichnis wird angelegt

5.    Das Cygwin-/bin Verzeichnis muss in der Umgebungsvariable PATH vor den Windows Programm-Verzeichnissen liegen, denn die sort.exe von Cygwin muss benutzt werden, nicht die von Windows. Prüfen Sie außerdem im Verzeichnis /bin, ob die bash.exe existiert - dies muss der Fall sein.

6.    Wenn Sie Postgres nativ (d.h. mit dem Windows-Installer von Postgres ab Version 8.x) installiert haben, dann können Sie jetzt aufhören. Der folgende Teil gilt nur für Postgres unter Cygwin:
IPC-Daemon starten
ipc-daemon2 &
Danach ist Postgres bereits installiert. Wenn Sie Postgres selbst aus den Quellen installieren, dann gehen Sie in das Verzeichnis mit den Quellen von postgresql. Die Installationsschritte entsprechen der Linux-Installation, außer dass Sie beim configure auch --enable-odbc eingeben sollten. Wenn entsprechende Fehlermeldungen erscheinen, müssen Sie noch dafür sorgen, dass (am Beispiel einer Installation von Cygwin in c:\cygwin)  C:\cygwin\usr\local\pgsql\lib\pq.dll im PATH ist.

7.    Nach der Installation Cygwin neu starten; danach muss unter cygwin ein User installiert werden. Geben Sie dazu ein
mkpasswd -d | grep <<Windows-Username>> >> /etc/passwd
Unter Win95/98/ME muss man das Passwort in /etc/passwd noch verschlüsseln; ersetzen Sie den Passus "use crypt" durch die Ausgabe von dem Befehl
crypt <<Ihr Passwort>>

8.    Zur Initialisierung von Postgres folgendes eingeben:

ipc-daemon2 &

initdb -D /usr/local/pgsql/data

in /usr/local/pgsql/data/postgresql.conf  #tcpip_socket=false 
  # wegnehmen und auf true setzen

 

Zum Start des Postmaster eine Batchdatei z.B. pgsql_start.x anlegen mit dem Inhalt:

 

pgsql_start.x

#! /bin/sh

ipc-daemon2 &

pg_ctl -D /usr/local/pgsql/data -l /var/log/postgres.log -o -i start

Danach gibt man ein:

chmod +x pgsql_start.x

./pgsql_start.x

 

Der Postmaster startet dann, und die Logdatei /var/log/postgres.log wird gefüllt.

Den erfolgreichen Start von Postgres kann man prüfen, indem man psql template1 eingibt.

Den postmaster beendet man wie unter UNIX mit
 pg_ctl stop ?D /usr/local/pgsql/data

Die Installation des Kernmoduls kann danach vorgenommen werden; bei der Umgebungsvariable JAVA_HOME müssen Sie die Windows-Installation von Java verwenden (/cgydrive/<<Windows-Laufwerk>>/<<Pfad zum JDK>>).

Noch ein kleiner Hinweis: Wenn Sie sich von entfernten Rechnern auf dem Cygwin-Server anmelden wollen, müssen Sie den ssh-Daemon installieren (s.u.).


Zur Superx-Homepage SuperX ist auch ein CampusSource-Projekt. Zur CampusSource-Homepage | Powered by FreeMarker Seite 31 / 277
Letzter Update: 18.08.2008
Impressum