Wine Kompilieren

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Softwareentwicklung und paketierung ‹ Wine Kompilieren


Baustelle.png Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade.


Getestet.png Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.




Infos Vorab

Als Beispielplattform dient ein Stable/Squeeze amd64 mit purem ALSA und beispielhaft installiert werden Wine-1.4 sowie libpng-1.5.10.

Hinweis.png Hinweis: Informationen zur Installation aus den Paketquellen und zur Konfiguration stehen im Artikel Wine.


Warum gibt es keine aktuellen Debianpackage.pngWine-Pakete?

Der Hauptgrund dürfte sein, daß das Debian-Projekt libpng12 verwendet, während der Rest der Welt bei mindestens libpng14 angekommen ist - schon seit Jahren. Da libpng14 (oder neuer) nicht mit libpng12 kompatibel ist, werden Programme, welche die libpng14 (oder neuer) verwenden, unter einem auf Debian kompilierten Wine, nicht völlig korrekt Funktionieren. Man kann diese aber auch nicht einfach installieren, sonst würden die gegen libpng12 kompilierten Programme des Debian-Repos nicht mehr Funktionieren[1]. Diese Bredouille soll hier umgangen werden, indem libpng15 an einem separaten, vom Grundsystem unabhängigen, Ort installiert wird.


Wohin installieren?

Auch für Wine selbst ist dies eine gute Idee, so kann man mehrere Versionen parallel installiert haben. Im Beispiel wird dafür /usr/local/wine-1.4 verwendet, so ist sie auch noch vom Subsystem /usr/local getrennt.
Dorthin wird auch die spezielle Bibliothek libpng15 installiert. Dies hat zur Folge, daß man diese für jede Wine-Version extra installieren muß. Da dies aber weniger als 1 MB ist, fällt es nicht sehr ins Gewicht und hat den Vorteil, daß die unterschiedlichen Wine-Versionen auch gegen unterschiedliche libpng-Versionen gebaut werden können.
Das Installationsverzeichnis (--prefix) wird im Beispiel durch eine Variable namens $prefix ersetzt. Wird diese, vor der Installation, in der entsprechenden Konsole exportiert, kann man die Meisten der unten genannten Befehlseingaben einfach kopieren und einfügen.
Wird der entsprechende Benutzer der Gruppe staff zugeordnet, muß er für die eigentliche Installation keine root-Rechte mehr erlangen.


Welche Version installieren?

Egal, ob man auf einem 32bit- oder einem 64bit-Debian unterwegs ist, es wird in den meisten Fällen Wine in der 32bit-Version kompiliert. Muß/will man eine Software für 64bit-Windows' ausführen, ist ein Blick auf die entsprechende Wiki-Seite hilfreich.
Im Beispiel wird Wine-1.4 verwendet, da es die zum Zeitpunkt des Schreibens aktuellste stabile Version ist. Sollte man damit Probleme haben, wird stattdessen die jüngste Entwicklungsversion empfohlen.


Installieren

Vorbereitung

Kommandos zu den Infos Vorab
user@debian:~$  su -c "adduser $LOGNAME staff"
Die Gruppenzuweisung wird erst nach einer Neuanmeldung aktiv!


user@debian:~$  export prefix=/usr/local/wine-1.4


Pakete installieren

Warnung.png Nachfolgende Paketaufzählungen sind noch nicht vollständig, siehe zusätzlich Recommended Packages im Wine-Wiki.

root@debian:~#  aptitude install bison flex gawk gcc make sed wget \


Auf amd64-Plattformen zusätzlich:

root@debian:~#  aptitude install gcc-multilib gobjc-4.4-multilib ia32-libs-dev   \
   lib32asound2-dev lib32cr0 lib32bz2-dev lib32gcc1 lib32ffi5 lib32gmp3-dev     \
   lib32icu-dev lib32mudflap0 lib32ncurses5-dev lib32readline6-dev lib32v4l-dev \
   lib32z1-dev lib32vdpau1


libpng

Alle Plattformen:

user@debian:~$  
   cd /usr/local/src
   wget -O libpng-1.5.10.tar.bz2  \
      http://sourceforge.net/projects/libpng/files/libpng15/1.5.10/libpng-1.5.10.tar.bz2/download
   tar xvf libpng-1.5.10.tar.bz2
   cd libpng-1.5.10

Nur auf i686:

user@debian:~$  ./configure --prefix=$prefix

Nur auf amd64:

user@debian:~$  CFLAGS="-m32" ./configure --prefix=$prefix

Alle Plattformen:

user@debian:~$  
   make
   make install
Auf Mehrkernsystemen wird das Kompilieren beschleunigt, indem man dem make-Befehl mitteilt, er soll mehrere jobs parallel ausführen. Also beispielsweise make -j2 auf einem dualcore-Rechner.


Wine

Alle Plattformen:

user@debian:~$ 
   cd /usr/local/src/
   wget http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.4.tar.bz2
   tar xvf wine-1.4.tar.bz2 && cd wine-1.4
   LDFLAGS=-L$prefix/lib/ CPPFLAGS=-I$prefix/include/ ./configure --prefix=$prefix
   make
   make install


Nachbereitung

Damit auch alle Anwendungen, die Wine mitbringt, einfach gefunden werden und es diesbezüglich keine Fehler gibt, kann man den Pfad zu diesen der Umgebungsvariable $PATH hinzufügen:

user@debian:~$  export PATH=$prefix/bin:$PATH

Um mehrere Wine-Versionen zu verwalten, kann auch hier ein Link verwendet werden:

user@debian:~$  
   ln -s $prefix /usr/local/wine
   export PATH=/usr/local/wine/bin:$PATH


Damit Wine die libpng auch findet, muß dem Linker (ld) mitgeteilt werden, wohin diese installiert wurde:

user@debian:~$  export LD_LIBRARY_PATH=$prefix/lib/:$LD_LIBRARY_PATH
Bei späterer Verwendung, wenn die Variable $prefix nicht mehr gesetzt ist, muß hier der komplette Pfad angegeben werden.


Testlauf/Konfigurieren

Warnung.png Wine nie mit root-Rechten starten![2]

user@debian:~$  wine "C:\windows\system32\winecfg.exe"
Auf Anfrage Gecko herunterladen und installieren lassen.
http://www.winehq.org/site/docs/wineusr-guide/config-wine-main


Überreste Löschen
user@debian:~$  
   rm /usr/local/src/wine-1.4.tar.bz2
   rm /usr/local/src/libpng-1.5.10.tar.bz2
Ist natürlich nicht Notwendig und ist manchmal sogar besser, man hat einen unangetasteten Quellkode zur Verfügung. Kein make clean ist so gründlich wie Dieser.


Fehlerbehebung

Wenn etwas nicht funktioniert, dann erst mit der jüngsten Entwicklungsversion versuchen, bevor man um Hilfe fragt: http://www.winehq.org/announce/latest
Die Appdb gibt Auskunft ob und wie gut, ein Programm unter Wine läuft und hat auch oft Tipps zur Installation und Problemlösung: http://appdb.winehq.org/
Lässt sich ein Programm nicht installieren, ist es einen Versuch wert, es mit einem frischen WINEPREFIX zu versuchen.
Programme/Funktionen, welche auf früheren Wine-Versionen gingen, gehen nicht mehr:
Wird das selbe Wineprefix für die neue Version verwendet, hilft es manchmal, das entsprechende Programm neu zu installieren.
Herausfinden, welche Änderung im Kode dafür verantwortlich ist: http://wiki.winehq.org/RegressionTesting


Programmstart

In manchen Fällen, wenn ein Programm unter Wine nicht starten will, ist es hilfreich, zuvor in das Verzeichnis dessen .exe-Datei zu wechseln. Äußern tun sich jene Fälle meist mit einer Fehlermeldung, daß eine Datei nicht gefunden wurde. Im Gegensatz zum Testlauf in Nachbereitung sieht dies dann folgendermaßen aus:

user@debian:~$   cd $HOME/.wine/drive_c/windows/system32 && wine winecfg.exe


Anzeige zurücksetzen

Wenn Wine beendet, ohne daß es die Monitoreinstellungen zurücksetzt, kann oftmals der Normalzustand mittels Debianpackage.pngxrandr wieder hergestellt werden, ohne Neustart von Xorg. Es bietet sich an, dafür ein alias anzulegen und gut aufgehoben wäre auch dies in der .bashrc:

user@debian:~$  alias resetx='xrandr --output VGA1 --mode "1280x1024" --dpi 96'
--output: Ausgabegerätename laut xrandr.
--mode: Eine der zum Ausgabegerät aufgelisteten Bildschirmauflösungen.
--dpi: Dots per inch, Angabe laut Monitorhandbuch.
man xrandr liefert noch viele weitere Möglichkeiten.


Auf amd64 mit fglrx-Grafiktreiber

...welcher nicht aus den Debian-Repos stammt, überprüfen, ob /usr/lib32/libGL.so.1.2 ein Link auf fglrx-libGL.so.1.2 ist. Falls nicht, diese sichern und dafür den Link anlegen:

root@debian:~#  
   mv /usr/lib32/libGL.so.1.2 /usr/lib32/libGL.so.1.2.orig 
   ln -s /usr/lib32/fglrx/fglrx-libGL.so.1.2 /usr/lib32/libGL.so.1.2
Warnung.png Um eventuelle Probleme zu vermeiden, dies wieder Rückgängig machen, bevor man einen neuen/anderen Treiber installiert oder es Debian-Updates in Debianpackage.pngia32-libs-dev gibt.


Um Hilfe fragen

Wenn die obigen Punkte nicht weiterhelfen, sollte man, bevor man, im Forum oder Chat, um Hilfe fragt, ein paar Infos parat haben:

Die verwendete Version von Wine wine --version
Die Ausgabe, wenn man das Programm von der Konsole aus startet wine $programmname [OPTIONEN] 2>&1 | tee $Zieldateiname
Falls es einen Eintrag in der Appdb zum Problemprogramm gibt, den Link dorthin.

Wie immer gilt, je genauer die Fehlerbeschreibung ist, desto eher bekommt man brauchbare Hilfe.

Links und Referenzen

libpng-Download: http://sourceforge.net/projects/libpng/files/

Wine-Hauptquartier: http://www.winehq.org/
Wine-Download: http://ibiblio.org/pub/linux/system/emulators/wine/
Wine-git: http://source.winehq.org/git/wine.git/
Wine-IRC-Chat: irc://chat.freenode.net:6665/#winehq
Wine User Guide: http://ftp.winehq.org/pub/wine/docs/en/wineusr-guide.html
Wine-Appdb: http://appdb.winehq.org/
Wine FAQ: http://wiki.winehq.org/FAQ
PulseAudio: http://wiki.winehq.org/WineAndPulseaudio

USB
http://wiki.winehq.org/USB
http://forum.winehq.org/viewtopic.php?p=73192
http://forum.winehq.org/viewtopic.php?t=14200
http://www.winehq.org/pipermail/wine-devel/2007-May/056541.html


  1. #winehq über libpng12 und libpng14:
    <wine-k> it's pretty difficult to get a reasonably working wine in squeeze
    <wine-k> the dependencies just don't exist
    <wine-f> and i have to compile a dependencies from sources?
    <wine-k> that would be a good way to break your system
    -*- Autor does not understand... he is using debian stable (squeeze) AND has wine-1.4 working.
    <wine-k> Autor: try anything that uses windows' built in png decoding
    <wine-k> wine has used libpng14 for years, but squeeze is still on libpng12
    <wine-k> Autor: installing libpng14 will break your system
    <wine-k> (if it's in your library search path)
    <wine-k> squeeze also has alsa too old to be usable if you have pulseaudio
    <wine-k> and a bunch of other things i don't feel like remembering
    <wine-k> Autor: full dependency list of wine (for 64 bit debian) doesn't even exist in sid yet
    <wine-k> have to dip into experimental for one package (dpkg)
    <wine-k> 1.4 is not compatible with software written for 1.2
    <wine-k> and vice versa
  2. Wine FAQ über root-Rechte