Firefox est un navigateur autonome basé sur la base de code de Mozilla.
This package is known to build and work properly using an LFS 11.3 platform.
Téléchargement (HTTP) : https://archive.mozilla.org/pub/firefox/releases/102.8.0esr/source/firefox-102.8.0esr.source.tar.xz
Somme de contrôle MD5 : 2f65e84943e97f6d56d7b07aa1ded135
Taille du téléchargement : 457 Mo
Estimation de l'espace disque requis : 7,0 Go (197 Mo installés) sans les tests
Estimation du temps de construction : 20 SBU avec -j4, sans les tests
Le nom du répertoire est firefox-102.8.0
L'extraction de l'archive réinitialisera les permissions du
répertoire courant à 0755 si vous avez la permission de faire
cela. Si vous le faites dans un répertoire où le droit sticky est
activé, comme /tmp
l'opération se
terminera avec les messages d'erreur :
tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
tar: Exiting with failure status due to previous errors
Elle termine avec un statut différent de zéro, mais cela ne
signifie PAS qu'il y a un
vrai problème. Ne décompressez pas en tant que root
dans un répertoire où le droit sticky
est activé - cela le désactiverait.
Comme avec les autres gros paquets qui utilisent C++ (ou rust), le temps en SBU pour le construire peut varier plus grandement que vous ne vous y attendez. Le temps de construction peut augmenter significativement si la machine doit utiliser l'espace d'échange pour cela.
Bien qu'en amont on préfère utiliser PulseAudio, pour le moment Alsa peut toujours être utilisé. Les deux ont besoin de configuration à l'exécution pour que le son fonctionne.
Autoconf-2.13, Cbindgen-0.24.3, dbus-glib-0.112, GTK+-3.24.36, libnotify-0.8.1, LLVM-15.0.7 (clang, utilisé pour bindgen même si vous utilisez gcc), nodejs-18.14.1, PulseAudio-16.1 (ou alsa-lib-1.2.8 si vous modifiez le mozconfig ; maintenant rendu obsolète par mozilla), dans tous les cas lisez les informations de configuration, Python-3.11.2 (reconstruit après l'installation de SQLite-3.40.1), startup-notification-0.12, UnZip-6.0, yasm-1.3.0 et Zip-3.0
ICU-72.1, libevent-2.1.12, libvpx-1.13.0, libwebp-1.3.0, NASM-2.16.01, nss-3.88.1
Si vous n'installez pas les dépendances recommandées, alors les versions internes de ces paquets seront utilisés. Elles peuvent être testées pour fonctionner, mais elles peuvent être dépassées ou contenir des trous de sécurité.
cURL-7.88.1, Doxygen-1.9.6, FFmpeg-5.1.2 (à l'exécution, pour jouer des fichiers mov, mp3 ou mp4), liboauth-1.0.3, Valgrind-3.20.0, Wget-1.21.3, Wireless Tools-29, libproxy
Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/firefox
La configuration de Firefox se
fait en créant un fichier mozconfig
contenant les options de configuration désirées. Un mozconfig
par défaut est créé ci-dessous. Pour
voir toute la liste des options de configuration disponibles, (et
une description abrégée de chacune), faites ./mach configure && ./configure --help |
less. Il se peut que vous vouliez aussi relire tout
le fichier et dé-commenter les autres options souhaitées. Créez le
fichier en tapant la commande suivante :
cat > mozconfig << "EOF"
# If you have a multicore machine, all cores will be used by default.
# If you have installed (or will install) wireless-tools, and you wish
# to use geolocation web services, comment out this line
ac_add_options --disable-necko-wifi
# API Keys for geolocation APIs - necko-wifi (above) is required for MLS
# Uncomment the following line if you wish to use Mozilla Location Service
#ac_add_options --with-mozilla-api-keyfile=$PWD/mozilla-key
# Uncomment the following line if you wish to use Google's geolocation API
# (needed for use with saved maps with Google Maps)
#ac_add_options --with-google-location-service-api-keyfile=$PWD/google-key
# startup-notification is required since firefox-78
# Uncomment the following option if you have not installed PulseAudio and
# want to use alsa instead
#ac_add_options --enable-audio-backends=alsa
# Comment out following options if you have not installed
# recommended dependencies:
ac_add_options --with-system-icu
ac_add_options --with-system-libevent
ac_add_options --with-system-libvpx
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-webp
# Unlike with thunderbird, although using the gold linker can
# save four megabytes in the installed file it does not make
# the build faster.
# libdavid (av1 decoder) requires nasm. Uncomment this if nasm
# has not been installed. Do not uncomment this if you have
# ffmpeg-5 installed.
#ac_add_options --disable-av1
# You cannot distribute the binary if you do this
ac_add_options --enable-official-branding
# Stripping is now enabled by default.
# Uncomment these lines if you need to run a debugger:
#ac_add_options --disable-strip
#ac_add_options --disable-install-strip
# Disabling debug symbols makes the build much smaller and a little
# faster. Comment this if you need to run a debugger. Note: This is
# required for compilation on i686.
ac_add_options --disable-debug-symbols
# The elf-hack is reported to cause failed installs (after successful builds)
# on some machines. It is supposed to improve startup time and it shrinks
# libxul.so by a few MB - comment this if you know your machine is not affected.
ac_add_options --disable-elf-hack
# The BLFS editors recommend not changing anything below this line:
ac_add_options --prefix=/usr
ac_add_options --enable-application=browser
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
# enabling the tests will use a lot more space and significantly
# increase the build time, for no obvious benefit.
ac_add_options --disable-tests
# The default level of optimization again produces a working build with gcc.
ac_add_options --enable-optimize
ac_add_options --enable-system-ffi
ac_add_options --enable-system-pixman
ac_add_options --with-system-jpeg
ac_add_options --with-system-png
ac_add_options --with-system-zlib
# Using sandboxed wasm libraries has been moved to all builds instead
# of only mozilla automation builds. It requires extra llvm packages
# and was reported to seriously slow the build. Disable it.
ac_add_options --without-wasm-sandboxed-libraries
# The following option unsets Telemetry Reporting. With the Addons Fiasco,
# Mozilla was found to be collecting user's data, including saved passwords and
# web form data, without users consent. Mozilla was also found shipping updates
# to systems without the user's knowledge or permission.
# As a result of this, use the following command to permanently disable
# telemetry reporting in Firefox.
unset MOZ_TELEMETRY_REPORTING
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build-dir
EOF
Compilez Firefox en exécutant les commandes suivantes :
Un changement dans cbindgen-0.24.2 fait maintenant créer un symbole à cbindgen, mais il a déjà été défini dans un en-tête. Ce sed empêche la construction d'échouer :
sed -i '/ROOT_CLIP_CHAIN/d' gfx/webrender_bindings/webrender_ffi.h
Si vous avez besoin des API de géolocalisation :
Les clefs d'API de Google et Mozilla ci-dessous sont spécifiques à LFS. Si vous utilisez ces instructions pour une autre distribution, ou si vous avez l'intention de distribuer des copies binaires en utilisant ces directives, obtenez vos propres clefs en suivant les instructions de https://www.chromium.org/developers/how-tos/api-keys et https://location.services.mozilla.com/api.
echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key echo "613364a7-9418-4c86-bcee-57e32fd70c23" > mozilla-key
Si vous compilez ce paquet dans un chroot vous devez faire deux
choses. Tout d'abord, en tant qu'utilisateur root
, assurez-vous que /dev/shm
est monté. Si vous ne le faites pas,
la configuration en Python
échouera avec une trace faisant référence à /usr/lib/pythonN.N/multiprocessing/synchronize.py
.
Lancez :
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
Deuxièmement, vous devez soit exporter en tant qu'utilisateur
root
la variable d'environnement
$SHELL
avec export SHELL=/bin/sh, soit
rajouter SHELL=/bin/sh
devant
l'invocation de la commande configure.
Invoquez maintenant le script Python mach pour compiler le paquet.
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none && export MOZBUILD_STATE_PATH=${PWD}/mozbuild && ./mach configure && ./mach build
Le fichier mozconfig
ci-dessus
désactive les tests car ils prennent beaucoup plus de temps et
d'espace disque sans bénéfice évident. Si vous les avez tout de
même activés, vous pouvez lancer les tests en exécutant
./mach gtest. Cela
requiert une connexion internet et d'être lancé dans un
environnement Xorg - il y a une boîte de dialogue lorsque la
connexion à ALSA échoue (ce qui ne fait pas échouer le test). Un ou
deux tests échoueront. Pour voir les détails des échecs, vous
devrez enregistrer la sortie de la commande pour pouvoir la revoir.
Maintenant, en tant qu'utilisateur root
:
MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none ./mach install
Videz les variables d'environnement qui ont été définies plus haut :
unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE MOZBUILD_STATE_PATH
export
MOZBUILD_STATE_PATH=${PWD}/mowbuild : La
construction est maintenant supposée vous dire qu'elle souhaite
créer ~/.mozbuld
et vous offre
l'option d'appuyer sur « ENTRÉE » pour accepter cela, ou
Ctrl-C pour annuler et recommencer la construction après avoir
spécifié le répertoire. En pratique, le message peut ne pas
apparaître après avoir tapé « ENTRÉE », c.-à-d. que la
construction échoue.
Ce répertoire est utilisé pour un identifiant (probablement
aléatoire) de télémétrie. Créez-le dans le répertoire de
construction et supprimez-le après l'installation pour éviter qu'il
ne soit utilisé. Si vous souhaitez participer à la télémétrie,
exportez MOZBUILD_STATE_PATH et faites-le pointer vers le
répertoire par défaut et supprimez l'entrée de mozconfig
.
MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none : utilise le python du système pour créer un environnement virtuel pour mach sans télécharger de wheel python ni utiliser les modules python du système. Cela évite les incohérences de version entre les modules du système et les modules inclus.
./mach
configure : cela valide les dépendances
fournies et le mozconfig
.
./mach build --verbose
: utilisez
cette alternative si vous avez besoin de détails sur les fichiers
qui sont compilés, ainsi que sur les drapeaux C ou C++ utilisés.
Mais n'ajoutez pas « --verbose » à la commande
d'installation, elle n'est pas acceptée.
./mach build -jN
: la construction
devrait par défaut utiliser tous les cœurs de CPU en ligne. Si
utiliser tous les cœurs fait que la construction utilise la mémoire
d'échange parce que vous n'avez pas assez de RAM, utiliser moins de
cœurs peut être plus rapide.
: BLFS préférait utiliser gcc et g++ au
lieu des programmes clang par
défaut en amont. Avec la publication de gcc-12 la construction
prend plus de temps avec gcc et g++, surtout à cause
d'avertissements supplémentaires, et est plus grosse. Initialisez
ces variables d'environnement avant de
lancer le script configure si vous voulez continuer à
utiliser gcc et g++. La construction avec GCC sur i?86 est
actuellement cassée.
CC=gcc
CXX=g++
Si vous utilisez un environnement de bureau comme Gnome ou KDE
vous voudrez peut-être créer un fichier firefox.desktop
pour que Firefox apparaisse dans les menus du bureau.
En tant qu'utilisateur root
:
mkdir -pv /usr/share/applications &&
mkdir -pv /usr/share/pixmaps &&
MIMETYPE="text/xml;text/mml;text/html;" &&
MIMETYPE+="application/xhtml+xml;application/vnd.mozilla.xul+xml;" &&
MIMETYPE+="x-scheme-handler/http;x-scheme-handler/https" &&
cat > /usr/share/applications/firefox.desktop << EOF &&
[Desktop Entry]
Encoding=UTF-8
Name=Firefox Web Browser
Comment=Browse the World Wide Web
GenericName=Web Browser
Exec=firefox %u
Terminal=false
Type=Application
Icon=firefox
Categories=GNOME;GTK;Network;WebBrowser;
MimeType=$MIMETYPE
StartupNotify=true
EOF
unset MIMETYPE &&
ln -sfv /usr/lib/firefox/browser/chrome/icons/default/default128.png \
/usr/share/pixmaps/firefox.png
Les paramètres applicatifs pour firefox sont accessibles en entrant about:config dans la barre d'adresse.
Parfois, avoir du son qui fonctionne dans firefox peut être difficile. Bien qu'en amont pulseaudio soit préféré, utiliser Alsa peut être plus facile.
Si vous avez activé Alsa pour le son, vous pourriez avoir besoin de modifier une variable pour qu'il fonctionne. Si vous lancez firefox depuis un terminal et essayez de jouer quelque chose avec du son, vous pouvez trouver des messages d'erreur tels que :
Sandbox: seccomp sandbox violation: pid
3941, tid 4030, syscall 16, args 48 2147767296 139909894784796 0
0 0.
C'était sur x86_64, sur i686 le numéro d'appel système est 54. Pour permettre cet appel système, dans about:config, modifiez security.sandbox.content.syscall_whitelist à 16 (ou 54 en i686).
Si vous utilisez pulseaudio dans un
environnement de bureau, il est peut-être déjà démarré par
celui-ci. Mais si ce n'est pas le cas, bien que firefox-57
arrivait à le démarrer, firefox-58 n'y arrivait pas. Si vous
lancez firefox
depuis un terminal et que ce problème est présent, essayer de
jouer un son produira des avertissements Impossible de trouver le contexte cubeb !
La solution est de fermer firefox, démarrer pluseaudio pour
vérifier qu'il démarre (sinon voir les information de
configuration dans PulseAudio-16.1) et redémarrez firefox pour
vérifier que ça fonctionne. Si maintenant ça fonctionne, ajoutez
ce qui suit à voutr ~/.xinitrc
: pulseaudio --verbose
--log-target=syslog&
(malheureusement, sur
certains systèmes cela ne fonctionne pas).
Vous pouvez souhaiter utiliser plusieurs profils dans firefox. Pour cela, invoquez firefox avec firefox --ProfileManager. Vous pouvez aussi vérifier le profil actuellement utilisé avec about:profiles.
Bien que WebRender (avec le GPU pour la composition) ne soit pas utilisé par défaut, il a maintenant l'air de bien marcher sur les matériels pris en charge (les GPU ATI, Nvidia et Intel avec Mesa-18 et supérieur). Pour une explication, regardez hacks.mozilla.org. Le seul inconvénient semble être une utilisation plus élevée de la RAM sur les machines avec peu de RAM.
Pour vérifier si WebRender est utilisé, regardez dans about:support. Dans la section Graphique, Composition montrera soit « Basic » (inutilisé) soit « WebRender ». Pour l'activer, allez dans about:config et changez gfx.webrender.all à True. Vous devrez redémarrer firefox.
Il peut être utile de mentionner les processus de firefox qui peuvent apparaître dans top — en plus de firefox lui-même, il y a plusieurs processus Web Content, et maintenant un processus RDD (Remote Data Decoder) qui apparaît lors de la lecture de vidéos web encodées avec av1 (libdav1d). Si WebRender est activé, un processus GPU apparaîtra aussi lorsque firefox doit rafraîchir l'écran (p. ex. pendant le défilement, l'ouverture d'un nouvel onglet, ou à la lecture d'une vidéo).