glow – (some) glasses of wine

glow ist ein Python- Script, das der Verwaltung verschiedener Wine- Versionen dient. So lassen sich unterschiedliche Windows- Anwendungen mit der jeweils passenden Wine- Version ausführen, ohne ständig neue Pakete installieren und alte deinstallieren zu müssen.
Notwendig ist dies, da Wine keinen stabilen Zweig hat und mit neueren Versionen oftmals zuvor funktionierende Applikationen nicht mehr lauffähig sind.

Inhalt:

Installation

glow kann hier bezogen werden. Es ersetzt das Paket wine, bei der Installation mit einem Paketmanager wird dieser fragen, ob Wine entfernt werden soll, diese Frage kann getrost mit ja zu beantwortet werden, da das Wine- Verzeichnis .wine dabei erhalten bleibt.

Installation von Wine- Paketen

glow wird komplett über das Terminal bedient. Da es alle Wine- Versionen verwaltet, müssen diese über glow installiert werden. Verschiedene Wine- Versionen sind im Deb- Archiv von winehq.org zu finden. Nachdem dort eine Version heruntergeladen wurde, kann diese mit folgendem Befehl installiert werden:

sudo glow -i DEB NAME

DEB ist dabei durch das jeweilige .deb- File zu ersetzen, also etwas „wine_0.9.13~winehq0~ubuntu~6.06-1_i386.deb“.
NAME wird durch den gewünschten Namen ersetzt, mit dem ihr diese Wine- Version in Zukunft aufrufen wollt, etwa „0.9.13oder „warcraft2.

glow entpackt nun das gewählte Installationspaket und legt Verknüpfungen an:

barabbas@queros:~$ sudo glow -i wine_0.9.13~winehq1~ubuntu~6.06-1_i386.deb warcraft2
[sudo] password for barabbas:
Die Datei 'wine_0.9.13~winehq1~ubuntu~6.06-1_i386.deb' wird entpackt ...
'wine_0.9.13~winehq1~ubuntu~6.06-1_i386.deb' wurde erfolgreich installiert
Aktiviere Wine- Version 'warcraft2'
Es wurden 53 Verknüpfungen neu erstellt

Die letzten beiden Meldungen besagen, dass die installierte Wine- Version aktiv gesetzt wurde (also zur Zeit immer diese Wine- Version ausgeführt würde) und gibt die Anzahl der Verknüpfungen an, die erstellt wurden. Die Anzahl der angelegten Verknüpfungen hängt von der Wine- Version ab und davon, ob schon zuvor andere Versionen installiert wurden. Später werden nur noch wenige neue Verknüpfungen angelegt.

Programm mit Wine starten

Wine kann nun ganz normal genutzt werden. Mit dem Befehl

wine warcraft2.exe

startet wine das Programm warcraft.exe.

Um nun das Programm warcraft.exe mit einer speziellen Wine- Version auszuführen, gibt es zwei Möglichkeiten:

glow -a warcraft2
wine warcaft.exe

Hier wird zuerst die Wine- Version warcraft2 aktiviert (in diesem Fall Version 0.9.13) und danach wine normal gestartet.
Folgende Variante setzt eine Wine- Version und startet ein Programm mit nur einem Befehl:

WINVER=warcraf2 glow warcraft.exe

Die Umgebungsvariabel WINVER wird dabei auf die gewünschte Wine- Version gesetzt. glow setzt nun diese Wine- Version und startet das gewünschte Programm (warcraft2.exe) mit wine.

Löschen einer Wine- Version

Um eine Wine- Version wieder zu entfernen, wird folgender Befehl benötigt:

glow -r VERSION

VERSION ist dabei durch die zu entfernende Wine- Version zu ersetzen. Da wir vorher die Version 0.9.13 warcraft2 genannt haben, wäre diese hier warcraft2.

barabbas@queros:~$ glow -r warcraft2
Die Wine Version 'warcraft2' wurde erfolgreich gelöscht

Weitere Befehle:

glow bietet eine Reihe weiterer Befehle, die hier kurz dargestellt werden sollen:

Alle installierten Wine- Versionen anzeigen

Folgender Befehl gibt die installierten Wine- Version aus:

glow -l

Die Ausgabe sieht dann wie folgt aus:

barabbas@queros:~$ glow -l
Folgende Wine- Versionen werden verwaltet:

1) warcraft2 *
2) 0.9.58
3) 0.9.57
4) 0.9.50
5) 0.9.49
6) 0.9.44
7) 0.9.43
8) 0.9.37
9) 0.9.33
10) 0.9.24
11) 0.9.20
12) 0.9.19
13) 0.9.16
14) 0.9.15
15) 0.9.14
16) 0.9.13

Insgesamt belegen alle Wine- Versionen 191M

Die mit * markierte Version ist die gerade aktiv gesetzte. Die meisten Versionen wurden hier nach der jeweiligen Wine- Version benannt, hätten aber auch jeden anderen Namen haben können.

Symlinks neu setzen

Für gewöhnlich sollte dieser Schritt nicht nötig sein, folgender Befehl veranlasst glow aber dazu, alle Symlinks einer Wine- Version neu zu setzen, auch wenn bereits ein Link vorhanden ist. Falls wine oder glow jedoch tatsächlich einmal fehlende Dateien melden sollte, ist dieser Befehl hilfreich:

sudo glow -f VERSION

VERSION wird wiedereinmal durch die entsprechende Version gesetzt, in unserem Beispiel also warcraft2. Die Ausgabe ähnelt der Ausgabe nach der Installation:

barabbas@queros:~$ sudo glow -f warcraft2
[sudo] password for barabbas:
Aktiviere Wine- Version 'warcraft2'
Es wurden 53 Verknüpfungen neu erstellt

Symlinks einer Version entfernen

Dieser Befehl entfernt alle Symlinks einer Wine- Version. Er sollte nur eingesetzt werden, wenn der Benutzer genau weiß, was er tut, da dadurch alle Wine- Versionen unbrauchbar werden.

sudo glow -u VERSION

Wine- Version direkt aus dem Netz laden und installieren

Eine sehr komfortable Funktion von glow bietet es an, Wine- Versionen direkt aus dem Netz zu installieren. Der Benutzer spart sich so die Suche und den Download einer Version, da glow beides automatisch durchführt:
Zuerst lassen wir uns die verfügbaren Versionen anzeigen:

glow -s

Die Ausgabe sieht dann so aus:

barabbas@queros:~$ glow -s
Folgende Versionen sind als Download verfügbar:

0.9.58 0.9.57 0.9.56 0.9.55 0.9.54 0.9.53 0.9.52
0.9.51 0.9.50 0.9.49 0.9.48 0.9.47 0.9.46 0.9.45
0.9.44 0.9.43 0.9.42 0.9.41 0.9.40 0.9.39 0.9.38
0.9.37 0.9.36 0.9.35 0.9.34 0.9.33 0.9.32 0.9.31
0.9.30 0.9.29 0.9.28 0.9.27 0.9.26 0.9.25 0.9.24
0.9.23 0.9.22 0.9.21 0.9.20 0.9.19 0.9.18 0.9.17
0.9.16 0.9.15 0.9.14 0.9.13 0.9.12

Alle hier genannten Versionen können dann mit folgendem Befehl installiert werden:

sudo glow -d VERSION NAME

Die Syntax entspricht der der Installation eines lokalen Paketes.
VERSION wird durch eine Version aus der obigen Liste ersetzt,
NAME ist wieder der gewünschte Name einer Version, also z.B. „warcraft1“.

barabbas@queros:~$ sudo glow -d 0.9.20 warcraft1
--14:50:11-- http://wine.budgetdedicated.com/archive/ubuntu/dapper/wine_0.9.20~winehq0~ubuntu~6.06-1_i386.deb
=> `/home/barabbas/.glow/wine_versions/0.9.20.deb'
Auflösen des Hostnamen »wine.budgetdedicated.com«.... 88.159.206.7, 81.171.111.184, 81.171.111.184
Verbindungsaufbau zu wine.budgetdedicated.com|88.159.206.7|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 8.896.888 (8.5M) [application/x-debian-package]

100%[====================================>] 8.896.888 1.83M/s ETA 00:00
14:50:16 (1.68 MB/s) - »/home/barabbas/.glow/wine_versions/0.9.20.deb« gespeichert [8896888/8896888]

Die Datei '/home/barabbas/.glow/wine_versions/0.9.20.deb' wird entpackt ...
'/home/barabbas/.glow/wine_versions/0.9.20.deb' wurde erfolgreich installiert
Aktiviere Wine- Version '0.9.20'
Es wurden 3 Verknüpfungen neu erstellt
Entferne das Installationspaket '0.9.20.deb'

Hier wird nun zuerst das gewählte Paket heruntergeladen. Dieses wird dann installiert und aktiviert. Danach wird das Paket wieder gelöscht. Die installierte Wine- Version ist jetzt wie gewohnt nutzbar.

Kompression aktivieren

Ein weiteres besonderes Feature von glow ist die Kompression nicht genutzter Wine- Versionen. Dieses spart bis zu 40 MB pro Version und führt zu nur einer minimalen Verlangsamung bei der Umschaltung zwischen verschiedenen Versionen.

barabbas@queros:~$ glow –compress-on
Komprimiere 'warcraft2'...
'warcraft2' wurde komprimiert
Komprimiere 'warcraft1'...
'warcraft1' wurde komprimiert

Zum System

Hier soll kurz die Arbeitsweise von glow erörtert werden.
Das Paket
glow ist so konfiguriert, dass es mit Wine konfligiert. Dies ist notwendig, da glow alle Wine- Dateien durch Symlinks ersetzt. Es können zwar auch vorhandene Dateien gelöscht werden, um den Benutzer aber nicht im Unklaren darüber zu lassen, was mit den Wine- Dateien in den Systemordnern geschieht, wurde diese Konflikt eingerichtet.

Wird nun über glow ein Wine- Paket installiert, wird dieses in das Verzeichnis „~/glow/wine_versionsentpackt. Danach erstellt glow einen Link „active_wineim selben Verzeichnis, der auf das entpackte Wine- Paket verweist. Dieser Link dient einer deutlichen Effektivitätssteigerung beim Switchen unterschiedlicher Wine- Versionen, da jeweils nur dieser Link auf die entsprechende Version umgelegt wird. Das Umschalten geht dadurch sehr viel schneller von statten und schont die Festplatte, da nicht hunderte von Symlinks immer neu angelegt werden müssen.

Die Symlinks in den Systemverzeichnissen werden nur einmal bei der Installation eines Wine- Paketes gesetzt bzw. überprüft. Sie verweisen jeweils auf den Link „active_wineim „.glow“- Verzeichnis. Ist bereits ein Wine- Paket gelinkt, müssen nur noch die Dateien neu gelinkt werden, die in der bereits installierten Version noch nicht vorhanden waren – oftmals ist das nicht ein einziger Link.

Ein weiterer „Tweak“ in glow ist das Aussparen bestimmter Verzeichnisse, die Wine immer anlegt: Anstatt jede einzelne Datei in diesem Verzeichnis zu linken, linkt glow gleich die ganzen Verzeichnisse und spart damit bei einigen Wine- Versionen gut 700 Links! Von dieser Optimierung abgesehen ist glow prinzipiell für jedes Paket einsetzbar und ließe sich mit wenigen Handgriffen auch für die Verwaltung anderer Software einsetzen.