Linux NetMag #3
Titel: Wine: Installation und Setup
URL: http://www.linuxnetmag.de/de/issue3/m3wine1.html

Wine
WineDie Installation von Wine hat sich mittlerweile stark vereinfacht, da es nun auch vorkompilierte Versionen und sogar rpms gibt. Allerdings sind die so erhältlichen Versionen zumeist einige Wochen älter als der neueste Sourcecode. Und das ist besonders ärgerlich, da Wine mit jedem Versionssprung meistens auch einen großen Entwicklungsschub erlebt.

Deshalb erklären wir hier nicht, wie man die vorkompilierten Versionen installiert (da gäbe es auch nicht viel zu erklären), sondern wir bemühen uns, eine Wine-Version aus dem Quellcode zu erzeugen.

Also zunächst müssen wir von Download http://www.winehq.com/ die neueste Wine-Version herunterladen. Hierfür sollte man einige Zeit einplanen. Selbst mit ISDN kann der Download 20 Minuten dauern. Wir haben für diesen Text die Version wine-990815 benutzt.

Nach dem Entpacken des Programms nach /tmp

>> tar zxvf wine-990815.tgz -C /tmp

begeben wir uns in das neu generierte Verzeichnis und führen dort ein

>> make depend && make

aus.
Leider kompilierte wine auf unserem System nicht fehlerlos. Stattdessen brach es beim Kompilieren bei der Datei windows/dinput.c mit einem Fehler ab. Diese Datei ist  für die Joystickunterstützung unter Wine zuständig. Der Fehler könnte nun daher kommen, daß unser Kernel keine Joystickunterstützung besitzt, oder einfach nur, weil dieser Programmteil fehlerhaft ist. Schließlich ist Wine auch noch im Alpha-Stadium. Wenn bei Ihnen der selbe Fehler auftritt, Sie aber auf den Joystick unter Wine ruhig verzichten können (Unreal spielt sich mit Maus sowieso besser), dann hilft es, wenn Sie den betreffenden Teil im Sourcecode auskommentieren. Suchen Sie die entsprechende Stelle in der Datei, und ändern Sie diese entsprechend dem unteren Beispiel.
 

Datei /tmp/wine-990815/windows/dinput.c
static void joy_polldev(JoystickAImpl *This) {
    struct timeval tv;
    fd_set readfds;
    struct js_event;/* jse;*/

    if (This->joyfd==-1)
 return;
    while (1) {
 memset(&tv,0,sizeof(tv));
 FD_ZERO(&readfds);FD_SET(This->joyfd,&readfds);
 if (1>select(This->joyfd+1,&readfds,NULL,NULL,&tv))
     return;
 /* we have one event, so we can read 
 if (sizeof(jse)!=read(This->joyfd,&jse,sizeof(jse))) {
     return;
 }
 TRACE("js_event: type 0x%x, number %d, value %d\n",
jse.type,jse.number,jse.value);
 if (jse.type & JS_EVENT_BUTTON) {
     GEN_EVENT(DIJOFS_BUTTON(jse.number),
jse.value?0x80:0x00,jse.time,evsequence++);
     This->js.rgbButtons[jse.number] = jse.value?0x80:0x00;
 }
 if (jse.type & JS_EVENT_AXIS) {
     switch (jse.number) {
     case 0:
  GEN_EVENT(jse.number*4,jse.value,jse.time,evsequence++);
  This->js.lX = map_axis(jse.value);
  break;
     case 1:
  GEN_EVENT(jse.number*4,jse.value,jse.time,evsequence++);
  This->js.lY = map_axis(jse.value);
  break;
     case 2:
  GEN_EVENT(jse.number*4,jse.value,jse.time,evsequence++);
  This->js.lZ = map_axis(jse.value);
  break;
     default:
  FIXME("more then 3 axes (%d) not handled!\n",jse.number);
  break;
     }
 }*/
    }
}


 

<--Hier stand vorher "struct js_event jse;"
 
 
 
 
 
 
 

<-- Hier wurde das Ende des Kommentars weggenommen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

<-- Hier hört jetzt der Kommentar auf
 

Nach einem erneuten

>> make

sollte Wine nun durchkompilieren.

Danach können wir den gesamten Quellcode mit Binärdatei als root nach /usr/local/ kopieren, vorausgesetzt, wir haben dort genügend Platz, denn das gesamte Verzeichnis benötigt stolze 230 MB.

>> su

Passwort eingeben

>> cp -a /tmp/wine-990815/ /usr/local

[falls Sie nicht genügend Speicherplatz haben, können Sie das Kopieren auch weglassen und aus dem tmp-Verzeichnis heraus Wine installieren]

Wir gehen nun ins neue Verzeichnis

>> cd /usr/local/wine-990815/

und installieren das Paket mit

>> make install

Jetzt muß Wine noch an das System angepaßt werden, dafür gibt es mittlerweile ein grafisches Frontend. Dieses starten wir mit

>> /usr/local/wine-990815/tools/wineconf.tcl

Wine-Konfiguration

Wählen Sie den Button "Auto-generate a new configuration file". Daraufhin fragt Sie das System nach einigen Hardwaredaten, z.B. ob bestimmte CD-Laufwerke auch als CD-Brenner genutzt werden können. Danach installiert das Programm die Konfigurationsdatei wine.conf nach /usr/local/etc/ . Nur leider bricht hier das Programm beim Generieren der Konfigurationsdatei immer mit einer Fehlermeldung ab.

Wir behelfen uns daher mit dem Programm wineinstall

>> /usr/local/wine-990815/tools/wineinstall

welches nun allersdings ohne grafische Oberfläche die Konfigurationsdatei erzeugt.
[Dies ist nur eine Notlösung, da wineconf hier nicht funktioniert.  Falls wineconf.tcl bei Ihnen ohne Probleme läuft, müssen Sie diesen Schritt nicht durchführen!]

Somit haben wir nun auch eine Datei /usr/local/etc/wine.conf . Die dortige Datei ist die systemweite Konfigurationsdatei. Es empfiehlt sich aber eine eigene im Homeverzeichnis namens .winerc anzulegen, die dann an die eigenen Bedürfnisse angepaßt werden kann. Diese Datei überschreibt dann die Einstellungen ins /usr/local/etc/wine.conf .

Als normaler Benutzer (nicht mehr als root) kopieren wir nun die Daten ins Homeverzeichnis:

>> cp /usr/local/etc/wine.conf ~/.winerc

Danach starten wir winconf.tcl erneut (/usr/local/wine-990815/tools/wineconf.tcl und wählen nun den Knopf
"Use existing config file:" und wählen in dem rechts daneben befindlichem Menü den Menüpunkt "~/.winerc".
Danach erscheint folgendes Konfigurationsfenster:

Konfiguration

Hier kann man unter anderem einstellen, unter welchen Laufwerksbuchstaben die einzelnen Festplatten erreichbar sein sollen.
Es empfiehlt sich, ein Laufwerk für das Linuxverzeichnis /tmp/ anzulegen (in der Grafik Laufwerk j:\), um dann unter "Wine section:" bei "Temp" dieses Laufwerk anzugeben. So gibt es später keinerlei Probleme mit den Schreibrechten.

Nun geht es ans Ausprobieren:
Um ein Windows-Programm in der Emulation starten zu können, muß das Programm auch unter Linux von einem Verzeichnis erreichbar sein. Deshalb müssen die Windows-Partitionen gemountet werden (Normalerweise mountet man diese nach /mnt/cdos/ , /mnt/ddos/ ...).

Um nun die Emulation zu benutzen, startet man einfach Wine und gibt dahinter den Pfad zum Windows-Programm an. Für Wordpad heißt der Befehl beispielsweise

>> wine /mnt/cdos/Programme/wordpad.exe

Screenshot

Mittlerweile ist die Konfiguration durch grafische Frontends sehr vereinfacht worden. Nur leider gibt es beim Installieren des Source-Codes hier und da immer noch Stolperfallen. Es handelt sich ja schließlich auch um eine Alpha-Version. Trotzdem läßt sich mit Wine schon vernünftig arbeiten.
Und auch spielen. Neben Unreal und StarCraft funktionieren eine Menge weitere Spiele unter Wine, welches nun schon seit längerem direct3d und 3Dfx unterstützt (vorausgesetzt, man hat eine 3Dfx-Karte). Allerdings gestaltet sich hierbei die Konfiguration wesentlich komplizierter, so daß wir hier nicht darauf eingehen können. Nähere Informationen zur Installation von bestimmten Spielen unter Wine findet man unter "Wine Success Stories" http://www.linuxgames.com/wine/  .

Links