[[PageOutline]] = Wine-Anwendungen unter LTSP = Diese Seite dokumentiert das Verfahren, mit dem wir Wine-Anwendungen für unsere LTSP Thin Clients verfügbar machen. == Problem == Wine-Anwendungen sind generell für Multi-User-Systeme schlecht geeignet, da das Programm eine komplette Windows-Umgebung im Homeverzeichnis des jeweiligen Users emuliert. Diese müsste in sämtlichen Homeverzeichnissen aller User vorhanden sein, damit jeder das Programm nutzen kann. Das ist aus Platz- und Wartungsgründen inpraktikabel. Eine gemeinsame Umgebung zwischen mehreren Nutzern zu teilen ist aufgrund der Eigenheiten von Wine schwierig, das stets davon ausgeht, die komplette Windows-Umgebung "für sich" zu haben (z.B. Schreibrechte in der kompletten Umgebung). == Lösungsprinzip == Bau hat für die Linuxmusterclients ein Prinzip entwickelt, wie eine Wine-Installation von mehreren Nutzern (nacheinander) genutzt werden kann. Dabei gibt es eine Wine-Umgebung mit dem installierten Programm an einem lokalen Speicherort auf dem Rechner. Startet ein Nutzer ein Skript, wird die komplette Umgebung per `rsync` in ein zweites Verzeichnis kopiert und per `chown` dem Nutzer übereignet. Danach wird die Umgebungsvariable `WINE_PREFIX` passend gesetzt und das Programm gestartet. == Problem für LTSP == Das oben skizzierte Verfahren funktioniert nur, wenn nur ein Nutzer zu einer Zeit das Programm verwendet. Bei unserem Client-Server-Setup sollen aber mehrere Nutzer zugleich das selbe Wine-Programm auf dem Server laufen lassen können. === Mögliche Lösungen === ==== Wine als local application ==== Laufen die Wine-Programme nicht auf dem Server, sondern lokal auf dem Client, kann jeder Nutzer für die Dauer der Programmausführung seine persönliche Wine-Umgebung haben. Dazu müsste die Wine-Umgebung in der Client-Chroot installiert werden. Dann könnte man oben beschriebenes Skript genauso einsetzen. Ein Problem tritt allerdings auf, wenn an einem Client zugleich zwei Personen angemeldet sind, was durchaus möglich ist. Das Problem können wir aber vorerst ignorieren. ==== Wine als Serverapplikation mit lokalem Verzeichnis ==== Wine könnte weiterhin auf dem Server laufen, wenn dort jeder Benutzer sein persönliches lokales Wine-Verzeichnis bekommt (etwa unter /wine/). Platz genug sollte auf den Platten sein, zumal die Umgebungen nach Verwendung auch wieder gelöscht werden könnten. ==== Wine als Serverapplikation mit Umgebung im Homeverzeichnis ==== Eine weitere Möglichkeit wäre schließlich, die Wine-Umgebung einmal in das Homeverzeichnis des Nutzers zu kopieren und dann dort zu lassen. Dazu würde entsprechender Platz auf dem NFS-Server für `/home` benötigt. Der klare Vorteil wäre, dass Einstellungen, die die Nutzer vorgenommen haben, von Programmaufruf zu Programmaufruf überleben. Nach einer Änderung der Umgebung (z.B. Programmupdate) müssten die Nutzerumgebungen dann aber gezielt überschrieben werden. == Lösung == Skripte zur Umsetzung der Lösung "Wine als Serverapplikation mit lokalem Verzeichnis" finden sich unter source:keplertools/scripts/trunk/wine-support/. === Installation: === - Die Datei `sudoers` muss auf den LTSP-Servern unter passendem Namen ins Verzeichnis `/etc/sudoers.d/` kopiert werden - Die Skripte `wine.sh` und `winestarter.sh` müssen nach `/usr/bin/` kopiert oder dort verlinkt werden. === Aufruf === Der Aufruf geschieht dann über {{{ winestarter.sh }}} Beispiel:: {{{ winestarter.sh braintutor "C:/Program Files (x86)/Brain Innovation/BrainVoyager Brain Tutor/BrainVoyager Brain Tutor.exe" }}} Das Skript erwartet die Vorlagen für die wine-Umgebungen unter `/usr/share/wineprefixes/`. Es erzeugt temporäre Wine-Umgebungen unter `/tmp/wineprefixes///` Damit das Programm über das Menü gestartet werden kann, muss eine entsprechende `*.desktop`-Datei in `/usr/share/applications/` erzeugt werden. Beispiel:: {{{ [Desktop Entry] Name=Brain Tutor Comment=Brain Voyager Brain Tutor Exec=winestarter.sh braintutor "C:/Program Files (x86)/Brain Innovation/BrainVoyager Brain Tutor/BrainVoyager Brain Tutor.exe" Terminal=false Type=Application Icon=BrainTutor Categories=Wine-Programs-Accessories; }}} === Icons === Icons können ohne Pfadangabe und ohne Endung in den `*.desktop`-Dateien stehen, wenn sie sich im Standardverzeichnis befinden: `/usr/share/applications/`. Aus den `*.exe`-Dateien können Icons mittels des Tools `cabextract` extrahiert werden. ---- [[CC_BY_NC_SA(Dr. R. Kupper)]]