Wine – kompiliert, nicht gerührt

März 29, 2010 um 7:18 am | Veröffentlicht in GNU/Linux, KDE, Ubuntuusers | 8 Kommentare

Anmerkung: Die folgenden Bilder wurden alle durch GIMP gejagt und eine optimale Farbpalette erstellt (sprich: es werden nur die Farben in der Palette gespeichert die auch im Bild vorkommen). Dadurch habe ich den Speicherplatzverbrauch von ca. 500 – 600 kB auf 146,7 kB reduziert. Trotz ihrer Größe sollten sie also recht schnell laden.

Für viele Umsteiger die sich noch nicht an die Alternativprogramme gewöhnt haben die ihnen Linux bietet ist Wine eine tolle Sache um ihre Windows-Programme weiterhin nutzen zu können. Oftmals wird selbst in Linux-Literatur die Abkürzung Wine für WINdows Emulator gehalten. Das ist falsch. Wine steht für Wine Is Not an Emulator. Zum besseren Verständnis: Wine ist nur eine Schnittstelle. Die auszuführenden Programme geben Befehle an das Betriebssystem ab welche von Wine abgefangen werden. Diese Befehle werden dann an DLLs weitergereicht welche Wine bereits mitbringt. Dabei ist Wine aber nicht einfach nur eine Kopie der Windows-API sondern eine oftmals wesentlich schnellere und mit weniger Fehlern behaftete Neuimplementierung. Da Windows bekanntlich Closed Source ist sind die Wine-Programmierer auf Reverse Engineering und Try-and-Error angewiesen. Dadurch entsteht das Problem, dass die neuesten Funktionen der Windows-API erst eine geraume Zeit nach dem erscheinen der entsprechenden Windows-Version mit Wine verfügbar sind. Auch muss das Wine-Team mit den zahlreichen Bugs in der Windows-API zurechtkommen welche für sie doppelte Arbeit bedeuten: Zum einen müssen sie eine Version schreiben die ohne diese Fehler arbeitet und brauchen dann noch eine Fallback-Version die für Programme welche mit internen Workarounds arbeiten das fehlerhafte Verhalten von Windows nachbildet. Manche Funktionen der API werden auch erst entdeckt wenn sie gebraucht werden. Dann müssen die Entwickler diese unbekannte Funktion erstmal untersuchen, eine eigene Version schreiben und testen.

Selbstverständlich laufen nicht alle Programme unter Wine fehlerfrei oder überhaupt (dieses Standardverhalten von Windows ist also sehr gut nachgebildet🙂 ). Die aktuelle Wine-Version unterstützt Windows 2.0 bis Windows 7 und alles dazwischen inklusive Server-Versionen. Das ist bei weitem mehr als die aktuell unterstützten Windows-Versionen gemeinsam unterstützen (abgesehen davon dass der Kompatibilitätsmodus unter Windows für mich noch nie funktioniert hat). Ich selbst habe zur Zeit folgende Programme mit Wine auf meinem Laptop installiert (welche auch funktionieren):

  • Might and Magic 6 und 7 (Win95-Modus)
  • Die Siedler von Catan (die alte Version) (WinXP-Modus)
  • DVDShrink (WinXP-Modus)
  • Ambulant Player (SMIL-Player; der Quellcode der Linux-Version wollte bei mir nicht kompilieren; sollte aber in Karmic dabei sein) (WinXP-Modus)
  • Page2Stage (Programm zum Drehbuch schreiben)

Die folgende Anleitung ist sehr allgemein gehalten. Begriffe welche innerhalb zweier <spitzer Klammern> geschrieben sind müssen durch Nutzer spezifische Begriffe ersetzt werden. <Nutzer> muss also durch den Namen des Nutzers im System ersetzt werden, <Programmname> meint den Namen des Programmes.

Wine-Programme verwalten

Natürlich können die verschiedenen Programme (wie von älteren Windows-Versionen bekannt) Versionskonflikte mit den selbst mitgebrachten DLL-Dateien auslösen. Um das zu vermeiden kann man für jedes Programm ein eigenes Wine-Verzeichnis erstellen. Ein eigenes Verzeichnis entspricht einer frischen Windows-Installation. Der Vorteil liegt auf der Hand: Wenn das Programm nicht mehr gebraucht wird kann man einfach das Verzeichnis löschen und ist damit jeden Müll wieder los den das Programm in Form von Daten oder in der Registry zurückgelassen hat. Ich verwende dafür ein Verzeichnis mit dem Namen: "Wine" welches ich direkt in meinem Home-Verzeichnis erstellt habe. Darin erstelle ich einen Ordner mit dem Namen des Programmes und mache dann einen Eintrag in der versteckten Datei ".bash_aliases" im Home-Verzeichnis. Sollte diese Datei noch nicht existieren kann sie so angelegt werden:

  • einen beliebigen Text-Editor öffnen
  • folgende Zeile als erste einfügen:
    #!/bin/bash
  • Datei speichern

Das Auslesen der Datei .bash_aliases muss in der .bashrc zuvor noch freigeschaltet werden. Dazu öffnet man die versteckte Datei ".bashrc" im Home-Verzeichnis mit einem beliebigen Text-Editor und fügt folgende Zeilen ein:
if [ -f ~/.bash_aliases ]; then
~/.bash_aliases
fi

Ab dem nächsten geöffneten Terminalfenster sind die Einträge in der .bash_aliases verfügbar.

In die Datei .bash_aliases fügt man nun Einträge nach folgendem Muster ein:
alias wine<Programmname>=’WINEPREFIX="/Pfad/zum/Wine/Verzeichnis/<Programmname>" wine‘
Das Programm alias erstellt Aliase für Befehle oder ganze Befehlsketten welche der Nutzer dann nicht immer wieder eingeben muss sonder über das Alias aufrufen kann. <Programmname> muss natürlich durch den jeweiligen Namen des Programmes ersetzt werden.

Sobald das erledigt ist kann man mit einem frischen Terminal-Fenster (Änderungen in .bashrc oder der davon aufgerufenen Dateien müssen immer erst neu geladen werden) in das Verzeichnis wechseln in welchem die setup.exe liegt und mit
wine<Programmname> setup.exe
selbige ausführen. Dann folgt man einfach den Anleitungen des Installers bis das Programm installiert ist.

Mit
wine<Programmname> winecfg
kann man Einstellungen an der jeweiligen Wine-Installation vornehmen (z.B. eine virtuelle Arbeitsfläche, Auflösung, Windows-Modus, verwendete DLLs, …).

Konfigurationsdialog von Wine

Ich empfehle sehr einen virtuellen Bildschirm emulieren zu lassen, da ein Programm im Vollbildmodus bei einem Absturz immer noch Tastatur und Maus gefangen halten kann und somit ein Hardreset notwendig würde. Außerdem kann man so bequem zu anderen Programmen wechseln ohne dieses erst beenden zu müssen.

Wine-Programme ins Programmmenü übernehmen

Sollte Wine nicht von selbst einen Eintrag im Programmmenü hinterlegt haben muss man dies manuell machen. Da ich keine große Erfahrung mit anderen Desktop-Umgebungen habe werde ich hier nur die nötigen Schritte beschreiben um einen Eintrag im K-Menü von KDE zu schreiben. Solltest du eine gute Beschreibung für GNOME/XFCE/IceWM/… haben so füge ich diese gerne hier hinzu.

Anleitung für KDE

Mit einem Rechtsklick auf das K-Menü (der blaue Knopf mit den weißen ‚K‘ in der linken unteren Ecke) öffnest du ein Kontextmenü und wählst "Menü-Editor" aus. Im nun erscheinenden Fenster kannst du Menüeinträge verschieben, umbenennen, löschen, anlegen, neue Untermenüs erstellen und entfernen. Beginnen wir mit dem Untermenü. Falls du deine Wine-Programme nicht in den vorhandenen Untermenüs einfügen willst kannst du ja ein Untermenü "Wine" erstellen (falls es ein solches nicht bereits gibt). In dem ausgewählten Untermenü erstellst du ein neues Element.

K-Menü Editor mit Eintrag Catan
Ein Menüeintrag

Der Inhalt des Elements ist normalerweise leer. Oben siehst du ein ausgefülltes Beispiel. Unter Name und Beschreibung kannst du eingeben um welches Programm es sich handelt und wofür es da ist. Der wirklich wichtige Teil ist unter Befehl zu finden. Beginnend mit env folgt 1:1 der Text den wir als Alias angegeben haben. Danach wird unter doppelten Anführungszeichen der Pfad zur Ausführbaren Datei mit der das Programm gestartet werden kann angegeben. Wenn du nichts anderes angegeben hast lautet er auf
C:\Programme\<Programmordner>\<Programm>.exe
!Achtung!: Englisch sprachige Programme erzeugen nicht einen Ordner "Programme" sonder "Program Files".

Das Bild habe ich aus einer *.ico-Datei im Installationsverzeichnis von Catan erzeugt. Dazu einfach die *.ico-Datei mit GIMP öffnen und im PNG-Format wieder abspeichern. Mit einem Klick auf das Feld (wo bei mir das Bild ist) öffnet sich ein Dialog welcher mehrere Symbole (per Quellen) installierter Programme anbietet. Unter "Sonstige Symbole" -> "Auswählen …" kommt man in einen Dateiauswahldialog mit welchem man in das Verzeichnis navigiert in dem das Programm installiert ist und dort die PNG-Datei auswählen kann. Mögliche Dateiformate sind PNG, XPM, SVG und SVGZ.

Der Haken vor "Startrückmeldung aktivieren" erzeugt ein nebem dem Cursor hüpfendes Icon beim Programmstart🙂

K-Menü Editor - Erweitert
Erweiterte Optionen

Doch ist das nur die halbe Geschichte. Unter dem Reiter Erweitert muss noch angegeben in welchem Ordner wir eigentlich arbeiten wollen. Dazu wird einfach eine Adresse eingegeben die sich folgenderweise zusammensetzt:

  • Pfad zum Wine-Verzeichnis des Programmes. In einer Standard-Wine-Installation ohne separate Wine-Verzeichnisse ist das /home/<nutzer>/.wine. In meinem Beispiel habe ich /home/<Nutzer>/Wine angegeben.
  • Dann folgt der Ordner in welchem das individuelle Wine-Verzeichnis gefunden werden kann.
  • Daraufhin stehen ein paar Ordner aus der Standardstruktur eines Wine-Verzeichnisses: dosdevices/c:/Programme/. Solltest du bei der Installation irgendetwas geändert haben musst du es natürlich entsprechend anpassen. !Achtung!: Englisch sprachige Programme erzeugen nicht einen Ordner "Programme" sonder "Program Files".
  • Zu guter Letzt wird noch der Ordner in dem die ausführbare Datei liegt angegeben.
    Anmerkung: Wenn du dir nicht sicher bist, kannst du die Ordnerstruktur einfach mit Dolphin oder Konqueror durchsehen. Wenn du im Ordner mit der ausführbaren Datei angekommen bist kopiere die Adresse in das Feld Arbeitsordner. In der Wine-Struktur heißt der Ordner, der hier mit c: angegeben ist drive_c. Für den Eintrag im K-Menü musst du das entsprechend umwandeln.

Programm ausführen

Nachdem du die Einträge erstellt hast kannst du das Programm unkompliziert aufrufen.

Im K-Menü unter Wine und Programme:

Catan im K-Menü

Oder per alt+F2 (KRunner):

KRunner mit Catan

Und schon läuft das (Windows-)Programm wie eine native Anwendung unter Linux:

Catan unter Wine

Creative Commons License
This work by Stefan Ohri is licensed under a Creative Commons Attribution-ShareAlike 3.0 Austria License

=-=-=-=-=
Powered by Blogilo

8 Kommentare »

RSS feed for comments on this post. TrackBack URI

  1. Toller Artikel,

    Willst du den noch weiterführen – weil ja in der Überschrift „kompiliert“ steht?😉

    Allerdings ist es doch heute bei Wine so, dass es für jedes Programm automatisch Prefixes anlegt werden, wenn nötig und man daher die nicht mehr von Hand erzeugen sollte. Das sieht man auch in der „Fehlermeldung“, die angezeigt wird, wenn man „wineprefixcreate“ eingibt. Ist das daher nicht ein wenig zu viel Aufwand? Wenn man es ganz sauber haben will, sollte man lieber sein altes .wine umbenennen und dann mittels winecfg (z.B.) Wine ein neues .wine anlegen lassen und da das Programm reininstallieren. Das wäre dann ein komplett sauberes Windows.

    Gruß
    chimp-champ

    • Hallo chimp-champ!

      Nein, an eine Weiterführung habe ich konkret noch nicht gedacht. Das halte ich mir offen. Mit dem Titel wollte ich auf James Bonds „geschüttelt nicht gerührt“ anspielen und verweise mit „kompiliert“ darauf, dass dieser Wine nicht ein Getränk sondern eine Software ist.
      Deine Methode kannte ich noch nicht, werde sie mir aber mal ansehen. Die von mir vorgestellte Methode verwende ich seit über zwei Jahren und sie funktioniert für mich sehr gut.

      • Bzgl. Überschrift: Achso, verstehe.

        Bzgl. Prefixes:
        Komisch, denn wineprefixcreate gibt folgendes aus:
        „Note: wineprefixcreate is deprecated and shouldn’t be needed anymore.
        WINEPREFIX creation and updates now happen automatically when needed.“

        ———-

        Was ich noch empfehlen kann, ist, wenn man mehrere Wine-Versionen braucht, die einfach in ein bestimmtes Verzeichnis zu kompilieren (z.B. nach /opt/), so können alle Versionen zusammen das gleiche ~/.wine nutzen und sind brav ohne „Zusatzzeugs“ wie PoL getrennt. Dazu muss man lediglich bei ./configure noch ein „–prefix=/opt/BLA“ anhängen & dann dem Wine-Howto folgen. Ich betreibe z.B. auf diese Weise wine 1.0.1 (stable), 1.1.33 und aktuell 1.1.41 (devel) problemlos nebeneinander.

  2. Hi!

    Schöner Artikel, werde ich mir merken🙂

    Das hättest du aber auch einfacher haben können😛 http://www.be-jo.net/de/2009/02/programmvorstellung-pioneers-2/

    Lg Benni

    • Hallöchen!

      Stimmt, ich habe vergessen Pioneers als freie Alternative zu Catan zu erwähnen. Neben der Musik und den (meiner Meinung nach) passenden Kommentaren der KI-Gegner hat Catan Pioneers aber noch ein paar Sachen vorraus. Trotzdem ist auch Pioneers ein gutes Spiel.


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Erstelle eine kostenlose Website oder Blog – auf WordPress.com.
Entries und Kommentare feeds.

%d Bloggern gefällt das: