Wine est un instrument merveilleux pour tous ceux qui ne veulent plus
de Windows, mais ne peuvent pas non plus se passer entièrement d’une
poignée d’applications dont les équivalents sous OS libre sont
décevants. Ainsi, pour les maniaques de la copie audio parfaite,
Exact Audio Copy est largement supérieur à Rubyripper (moins efficace
et dont le développement a cessé) ou à Morituri (sans aucune
souplesse en ce qui concerne les tags). Cependant, Wine a un
inconvénient majeur : il ouvre la machine aux menaces spécifiques à
Windows. Sur les forums, on lit souvent des réponses à ce problème du
type : « Mais comme on ne lance pas Wine en root, on ne compromet pas
sa machine. » Certes, mais on expose toutes les données auxquelles
l’utilisateur de l’application a accès, ce qui est très suffisant
pour faire peur…
Les méthodes de sécurisation les plus simples (comme winetricks
sandbox, qui supprime des lecteurs avec winecfg) n’étant pas très
efficaces, mieux vaut se tourner vers la virtualisation. Cependant,
outre que cette solution est lourde, EAC ne fonctionnera pas
correctement sur un Wine de machine virtuelle Virtualbox, à cause du
pilote virtualisé du CD-ROM.
Sous FreeBSD, il suffit de faire tourner Wine dans une jail. Mais
sous Linux, la mise en place de container LXC était une opération
lourde, assez décourageante pour un besoin aussi basique.
La donne a cependant changé avec l’arrivée de Docker : il devient en
effet assez facile de créer un container pour faire tourner une
application graphique sous Wine.
Voici comment je m’y suis pris.
Fichier Dockerfile pour créer le container :
FROM ubuntu:
ENV DEBIAN\_FRONTEND noninteractive
RUN apt-get update -y
RUN apt-get install -y python-software-properties\
software-properties-common
RUN add-apt-repository -y ppa:ubuntu-wine/ppa
RUN dpkg --add-architecture i386
RUN apt-get update -y
RUN apt-get install -y wine1.7 winetricks
RUN apt-get purge -y python-software-properties
RUN apt-get autoclean -y
USER utilisateur
ENV HOME /home/utilisateur
CMD /usr/bin/wine
Un petit coup de :
docker build utilisateur/wine.
Le container est construit. Reste qu’il ne faut pas y placer les
données, si on veut pouvoir le faire évoluer et se mettre à jour. Le
plus pratique pour pouvoir aussi échanger des fichiers entre l’hôte
et le container est de créer un dossier Wine sur l’hôte qu’on montera
comme home dans le container avec :
-v emplacement-dossier-Wine:/home
Il faut créer à l’intérieur un dossier au nom de l’utilisateur :
mkdir utilisateur
Pour rediriger le container vers la sesson X de l’hôte :
Il faut ensuite créer un environnement wine pour 32 bits, ce
qu’on peut faire avec l’instruction dans le shell ouvert dans le
container :
WINEARCH=win32 winecfg
On procède ensuite, toujours dans le shell à l’installation normale
d’une application wine. On l’essaie ensuite en la lançant depuis le
shell. Si tout marche correctement, on peut ensuite se fabriquer un
lanceur depuis l’hôte, de type :