Wine/Problembehebung

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Starten von Programmen

  3. Ein Terminal öffnen

  4. Root-Rechte

  5. Einen Editor öffnen

  6. Rechte für Dateien und Ordner ändern

Inhaltsverzeichnis
  1. Anwendung startet nicht unter x64
  2. Ausführung sehr langsam
    1. 3D-Grafik
    2. DosBox
    3. ScummVM
  3. Dateien nicht gefunden oder gespeichert
  4. p11-kit und der GNOME-Keyring
  5. Kein Klang in manchen Programmen
  6. Eine .dll fehlt
  7. CD wird nicht gefunden
  8. Datei als nicht ausführbar markiert
  9. Druckdialog öffnet sich nicht
  10. Schrift ist Zeichensalat
  11. Schrift unlesbar
  12. gdiplus.dll fehlt
  13. Zu wenig Videospeicher oder Memory
  14. Größe des Videospeichers korrigieren
  15. Photoshop-Werkzeuge reagieren nicht auf di...
  16. Installation im Terminal, EULA akzeptieren...
  17. Links

Wine/logo.png 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.

Anwendung startet nicht unter x64

Aufgrund von Bugs in Wine oder generellen Inkompatibiltäten kann es nötig sein, die Anwendung in einem 32-bit Wineprefix zu starten. Solch eine Umgebung kann man z.B. folgendermaßen erzeugen (siehe auch die offizielle FAQ 🇬🇧):

env WINEPREFIX="$HOME/.wine/32bit-Umgebung" WINEARCH=win32 winecfg 

Beim Starten einer Anwendung muss die WINEARCH-Variable nicht angegeben werden (also nur wie üblich der WINEPREFIX), denn nach der einmaligen Erzeugung ist die neue Wine-Umgebung auf 32-bit festgelegt.

Ausführung sehr langsam

3D-Grafik

Möglicherweise nimmt Wine eine zu niedrige Größe des Videospeichers an. In dem Fall sollte man die Größe des Videospeichers korrigieren.

DosBox

Statt mit Wine die Windows-Version von DOSBox zu starten, sollte man dessen Linux-Version verwenden.

ScummVM

Statt mit Wine die Windows-Version von ScummVM zu starten, sollte man dessen Linux-Version verwenden.

Dateien nicht gefunden oder gespeichert

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.

p11-kit und der GNOME-Keyring

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 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 

Kein Klang in manchen Programmen

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

Eine .dll fehlt

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.

CD wird nicht gefunden

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.

Datei als nicht ausführbar markiert

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

Druckdialog öffnet sich nicht

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.

Schrift ist Zeichensalat

Ausländische Windows Anwendungen können eine Textcodierung in der Heimatsprache voraussetzen. Zum Beispiel benötigen viele japanische Anwendungen Shift_JIS um korrekt dargestellt zu werden. Folgende Befehle erzeugen eine lokale Shift_JIS-Sprachkonfiguration:

1
2
3
export LOCPATH=$HOME/.wine/locale-ja/
mkdir -p $LOCPATH
localedef -c -f SHIFT_JIS -i ja_JP $LOCPATH/ja_JP.SJIS

Nach Erzeugung der Sprachkonfiguration kann dann die Windows-Anwendung mit dieser folgendermaßen gestartet werden:

1
env LOCPATH=$HOME/.wine/locale-ja/ LANG=ja_JP.SJIS wine start /Unix "/PFAD/ZUM/PROGRAMM.exe"

Schrift unlesbar

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 diese 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:

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.

gdiplus.dll fehlt

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.

Zu wenig Videospeicher oder Memory

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.

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 rechte Maustaste auf den Schlüssel "Wine" und der Auswahl von "Neu" und "Schlüssel" an. Mit einem rechte Maustaste auf diesen Schlüssel und der Auswahl von "Neu" und "Zeichenfolge" legt man eine neue Zeichenfolge namens VideoMemorySize an. Nach einem rechte Maustaste 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.

Photoshop-Werkzeuge reagieren nicht auf die ALT-Taste

Beispiel: Wird mit Alt + linke Maustaste 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.

Installation im Terminal, EULA akzeptieren

An einer Stelle muss die EULA von Microsoft bestätigt werden. Dazu mit der Tab ⇆ -Taste zu "OK" springen und der          -Taste oder der -Taste bestätigen.