Wine Kompilieren
Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade. |
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: Informationen zur Installation aus den Paketquellen und zur Konfiguration stehen im Artikel Wine. |
Warum gibt es keine aktuellen Wine-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 Konsoleexport
iert, 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
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 beispielsweisemake -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
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 xrandr 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 lautxrandr
.--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
- Um eventuelle Probleme zu vermeiden, dies wieder Rückgängig machen, bevor man einen neuen/anderen Treiber installiert oder es Debian-Updates in ia32-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
- ↑ #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
- ↑ Wine FAQ über root-Rechte