Du libre, du code, des idées, du mélange d’ArraKISS…

De l’épice pour la pensée

Suite au billet précédent, j'ai quand même cherché à compiler compiz sur debian jessie. Et si, c'est possible, bien que la tâche ne soit pas aisée.

Déjà, voici les dépendances à installer. Il y en a un paquet, et je crains d'en avoir oublié :

libnotify-dev libglibmm-2.4-dev build-essential libxcomposite-dev libpng12-dev libsm-dev libxrandr-dev libxdamage-dev libxinerama-dev libstartup-notification0-dev libgconf2-dev libgl1-mesa-dev libglu1-mesa-dev libmetacity-dev librsvg2-dev libdbus-1-dev libdbus-glib-1-dev libgnome-desktop-dev  curl autoconf automake  libtool intltool libxslt1-dev xsltproc libwnck-dev python-dev python-pyrex libboost-dev libboost-serialization-dev cmake checkinstall lcov libwnck-3-dev


Déjà, il faut récupérer l'archive sur... le launchpad d'ubuntu (ça en dit long). Avec la toute dernière archive, la compilation ne passe pas. Je suis donc parti de la compiz-0.9.12.1.tar.bz2.

Une fois décompressée, on se déplace dedans puis on crée un dossier "build" dans lequel on se déplace pour entamer la compilation :

mkdir build
cd build
export COMPIZ_DEB_BUILD=1
cmake .. -DCMAKE_CXX_FLAGS="`pkg-config --cflags glibmm-2.4`"
make

Pour finir, on crée un paquet qui sera installé avec checkinstall :
sudo checkinstall

Et voilà. Vous pouvez lancer le gestionnaire d'options de compiz avec
ccsm
ou bien lancer compiz avec
compiz --replace ccp

Vous vous souvenez de compiz et ses effets délirants? Son cube, ses fenêtres qui ressemblent à de la gelée. Y a pas à dire, c'était marrant. Le projet ne semble cependant plus maintenu. Heureusement, avec un peu d'astuce, on peut le faire tourner sur une debian jessie. Et tant qu'à faire, on va essayer de faire les choses correctement.
Je dis ça parce que, lors de mes recherches sur le net pour installer compiz, j'ai vu du grand n'importe quoi. Alors on va mettre les choses au clair tout de suite : NON, les paquets ubuntu ne sont pas faits pour debian. Il n'y a rien de tel pour mettre en l'air son système.
Alors certes, ça va peut-être fonctionner pendant un temps, jusqu'à la prochaine mise à jour de sécurité où là, crak!

Bref, voilà le principe d'installation de compiz sous debian jessie.
La compilation des sources étant difficile à réaliser, et peu documentée, on va utiliser les derniers paquets debian en date. Compiz était encore disponible sous debian squeeze, qui est à ce jour la old-old-stable. Autant vous dire que ça va être la galère pour espérer une compatibilité des bibliothèques.
Qu'à cela ne tienne, on va utiliser les paquets de squeeze quand même. Mais pour ne rien casser, on va les mettre dans un chroot. Regardons ça ensemble, ça sera plus clair :

1. On commence par récupérer le système de debian squeeze minimum. Cela se fait avec debootstrap (paquet du même nom). Le chroot sera dans un dossier debception :
mkdir debception
sudo debootstrap --arch i386 squeeze debception http://httpredir.debian.org/debian/
On laisse tourner, ça va installer les fichiers de debian squeeze dans le dossier debception.

2. On va reporter les utilisateurs du système existant dans le chroot :
sudo grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/passwd | sudo tee -a debception/etc/passwd
sudo grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/group | sudo tee -a debception/etc/group

3. On relie les dossiers du chroot au système actuel :
sudo mount -t proc none debception/proc
sudo mount -o bind /dev debception/dev
sudo mount -o bind /var/run debception/var/run
sudo mount -o bind /home debception/home

4. On va maintenant se servir du paquet schroot, qui va nous permettre de lancer des commandes dans le chroot squeeze facilement. Une fois ce paquet installé, mettez ceci dans le fichier /etc/Schroot/schroot.conf
[debception]
directory=/chemin/vers/le/dossier/debception
users=vous

5. On peut désormais installer compiz dans le nouveau système après avoir installé les langues :
sudo schroot -c debception --directory / apt-get update
sudo schroot -c debception --directory / -- apt-get -y upgrade
sudo schroot -c debception --directory / -- apt-get -y dist-upgrade
sudo schroot -c debception --directory / -- apt-get -y install locales
sudo schroot -c debception --directory / -- dpkg-reconfigure locales
sudo schroot -c debception --directory / -- apt-get -y install compizconfig-settings-manager fusion-icon compiz-fusion-plugins-extra compiz-fusion-plugins-main xserver-xorg-video-all libgl1-mesa-dri pciutils

Voilà, compiz est installé

6. (facultatif) : je met à jour avec les backports, car mon matériel n'a pas l'accélération 3D sinon :
echo "deb http://http.debian.net/debian-backports squeeze-backports main" | sudo tee -a debception/etc/apt/sources.list
sudo schroot -c debception --directory / apt-get update
sudo schroot -c debception-$(whoami) --directory / -- apt-get -t squeeze-backports -y upgrade
sudo schroot -c debception-$(whoami) --directory / -- apt-get -t squeeze-backports -y dist-upgrade

7. Lancement de compiz :
On peut maintenant lancer compiz tranquillement, à partir de sa debian jessie en allant le chercher dans le chroot squeeze :
schroot -c debception -p -- compiz --replace ccp
Ou alors :
schroot -c debception -p -- fusion-icon
Et voilà! Génial hein?
Alors par contre, il faut que les dossiers soient montés avant, donc que vous ayez exécuté ceci :
sudo mount -t proc none debception/proc
sudo mount -o bind /dev debception/dev
sudo mount -o bind /var/run debception/var/run
sudo mount -o bind /home debception/home
Pour ne pas avoir à le faire à chaque fois, vous pouvez le rajouter dans le fichier /etc/fstab :
/home          /chemin/vers/debception/home       none    bind            0       0
/tmp           /chemin/vers/debception/tmp        none    bind            0       0
proc            /chemin/vers/debception/proc       proc    defaults        0       0
/var/run        /chemin/vers/debception/var/run    none    bind            0       0
/dev            /chemin/vers/debception/dev        none    bind            0       0

Vous êtes ainsi certains de ne pas avoir cassé votre système debian jessie.

Amusez-vous bien!