Notizen
Gliederung
CygWIN
—
Unix-Anwendungen unter MS-Windows?!
Holm Sieber <sieber@prudsys.de>
These
CygWIN ist ein komfortabler Weg,
mit MS-Windows zu arbeiten und
dabei nicht auf die Vorzüge von Unix
verzichten zu müssen.
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
Warum brauche ich CygWIN?
Ich muss mit MS-Windows arbeiten, vermisse aber die vielen nützlichen Unix-Anwendungen.
Ich will ein X11R6-Anwendung unter MS-Windows nutzen, die kommerziellen X-Server sind mir aber zu teuer.
CygWIN ist (unter anderem) ein Port von less, tail, wc etc. und eine Portierung von XFree nach MS-Windows.
Geschichte von CygWIN
1995 beginnt Steve Chamberlain, Entwickler bei der Firma Cygnus, eine Zwischenschicht zwischen den Unix- und Windows-Systemaufrufen zu programmieren.
1999 kauft Red Hat Cygnus und man entscheidet sich, das Projekt konsequent weiter zu führen.
Heute: Red Hat Cygwin sind vor allem drei Leute: Christopher Faylor (manager), Corinna Vinschen (senior engineer), DJ Delorie (senior engineer) (http://cygwin.com/who.html)
Darüber hinaus entwickeln weltweit viele freie Entwickler an CygWIN mit.
Was ist CygWIN?
siehe http://www.redhat.com/software/cygwin/
Unix Shell-Umgebung
GNU Entwicklungswerkzeuge portiert nach Windows
cygwin.dll bildet Unix-Systemaufrufe unter Windows ab
CygWIN ist in gewisser Weise das Gegenstück zu WINE.
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
CygWIN-Installation
Unter www.cygwin.com kann das Setup-Programm direkt aufgerufen und ausgeführt werden (Setup)
Die Installationsdaten liegen
auf einem FTP- oder WWW-Server im Netz
oder lokal als TGZ- oder TAR.BZ2-Dateien
Das Setupprogramm unterstützt Updates
CygWIN wird standardmäßig unter C:\cygwin installiert; das ist danach das CygWIN-Root-Verzeichnis
Informationen zum Setup werden unter /etc/setup/ als komprimierte Textdateien abgelegt.
Nach der Installation: die Bash
Start der Bash durch
CygWIN-Anwendungen
(supported, Auszug)
Shells: ash, bash, tcsh, zsh
Fileutilities
Entwicklungswerkzeuge: gcc, gdb, make, etc.
Datenbanken: postgresql, db2
teTeX
vim, emacs, mc
ghostscript, Image Magick
Perl, Phyton, GAWK
exim, fetchmail, pine, procmail, ssmtp, mutt
apache, irc, rsync, openssh, ncftp, lynx, wget
XFree86
CygWIN-Anwedungen
(unsupported)
http://www.cygwin.com/ported.html
http://www.hirmke.de/software/develop/gnuwin32/cygwin/porters/Hirmke_Michael/GNUWin32-links.html
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
Die cygwin.dll
eigentlich cygwin1.dll
liegt unter C:\cygwin\bin\
umfangreiche Implementierung von POSIX- und anderen Unix-Standards (nicht vollständig)
häufig genügt die DLL plus das mit CygWIN übersetzte Programm, um es auch ohne installiertes CygWIN auf einem Windows-Rechner ausführen zu können
cygwin1.dll ist quasi das, was die libc unter Unix ist
CygWIN Features
symbolische Links (werden ähnlich Windows-Links als .lnk-Datei abgebildet)
mounten von Windows-Laufwerken und Verzeichnissen
Abbildung von NTFS-Rechten auf Unix-Rechte (mehr schlecht als recht)
Devices: /dev/stx, /dev/scdx, /dev/clipboard
CygWIN-Einschränkungen
siehe http://www.cygwin.com/faq/faq_3.html#SEC23
Threads,
IPC-Funktionen (shared memory, semaphores, etc.)
FIFO (Filesystem-Pipes)
u. a.
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
Anwendungen:
Bash und die Kommandozeile
Start der Bash durch
Aufruf von cygwin.bat:
@echo off
C:
chdir C:\cygwin\bin
bash --login –i
Die Bash läuft in einem Kommandozeilenfenster, entsprechend können Farben und Font verändert werden.
Konfiguration wie gehabt über /etc/profile, ~/.bash_profile und ~/.bashrc
gemountete Verzeichnisse werden in der Registry gespeichert
Anwendungen:
iimage, ein Skript von Ronald Schmidt
iimage ist ein Skript von Ronald Schmidt, um HTML-Indexseiten zu Digital-Fotos zu erzeugen
genutzt werden dabei u. a. Image Magick und metacam
Image Magick: verwende die native Portierung nach Windows
metacam: aus den Quellen unter CygWIN problemlos übersetzt
Skript läuft ohne Änderung unter Linux und CygWIN
Anwendungen:
X-Server unter Windows
komplette Portierung (ca. 110 MB alle Pakete)
wird nur ein X-Terminal benötigt, genügen cygwin1.dll, cygz.dll und ca. 2 MB aus dem XFree86 Paket
ordentliche Unterstützung des deutschen Tastaturlayouts (Danke Alexander Gottwald)
Beispiel:
C:\cygwin\usr\X11R6\bin\XWin.exe
-nowinkill -unixkill -query zipoli –nodecoration
Beenden mit Strg-Alt-Backspace
ohne Windows-Fenster-Rahmen inkl. Taskleiste
Anwendungen:
Unix-Mail mobil mit CygWIN
Problem:
Nutzung von E-Mail als „Road-Warrior“ im Offline-Betrieb,
alle Windows-Mailprogramme sind nicht leistungsfähig genug
Lösung:
Nutzung von mutt als E-Mail-Client unter CygWIN
Da mutt nicht für den Offline-Betrieb geeignet ist, muss ein MTA benutzt werden, der Queuing unterstützt: exim.
abholen der Mails mittels fetchmail
fetchmail und exim laufen als NT-Services
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
Highlights: cygpath
Cygpath ist ein Kommandozeilen-Tool, dass den Windows-Pfad zu einem CygWIN-Pfad liefert.
Das Tool kann z. B. eingesetzt werden, wenn Windows-Programme aus CygWIN heraus aufgerufen werden müssen.
Beispiel: Start von GVIM (zur Nutzung unter mutt)
#!/bin/sh
F="`cygpath -wa $1`"
/cygdrive/c/Programme/Vim/vim60/gvim.exe –u \
"C:\\Programme\\Vim\\_vimrc" $F
Highlights: cygrunsrv
Cygrunsrv dient dazu, CygWIN-Programme als NT-Service einzurichten und zu starten.
Achtung: NT-Services laufen unter der Nutzerkennung „SYSTEM“, evtl. müssen die Zugriffsrechte passend eingestellt werden oder der NT-Service muss so geändert werden, dass er unter einem anderen Account läuft.
Achtung: CygWIN-Dämonen müssen so gestartet werden, dass sie sich nicht vom Terminal trennen!
Beispiele:
cygrunsrv -I exim -p /bin/exim-4.10-2.exe -a "-bdf -q15m"
cygrunsrv -I fetch -p /bin/fetchmail -a "-N"
Highlights: /proc
Zugriff auf Prozess- und andere Informationen:
$ ls -la /proc
insgesamt 4
dr-xr-xr-x    8 Jeder    Jeder           0 26. Nov 15:02 .
drwxrwxrwx   10 Administ Kein         4096 15. Nov 11:46 ..
dr-xr-xr-x   14 hsi      Hauptben        0 26. Nov 13:17 1432
dr-xr-xr-x   14 hsi      Hauptben        0 26. Nov 14:53 2140
dr-xr-xr-x   14 hsi      Hauptben        0 26. Nov 15:02 2372
dr-xr-xr-x   14 hsi      Hauptben        0 21. Nov 22:32 596
dr-xr-xr-x   14 hsi      Hauptben        0 21. Nov 20:38 848
dr-xr-xr-x   14 hsi      Hauptben        0 21. Nov 22:32 864
dr-xr-xr-x   14 hsi      Hauptben        0 21. Nov 20:38 884
-r--r--r--    1 Jeder    Jeder           0 26. Nov 15:02 loadavg
-r--r--r--    1 Jeder    Jeder           0 26. Nov 15:02 meminfo
dr-xr-xr-x    9 Jeder    Jeder           0 26. Nov 15:02 registry
-r--r--r--    1 Jeder    Jeder           0 26. Nov 15:02 stat
-r--r--r--    1 Jeder    Jeder           0 26. Nov 15:02 uptime
-r--r--r--    1 Jeder    Jeder           0 26. Nov 15:02 version
über /proc/registry Zugriff auf die Windows-Registry
Highlights: /dev
Zugriff auf Geräte, Abbildung der POSIX-Namen:
/dev/null, /dev/zero, /dev/tty, /dev/ttyX, /dev/ptmX, /dev/comX, /dev/windows, /dev/random, /dev/urandom
/dev/stX, /dev/fdX, /dev/scdX
siehe http://www.cygwin.com/cygwin-ug-net/using-specialnames.html
Beispiel: /dev/clipboard und c2c
#!/bin/sh
sed -e 's/^@$/^M^@/' > /dev/clipboard
Highlights: ntsec
Ntsec bildet NTFS-Rechte auf Unix-Rechte ab.
Das Verfahren funktioniert mehr schlecht als recht, da NTFS auf ACLs basiert, die Unix standardmäßig nicht kennt.
Anders herum können auf diese Weise unter CygWIN Unix-Rechte eingestellt und benutzt werden.
Ntsec muss aktiviert werden, in dem es in der CYGWIN-Umgebungsvariablen gesetzt wird.
Highlights: CygWIN-Environment
Konfiguration des CygWIN-Verhaltens in der Umgebungsvariablen CYGWIN
Beispiel:
CYGWIN="binmode ntsec tty nosmbntsec„
Einstellung am besten als globale Windows-Umgebungsvariable (Systemsteuerung/System/Erweitert)
siehe auch http://www.cygwin.com/cygwin-ug-net/setup-env.html und http://www.cygwin.com/cygwin-ug-net/using-cygwinenv.html
Highlights: Drucken unter CygWIN
CygWIN bringt ein simples lpr-Kommando mit
Druckername muss identisch dem Windows-Druckernamen sein
Beispiel:
export PRINTER="HP 4100 Gang 3. Etage PCL 6"
Agenda
Was ist CygWIN
Installation und Arbeiten mit CygWIN
CygWIN-Features und Einschränkungen
Anwendungs-Beispiele
CygWIN-Highlights
Links
CygWIN-Dokumentationen
Home Page: http://www.cygwin.com/
FAQ: http://cygwin.com/faq/
User-Guide: http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html
API-Reference: http://cygwin.com/cygwin-api/cygwin-api.html
und natürlich www.google.de J
CygWIN-Mailinglisten
Übersicht: http://cygwin.com/lists.html
für CygWIN-Nutzer empfohlen:
cygwin
cygwin-xfree
cygwin-announce
für Entwickler:
cygwin-patches
cygwin-apps
cygwin-developers
Abschlussthesen
CygWIN ist der beste Weg, Windows- und Unix-Anwendungen nebeneinander zu benutzen, vor allem, wenn primär Windows-Anwendungen benutzt werden.
CygWIN ist für die regelmäßige gleichzeitige Nutzung von Windows- und Unix-Anwendungen besser geeignet als VMware, WINE oder ähnliche Lösungen.
Bei einer Entscheidung für die eine oder andere Lösung ist zunächst immer konkret nach den zu nutzenden Anwendungen zu fragen. Sind alle zu nutzenden Unix-Anwendungen unter CygWIN vorhanden oder existieren native Portierungen nach Windows, ist CygWIN unter Windows 2000 oder Windows XP die erste Wahl.