vendredi 15 mai 2009

Firefox, Flash et Ubuntu 64bits

Mais où est installé ce p%*$^! de plugin flash, et pourquoi ça rame ??? Et puis c'est qui ce modération ????

Les plugins flash ont longtemps été un grand "blackhole" pour moi. Surtout sous Linux.
En plus, pour ne rien arranger, je me permets d'être sur une distribution Ubuntu 64bits.
J'en avait marre de faire ballotter ma config au fil des différents posts que je pouvais trouver sur Internet.
J'en avait également marre que les appli flash gêlent régulièrement firefox.

Au boulot

Les manches remontés, je m'en suis donc allé explorer les coulisses des plugins Firefox sous Ubuntu, à coup de google et de man. Et miracle, je me retrouve avec un Firefox 3.0.10 + Ubuntu 8.10 + Adobe Flash Player 10 r22, le tout en 64bits, stable et performant !
NB : Pour les feignants, le script à exécuter est à la fin ;)

Etape 1: Trouver un plugin flash 64bits récent
D'après les témoignages sur le web, et d'après mes souvenirs, il semble que les implémentations flash libres ne soient pas très performantes. Et surtout, certains sites ne seraient pas compatibles.
Donc, allons voir Adobe. Dernière version = 10. Problème, pour les 64 bits, elle n'existe qu'en alpha (http://labs.adobe.com/downloads/flashplayer10.html) Et impossible de trouver la version 9 (en même temps, j'ai pas trop cherché : autant utiliser les dernières versions, même si ça reste de l'alpha - to geek or not to geek ?)

Etape 2: L'installer sur un Ubuntu de la façon la plus propre possible

~$ locate flash | grep .so$ | xargs ls -l
-rw-r--r-- 1 root root 10208 2008-09-21 22:10 /usr/lib/amsn/utils/linux/linflash/flash.so
lrwxrwxrwx 1 root root 37 2009-02-27 00:17 /usr/lib/firefox/plugins/flashplugin-alternative.so -> /etc/alternatives/firefox-flashplugin
lrwxrwxrwx 1 root root 57 2008-12-02 00:42 /usr/lib/firefox/plugins/npwrapper.libflashplayer.so -> /var/lib/flashplugin-nonfree//npwrapper.libflashplayer.so
-rw-r--r-- 1 root root 10131640 2009-02-27 00:17 /usr/lib/flashplugin-nonfree/libflashplayer.so
lrwxrwxrwx 1 root root 36 2009-02-27 00:17 /usr/lib/iceape/plugins/flashplugin-alternative.so -> /etc/alternatives/iceape-flashplugin
lrwxrwxrwx 1 root root 39 2009-02-27 00:17 /usr/lib/iceweasel/plugins/flashplugin-alternative.so -> /etc/alternatives/iceweasel-flashplugin
lrwxrwxrwx 1 root root 60 2008-10-12 22:53 /usr/lib/iceweasel/plugins/npwrapper.libflashplayer.so -> /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so
lrwxrwxrwx 1 root root 40 2009-02-27 00:17 /usr/lib/midbrowser/plugins/flashplugin-alternative.so -> /etc/alternatives/midbrowser-flashplugin
lrwxrwxrwx 1 root root 37 2009-02-27 00:17 /usr/lib/mozilla/plugins/flashplugin-alternative.so -> /etc/alternatives/mozilla-flashplugin
lrwxrwxrwx 1 root root 57 2008-12-02 00:42 /usr/lib/mozilla/plugins/npwrapper.libflashplayer.so -> /var/lib/flashplugin-nonfree//npwrapper.libflashplayer.so
-rw-r--r-- 1 root root 213536 2008-11-20 13:20 /usr/lib/openoffice/program/libflash680lx.so
lrwxrwxrwx 1 root root 46 2009-02-27 00:17 /usr/lib/xulrunner-addons/plugins/flashplugin-alternative.so -> /etc/alternatives/xulrunner-addons-flashplugin
lrwxrwxrwx 1 root root 39 2009-02-27 00:17 /usr/lib/xulrunner/plugins/flashplugin-alternative.so -> /etc/alternatives/xulrunner-flashplugin
lrwxrwxrwx 1 root root 53 2008-11-30 22:46 /usr/share/amsn/utils/linux/linflash/flash.so -> ../../../../../lib/amsn/utils/linux/linflash/flash.so
-rwxr-xr-x 1 root root 88888 2009-02-27 00:17 /var/lib/flashplugin-nonfree/npwrapper.libflashplayer.so

Ce qui m'intéresse ici, c'est ce qui parle de firefox, mozilla et xul.
Or, ce qui me frappe, c'est que ce sont tous des liens symboliques vers un répertoire : /etc/alternatives/. Mais oui !! update-alternatives !!

Pour info, update-alternatives est un système (qui me semble lié au système de paquets debian - dpkg) qui permet de basculer d'une config de logiciel à une autre sans désinstallation / installation, mais simplement grâce à des liens symboliques. Comme pour java, vi, pager, editor, x-session-manager, ou on peut basculer d'une version à une autre avec un update-alternatives --config java. Voir le man pour plus d'infos.

Désormais, comment ajouter ma nouvelle alternative au système ?
Extraire mon libflashplayer.so fraichement téléchargé dans /var/lib/flashplugin-nonfree (c'est ici qu'est stocké la version npwrapper 32bits du player d'Adobe - celle installée par le paquet flashplugin-nonfree), puis
sudo update-alternatives --install /usr/lib/mozilla/plugins/flashplugin-alternative.so mozilla-flashplugin /var/lib/flashplugin-nonfree/libflashplayer.so 60
Commande trouvée grâce à un man update-alternatives, à un ls -l /etc/alternatives/*flashplugin, à un update-alternatives --display mozilla-flashplugin, et à un cat /var/lib/dpkg/alternatives/mozilla-flashplugin
Le fait de définir une priorité de 60, et sachant qu'une seule alternative existait sur mon système et qu'elle était en priorité 50, ma nouvelle alternative devient celle utilisée par défaut.

Je fais ensuite la même chose avec firefox-flashplugin, xulrunner-flashplugin et xulrunner-addons-flashplugin.
NB: J'ai fait toutes ces manips avec firefox non démarré...
Etape 3: Le test ultime
Démarrer Firefox, aller dans about:plugins, rechercher la section Shockwave flash, et vérifier que le plugin utilisé est bien

Nom de fichier : libflashplayer.so
Shockwave Flash 10.0 r22

Ok, donc j'essaye youtube, dailymotion, deezer, et même 1 ou 2 jeux flash (qui ramaient vraiment avec mon ancienne "alternative"). Tout fonctionne, c'est vraiment fluide et Firefox ne gêle plus.

Conclusion

J'ai passé 1 heure dessus, pour au final :
- Une meilleur connaissance de mon système
- Un peu plus d'expérience
- Un système qui fonctionne mieux qu'avant
- Un système qui reste cohérent dans son installation
I am happy !
Y'en a qui auraient conseillé de copier le fichier libflashplayer.so directement dans les /usr/lib/mozilla|firefox|xul*/plugins après avoir supprimé le paquet flashplugin-nonfree (ou autres), mais on perd l'intérêt du système alternatives. Et surtout, on ne sait pas comment un sudo apt-get upgrade aurait réagit (un flashplugin-nonfree ou autre pourrait être réinstallé par une dépendance et "casser" notre petite manip!)
Ce n'est certainement pas la meilleure façon de faire, mais c'est la mienne, et elle marche pour moi (d'ailleurs, comment définir qu'un façon de faire est meilleure qu'une autre ?)

Avertissement : La version du player flash que j'ai téléchargé reste une version alpha !! Donc sujet à bugs.

Version "plug and play":

Normalement, en exécutant le code ci-dessous sur une distribution Ubuntu 8.10 (et après avoir fermé tous les firefox), ça devrait marcher. N'hésitez pas à me remonter vos problèmes.

# sauvegarder la configuration des "alternatives", surtout pour pouvoir retrouver le premier argument de la commande --install de l'update-alternatives
sudo cp /etc/alternatives /etc/alternatives.bck
cd ~
wget http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz
sudo tar -xzf flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz -C /var/lib/flashplugin-nonfree
sudo update-alternatives --install /usr/lib/mozilla/plugins/flashplugin-alternative.so mozilla-flashplugin /var/lib/flashplugin-nonfree/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/firefox/plugins/flashplugin-alternative.so firefox-flashplugin /var/lib/flashplugin-nonfree/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/xulrunner/plugins/flashplugin-alternative.so xulrunner-flashplugin /var/lib/flashplugin-nonfree/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/xulrunner-addons/plugins/flashplugin-alternative.so xulrunner-addons-flashplugin /var/lib/flashplugin-nonfree/libflashplayer.so 60

Note pour plus tard : faut vraiment que je colle des images, ou un peu de couleurs, c'est vraiment triste ici!

Aucun commentaire: