Twitter YouTube SoundCloud LinkedIn

Tiennot blog

Compiler Firefox sous GNU/Linux

Dernière modification le samedi 23 janvier 2010 (mise à jour pour la version 3.6).

Âmes sensibles, s'abstenir ! Ce qui suit demande patience et courage, et... bon ok j'en fais un peu trop ;-) Il est parfois nécessaire de recompiler des logiciels sous Linux, vous le savez bien. Et bien, je me suis moi-même retrouvé dans ce cas-là. Ayant une Debian 64 bits, je ne peux pas installer Firefox à partir des dépôts. Je sais, il existe son équivalent Iceweasel, qui marche tout aussi bien. Problème : avec celui-ci, je me voyais refuser l'accès au site www.virginmega.fr. Or, sur le site de Mozilla, ils ne distribuent que des versions 32 bits. Je me suis donc retrouvé un peu coincé. J'ai donc décidé de recompiler Firefox, et d'expliquer de mon mieux sur cette page comment j'ai fait (les tutos en français sur le web ne sont pas légion...) . Note : je considère ici que vous êtes sous Gnome. Pour un autre environnement, il vous faudra peut-être adapter, notament pour l'intégration au menu "applications".

Pour commencer, il faut récupérer les sources sur le site Mozilla : ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/ . Cliquez sur la version que vous voulez recompiler (ici, il n'y a que les releases). Dans mon cas, il s'agit de la 3.6. On clique donc sur le lien 3.6, puis sur le lien source, et on arrive avec une liste de 3-4 fichiers. Il faut télécharger celui avec l'extension *.bz2.

Jusqu'ici, c'est bon ? Bien. Maintenant, créons un dossier qui va nous servir pour recompiler, par exemple, $HOME/mozilla (donc dans mon cas : /home/guilhem/mozilla). on va y décompresser l'archive. Dans un terminal, entrez les commandes suivantes :

$ cd ~/mozilla
$ tar -xvjf le_nom_complet_de_l_archive


Après un petit moment, vous vous retrouvez avec les sources dans le dossier $HOME/mozilla/mozilla-1.9.2 . Maintenant, il nous faut installer les paquets nécessaires à la compilation. Dans un terminal, entrez les commandes suivantes :

# si vous avez Ubuntu :
$ sudo apt-get build-dep firefox
$ sudo apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxml2-dev libssl-dev libgnutls-dev libidl-dev autoconf2.13
$ sudo apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev

# si vous avez Debian :
$ su
# apt-get build-dep iceweasel
# apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxml2-dev libssl-dev libgnutls-dev libidl-dev autoconf2.13
# apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev
# exit


Note : si le paquet "libcurl4-openssl-dev" est introuvable, essayez de le remplacer par libcurl-dev, libcurl4-gnutls-dev, ou libcurl3-gnutls-dev. Maintenant, nous devons télécharger les fichiers pour la version française :

$ hg clone http://hg.mozilla.org/releases/l10n-mozilla-1.9.2/fr

Et après, vous avez un joli dossier nommé fr dans ~/mozilla.

Maintenant, on peut s'attaquer à la configuration. Avec votre éditeur de texte préféré (pour moi gedit), créez un fichier .mozconfig dans votre home (pour moi : /home/guilhem). Note : ce fichier, dès sa création, devient un fichier caché, car il commence par un point. Pour afficher les fichiers cachés sous Nautilus, faites CTRL+H (et refaite-le à nouveau pour les masquer). Maintenant, remplissez-le avec les lignes qui suivent :

ac_add_options --enable-optimize --disable-debug
ac_add_options --disable-tests
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-static
ac_add_options --enable-application=browser
ac_add_options --enable-official-branding

mk_add_options MOZ_CO_LOCALES=all
ac_add_options --enable-ui-locale=fr
ac_add_options --with-l10n-base=..

ac_add_options --enable-default-toolkit=cairo-gtk2
ac_add_options --enable-xft



Voilà... Maintenant, la compilation à proprement parler...

Commencez par ouvrir un terminal, et à vous placer dans le dossier ~/mozilla/mozilla-1.9.2 : cd ~/mozilla/mozilla-1.9.2

Ensuite, tapez : ./configure

Vous avez des lignes qui défilent, et normalement, tout devrait bien se passer... Si néanmoins vous avez une erreur, c'est qu'il vous manque une bibliothèque pour compiler... À vous de trouver laquelle, à l'aide du message d'erreur indiqué. Inutile d'aller plus loin si cette phase ne marche pas, car la suivante ne marchera pas non plus. Si au final, lorsque le texte a fini de défiler à l'écran, vous n'avez pas le mot "error" dans les dernières lignes, c'est que c'est bon :-) En cas d'erreur insoluble, vous pouvez toujours poster ici, sur mon blog.

Maintenant, compilons :-) Toujours dans le même terminal, que normalement vous devriez ne pas avoir fermé, tapez simplement ça :

$ make

Note : si vous avez un processeur multi-cœurs, tentez ceci :

$ make -jx

en remplaçant x par le nombre de cœurs. Ceci permettra de faire travailler tous les cœurs, et de diminuer le temps de compilation. Merci à Astromb de m'avoir proposé cette astuce ;-) Exemple avec mon quadricœurs :

$ make -j4

Et... laissez défiler. Ne vous inquiétez pas, c'est très long (une heure, voire un peu moins). Et lorsque ça s'arrête, regardez s'il n'y a pas le mot "error" dans les dernières lignes. S'il n'y est pas, ... c'est que c'est bon :-) On va enfin pouvoir passer à l'installation.

Toujours dans le même terminal, tapez simplement :

make package

Vous obtenez normalement une archive nommé firefox-3.6.fr.linux-x86_64.tar.bz2 dans le dossier mozilla-1.9.2/dist. Notez que cette méthode, que j'ai trouvé en relisant bien la doc de Mozilla, est plus pratique qu'un simple "make install", car elle évite d'éparpiller des fichiers n'importe où dans le système. Firefox se retrouve dans un seul dossier, bien plus pratique à supprimer pour installer une nouvelle version, par exemple :-)

Pour terminer l'installation, il nous suffit d'extraire cette archive dans le dossier /usr/local :

$ cd /usr/local
$ sudo tar -xvjf /home/votre_home/mozilla/mozilla-1.9.2/dist/firefox-3.6.fr.linux-x86_64.tar.bz2

# pour debian, entrez en mode root, et supprimez le sudo


Et enfin, pour que le système réagisse à la commande firefox, créons un lien symbolique dans le dossier /usr/local/bin :

$ cd /usr/local/bin
$ sudo ln -s /usr/local/firefox/firefox firefox

# pour Debian, se connecter en root, et enlever le sudo


Maintenant, testons :

$ firefox

Et là, si tout c'est bien passé, firefox se lance :D

Ouais, sauf que ce serait plus sympa de l'avoir dans le menu "applications". Bon, bon... Alors, tapez dans un terminal la commande suivante :

$ gksudo gedit /usr/local/share/applications/firefox.desktop # pour Ubuntu

# gedit /usr/local/share/applications/firefox.desktop # pour Debian, tout en étant en root, bien sûr


Copiez-collez le contenu suivant :

[Desktop Entry]
Encoding=UTF-8
Name=Firefox Web Browser
Name[fr]=Navigateur Web Firefox
Comment=Browse The World Wide Web
Comment[fr]=Navigue sur Internet
Exec=firefox
Icon=/usr/local/firefox/icons/mozicon128.png
Terminal=false
Type=Application
Categories=Network;WebBrowser;


Enregistrez, et voilà qui est fait :-)

Et si on veut installer une nouvelle version, on fait comment ? Et bien, deux cas possibles :

Et voilà, c'est fini. Si vous avez des question, que ça ne marche pas, ou que vous avez remarqué une erreur, postez sur mon blog (j'essaierai d'aller sur mon site régulièrement pendant ces 3 semaines de vacances ;-).