Da Windows-Programme naturgemäß für Windows entwickelt wurden, sind Probleme bei der Ausführung unter Linux nicht auszuschließen. Manchmal rühren sie auch von einer falschen Handhabung des Benutzers von Wine her. Viele dieser Probleme lassen sich allerdings lösen. In diesem Artikel werden einige von ihnen behandelt.
Möglicherweise nimmt Wine eine zu niedrige Größe des Videospeichers an. In dem Fall sollte man die Größe des Videospeichers korrigieren.
Statt mit Wine die Windows-Version von DosBox zu starten, sollte man dessen Linux-Version verwenden.
Statt mit Wine die Windows-Version von ScummVM zu starten, sollte man dessen Linux-Version verwenden.
Wenn ein Windows-Programm seine eigenen Dateien nicht findet (z.B. die Mods von Half-Life) oder Einstellungen nicht speichert, liegt das oft daran, dass es auf falsche Weise gestartet wurde. Wine muss das Arbeitsverzeichnis des Programms kennen, in dem die jeweilige EXE-Datei liegt, doch es interpretiert standardmäßig dasjenige Verzeichnis als Arbeitsverzeichnis, aus dem heraus Wine gestartet wird. In der Regel ist dies das persönliche Verzeichnis. Um das korrekte Arbeitsverzeichnis anzugeben, gibt es drei Möglichkeiten.
Falls die folgende oder eine sehr ähnliche Fehlermeldung beim Programmstart im Terminal angezeigt wird ...
p11-kit: couldn't load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so
... genügt es in 32-Bit-Systemen, wenn man nachträglich die Pakete gnome-keyring und p11-kit installiert. [1] In 64-Bit-Systemen in Ubuntu 12.04 LTS muss die 32-Bit-Version von gnome-keyring auf eine bestimmte Weise installiert werden, wie im Folgenden erklärt.
Der folgende Abschnitt ist nur für Benutzer von 64-Bit-Versionen von Ubuntu 12.04 oder entsprechenden Derivaten zu befolgen.
Fremdpakete können das System gefährden.
Anmerkung: Diese Anleitung verwendet ein nicht in den offiziellen Paketquellen enthaltenes Installationsskript.
Zunächst wird im Terminal [3] ein Skript aus einer Fremdquelle heruntergeladen und als ausführbare Datei in das passende Systemverzeichnis verschoben:
wget https://raw.github.com/spaetzlecode/getlibs/master/getlibs sudo chown root:root getlibs sudo chmod +x getlibs sudo mv -n getlibs /usr/local/bin
Dann wird die 32-Bit-Version von gnome-keyring heruntergeladen und statt mit APT mithilfe des Skripts installiert:
sudo apt-get update apt-get download gnome-keyring:i386 sudo mkdir /usr/lib32 sudo /usr/local/bin/getlibs -i gnome-keyring*_i386.deb
In Ubuntu 14.04 LTS kann es sein, dass das Verzeichnis /usr/lib32 nicht existiert.
Weil die Datei in ein Verzeichnis installiert wurde, wo sie von Programmen nicht gesucht wird, muss schließlich im richtigen Verzeichnis eine Verknüpfung zur Datei angelegt werden:
sudo mkdir -p /usr/lib/i386-linux-gnu/pkcs11/ sudo ln -s /usr/lib32/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so
Oft ist PulseAudio die Ursache für Audio-Probleme. Um eine Wine-Anwendung ohne PulseAudio zu starten, kann man es temporär stoppen, indem man ein Skript für den Start der Wine-Anwendung schreibt. Zuvor muss allerdings der automatische Neustart von PulseAudio in der Datei /etc/pulse/client.conf deaktiviert werden. Dazu ändert man in einem Editor [5] mit Root-Rechten [4] den Eintrag
; autospawn = yes
folgendermaßen abändern. Das fehlende Semikolon beachten!
autospawn = no
Anschließend lässt sich folgendes Skript zum Starten verwenden, welches natürlich ausführbar [6] gemacht werden muss. Falls man ein anderes Wineprefix verwendet, muss dieses natürlich im Skript statt $HOME/.wine eingesetzt werden.
1 2 3 4 5 6 7 8 9 10 | #!/bin/sh # Deactivate PulseAudio if audio problems occur: pulseaudio -k # Start wine application: env WINEPREFIX="$HOME/.wine" wine start /Unix "/Pfad/zum/Programm.exe" # Reactivate PulseAudio: pulseaudio -D |
Benötigt ein Programm eine bestimmte .dll, hat man zwei Möglichkeiten: Entweder man besorgt sich diese .dll von einer bestehenden Windows-Installation aus dem Verzeichnis Windows\system32 oder man benutzt Dienste wie dll-files . Man sollte sich aber darüber im Klaren sein, dass es nicht legal ist, wenn man eine native Windows-DLL nutzt, ohne eine Lizenz für Windows erworben zu haben. In beiden Fällen muss die gefundene .dll in den Ordner drive_c/windows/system32 im Wine-Verzeichnis platziert werden, das im persönlichen Verzeichnis zu finden ist. Danach öffnet man im Terminal [3] das Programm
winecfg
und trägt unter dem Reiter "Bibliotheken" die DLL als "Native" (also nicht die "Builtin"-Version von Wine) ein. Allgemeine Informationen zu einem solchen Überschreiben von Bibliotheken finden sich im Abschnitt Konfiguration.
Wird eine sich im Laufwerk befindende CD beim Programmstart nicht gefunden, kann das zwei Ursachen haben.
Die Lösbare: Das CD-Laufwerk ist nicht als solches eingetragen, sondern als Festplatte. Wie diese Einstellung geändert werden kann, wird im Abschnitt Konfiguration beschrieben.
Schon schlechter sieht es aus, wenn das Programm kopiergeschützt ist. Kann man den Kopierschutz nicht umgehen (was in Deutschland nicht erlaubt ist), gibt es keine Lösung, solange der Kopierschutz nicht von Wine unterstützt wird. Man beachte: Ab und an wird gerade bei älterer Software durch einen offiziellen Patch des Entwicklers der Kopierschutz entfernt oder ausgeschaltet.
Manche Wine-Versionen lassen das Starten eines Windows-Programms per Mausklick aus Sicherheitsgründen nur dann zu, wenn es als ausführbar [6] markiert ist. Im Programmstarter von Wine selbst ist dann dem Wine-Befehl ein sogenannter cautious-launcher
vorangestellt. Versucht man trotz fehlendem Ausführungsrecht, ein Windows-Programm mit der Maus zu starten, erhält man folgende Fehlermeldung:
"The file '/Pfad/zum/Programm.exe' is not marked as executable. If this was downloaded or copied from an untrusted source, it may be dangerous to run. For more details, read about the executable bit."
Möchte man also Windows-Programme per Mausklick starten, markiert man entweder die jeweiligen Programme als ausführbar oder deaktiviert dieses Verhalten auf folgende Weise: Mit Root-Rechten [4] bearbeitet man die Datei /usr/share/applications/wine.desktop in einem Texteditor [5] und tauscht die Zeile
Exec=cautious-launcher %f wine start /unix
gegen folgende aus und speichert die Datei:
Exec=wine start /unix %f
Beim Drucken erscheint folgende Meldung:
err:commdlg:PrintDlgA GetPrinterDriverA failed, ..., fix your config for printer ...
Wenn man den genannten Drucker aus der Datei ~/.wine/system.reg entfernt, öffnet sich der Druckdialog wieder und man kann dann zumindest in eine Datei drucken.
Bei manchen Windows-Spielen kann es passieren, dass Text nicht mehr angezeigt wird ("verschwindet") und damit unlesbar ist. Dann kann man versuchen, am Ende der Datei ~/.wine/user.reg folgenden Text anzuhängen:
[Software\\Wine\\X11 Driver] 1210627404 "ClientSideWithRender"="N"
Allerdings scheint dieser provisorische Lösung nicht immer frei von Nebenwirkungen zu sein und sollte nicht als Universallösung verwendet werden.
In diesem Zusammenhang kann es nützlich sein (z.B. bei Texteditoren unter Wine), die Schriftdarstellung bzw. die Kantenglättung anzupassen. Obwohl sich die erforderlichen Einträge auch manuell vornehmen ließen, erleichtert folgendes Skript die Einstellung.
Falls man ein Wineprefix verwendet, muss dieses natürlich im Skript statt $HOME/.wine eingesetzt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #!/bin/sh # Quick and dirty script for configuring wine font smoothing # # Author: Igor Tarasov <tarasov.igor@gmail.com> WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.wine} DIALOG=whiptail if [ ! -x "`which "$WINE"`" ] then echo "Wine was not found. Is it really installed? ($WINE)" exit 1 fi if [ ! -x "`which "$DIALOG"`" ] then DIALOG=dialog fi TMPFILE=`mktemp` || exit 1 $DIALOG --menu \ "Please select font smoothing mode for wine programs:" 13 51\ 4\ 1 "Smoothing disabled"\ 2 "Grayscale smoothing"\ 3 "Subpixel smoothing (ClearType) RGB"\ 4 "Subpixel smoothing (ClearType) BGR" 2> $TMPFILE STATUS=$? ANSWER=`cat $TMPFILE` if [ $STATUS != 0 ] then rm -f $TMPFILE exit 1 fi MODE=0 # 0 = disabled; 2 = enabled TYPE=0 # 1 = regular; 2 = subpixel ORIENTATION=1 # 0 = BGR; 1 = RGB case $ANSWER in 1) # disable ;; 2) # enable MODE=2 TYPE=1 ;; 3) # enable cleartype rgb MODE=2 TYPE=2 ;; 4) # enable cleartype bgr MODE=2 TYPE=2 ORIENTATION=0 ;; *) rm -f $TMPFILE echo Unexpected option: $ANSWER exit 1 ;; esac echo "REGEDIT4 [HKEY_CURRENT_USER\Control Panel\Desktop] \"FontSmoothing\"=\"$MODE\" \"FontSmoothingOrientation\"=dword:0000000$ORIENTATION \"FontSmoothingType\"=dword:0000000$TYPE \"FontSmoothingGamma\"=dword:00000578" > $TMPFILE echo -n "Updating configuration... " $WINE regedit $TMPFILE 2> /dev/null rm -f $TMPFILE echo ok |
Beispielsweise als ~/wine_fontsmoothing.sh speichern, ausführbar machen [6] und wie folgt im Terminal starten [3]:
./wine_fontsmoothing.sh
Prinzipiell stehen über die Tasten 1 bis 4 vier Möglichkeiten zur Auswahl:
1 "Smoothing disabled" (keine Kantenglättung)
2 "Grayscale smoothing" (Kantenglättung mit Graustufen)
3 "Subpixel smoothing (ClearType) RGB" (Kantenglättung für TFT- bzw. LCD-Bildschirme)
4 "Subpixel smoothing (ClearType) BGR" (Kantenglättung für TFT- bzw. LCD-Bildschirme)
Das Skript lässt sich auch mehrmals aufrufen, bis die eigene Wunscheinstellung gefunden ist. Die Änderung wirkt sich allerdings nicht auf bereits laufende Programme aus.
Manche Programme oder ihre Installationsprogramme benötigen die native gdiplus.dll. Am einfachsten lässt sie sich mit winetricks nachinstallieren:
winetricks gdiplus
Der Standard-Webbrowser öffnet nun eine Seite, von der man die Datei NDP1.0sp2-KB830348-X86-Enu.exe herunterlädt. Diese muss ins Verzeichnis ~/.cache/winetricks/gdiplus/ kopiert werden, das nach Eingabe des obigen Befehls bereits existieren sollte. Zuletzt wendet man den obigen Befehl ein zweites Mal an, um den Prozess abzuschließen.
Dieser Fehler kann sich auf verschiedene Weisen äußern: Entweder zeigt das Windows-Programm eine ähnlich lautende Fehlermeldung an, oder Wine gibt folgende Meldung aus, wenn das Programm im Terminal gestartet wurde:
err:d3d:resource_init Out of adapter memory
Möglicherweise nimmt Wine eine zu niedrige Größe des Videospeichers an. In dem Fall sollte man die Größe des Videospeichers korrigieren.
Obwohl Wine die Größe des Videospeichers der Grafikkarte automatisch ermittelt, kann es sich in Ausnahmefällen irren. Dies kann dann problematisch sein, wenn ein Windows-Programm diese Information abfragt, fälschlicherweise einen zu niedrigen Wert mitgeteilt bekommt und dann so verfährt, als stehe zu wenig Videospeicher zur Verfügung. Um dem Problem zu begegnen, kann man in der Wine-Registry einen festen Wert hinterlegen.
Zunächst muss man die tatsächliche Größe des Videospeichers in Megabytes kennen. Wenn man sich unsicher ist, kann man ihn mithilfe des folgenden Befehls ermitteln: [3]
lspci -v -s `lspci | grep VGA | awk {'print $1'}` | egrep -o ", prefetchable\) [size=[[:digit:]]+" | egrep -o [[:digit:]]+
Nun öffnet man den Wine-Registrierungseditor:
regedit
Hier markiert man den Schlüssel "HKEY_CURRENT_USER / Software / Wine / Direct3D". Wenn der Schlüssel Direct3D nicht existiert, legt man ihn mit einem Rechtsklick auf den Schlüssel "Wine" und der Auswahl von "Neu" und "Schlüssel" an. Mit einem auf diesen Schlüssel und der Auswahl von "Neu" und "Zeichenfolge" legt man eine neue Zeichenfolge namens VideoMemorySize an. Nach einem auf diesen neuen Eintrag und der Auswahl von "Ändern..." gibt man die Videospeichergröße in Megabytes an, z.B. 512, und bestätigt mit "OK". Der Editor muss nun geschlossen werden.
Beispiel: Wird mit Alt + eine Stempelquelle festgelegt, scheint das zu funktionieren. Will man dann aber das festgelegte Ziel mit einem linken Mausklick einfügen, erscheint die Meldung: „Konnte den Kopierstempel nicht benutzen, weil der zu klonende Bereich nicht definiert wurde (Alttaste + Klicken zum Festlegen des Quellpunkts).“ Hier hilft es Benutzern von Unity möglicherweise, in CCSM in der Kategorie "Fensterverwaltung" das Modul "Fenster verschieben" zu öffnen und dort die Maus-Belegung für "Fensterverschiebung initiieren" von "<Alt>Button1" auf z.B. "<Ctrl>Button1" zu ändern.
An einer Stelle muss die EULA von Microsoft bestätigt werden. Dazu mit der TAB-Taste zu <OK> springen und der Leertaste oder der Returntaste bestätigen.
Diese Revision wurde am 1. Februar 2017 20:25 von noisefloor erstellt.