Firefox est un navigateur autonome basé sur la base de code de Mozilla.
Ce paquet est connu pour se construire correctement sur une plateforme LFS-9.0.
Téléchargement (HTTP) : https://archive.mozilla.org/pub/firefox/releases/68.0.2/source/firefox-68.0.2.source.tar.xz
Somme de contrôle MD5 du téléchargement : efb501a4e8100991d90c589cb6837798
Taille du téléchargement : 297 Mo
Estimation de l'espace disque requis : 4.1 Go (162 Mo installés) sans les tests
Estimation du temps de construction : 25 SBU (avec parallélisme=4) sans les tests
Correctif facultatif pour permettre les versions du système de Graphite2-1.3.13 et HarfBuzz-2.6.0 : http://www.linuxfromscratch.org/patches/blfs/9.0/firefox-68.0.2-system_graphite2_harfbuzz-1.patch
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. Aussi, l'édition de lien finale utilise presque 6 Go de mémoire réelle et les SBU peuvent augmenter significativement si la machine doit utiliser l'espace d'échange pour cela.
Le système de construction mach (scripts Python) peut être assez peu fiable : si la construction échoue et rapporte une erreur, elle peut quand même renvoyer un status de réussite, ce qui fait que les constructions scriptées essayent de l'installer (qui ne relance pas la construction), échouent lors de la préparation de l'installation mais quittent quand même avec un status de réussite. En plus, parfois il se limite à ne lancer qu'un seul ensemble de taches — ce qui rend la construction environ 3 fois plus longue qu'avec quatre ensembles de taches.
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.9.0, à la fois GTK+-3.24.10 et GTK+-2.24.32, libnotify-0.7.8, nodejs-10.16.3, NSS-3.45, PulseAudio-12.2 (ou alsa-lib-1.1.9 si vous modifiez le mozconfig ; maintenant rendu obsolète par mozilla), dans tous les cas lisez les informations de configuration, rustc-1.35.0, UnZip-6.0, yasm-1.3.0 et Zip-3.0
ICU-64.2, libevent-2.1.11, libwebp-1.0.3, NASM-2.14.02 et SQLite-3.29.0
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.65.3, dbus-glib-0.110, Doxygen-1.8.16, FFmpeg-4.2 (à l'exécution, pour jouer des fichiers mov, mp3 ou mp4), liboauth-1.0.3, OpenJDK-12.0.2, startup-notification-0.12, Valgrind-3.15.0, Wget-1.20.3, Wireless Tools-29, libproxy et (avec le correctif) Graphite2-1.3.13 et HarfBuzz-2.6.0
Notes utilisateur : http://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 dbus-glib, comment out this line:
ac_add_options --disable-dbus
# If you have installed dbus-glib, and 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 geolocaton API
# (needed for use with saved maps with Google Maps)
#ac_add_options --with-google-location-service-api-keyfile=$PWD/google-key
# Uncomment this line if you have installed startup-notification:
#ac_add_options --enable-startup-notification
# Uncomment the following option if you have not installed PulseAudio
#ac_add_options --disable-pulseaudio
# or uncomment this if you installed alsa-lib instead of PulseAudio
#ac_add_options --enable-alsa
# Comment out following options if you have not installed
# recommended dependencies:
ac_add_options --enable-system-sqlite
ac_add_options --with-system-libevent
# firefox-65 understands webp and ships with an included copy
ac_add_options --with-system-webp
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-icu
# Do not specify the gold linker which is not the default. It will take
# longer and use more disk space when debug symbols are disabled.
# libdavid (av1 decoder) requires nasm. Uncomment this if nasm
# has not been installed.
#ac_add_options --disable-av1
# You cannot distribute the binary if you do this
ac_add_options --enable-official-branding
# If you are going to apply the patch for system graphite
# and system harfbuzz, uncomment these lines:
#ac_add_options --with-system-graphite2
#ac_add_options --with-system-harfbuzz
# 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 BLFS editors recommend not changing anything below this line:
ac_add_options --prefix=/usr
ac_add_options --enable-application=browser
# 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
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
# From firefox-61 system cairo is not supported
ac_add_options --enable-system-ffi
ac_add_options --enable-system-pixman
# From firefox-62 --with-pthreads is not recognized
ac_add_options --with-system-bz2
ac_add_options --with-system-jpeg
ac_add_options --with-system-png
ac_add_options --with-system-zlib
# 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 lançant les commandes suivantes :
Si vous avez installé les versions du système de graphite2 et
harfbuzz et souhaitez que firefox les utilise à la place de ses
versions embarquées, appliquez le correctif et dé-commentez les
entrées appropriées du fichier mozconfig
.
patch -Np1 -i ../firefox-68.0.2-system_graphite2_harfbuzz-1.patch
Si les API de géolocalisation sont nécessaires
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 logicielles en utilisant ces directives, obtenez vos propres clefs en suivant les instrictions définies respectivement http://www.chromium.org/developers/how-tos/api-keys et https://location.services.mozilla.com/api.
echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key echo "d2284a20-0505-4927-a809-7ffaf4d91e55" > mozilla-key
Si vous compilez Firefox dans un
chroot, soyez certain d'avoir initialisé la variable
d'environnement $SHELL
ou passez
SHELL=/bin/sh
. Assurez-vous aussi que
/dev/shm
est monté.
Si vous utilisez toujours ICU-63, lancez un sed pour éviter un
conflit entre l'utilisation de CheckImpl()
de la version amont de ICU dans ses
en-têtes publics et l'utilisation interne de firefox d'un
CheckImpl()
différent.
sed -e 's/checkImpl/checkFFImpl/g' -i js/src/vm/JSContext*.h
Si vous construisez sur i686, appliquez un correctif pour éviter des erreurs internes au compilateur dans GCC-7+ :
case $(uname -m) in i?86) sed -i "562 s/mips64/i386/" gfx/skia/skia/third_party/skcms/src/Transform_inl.h ;; esac
Invoquez maintenant le script Python2 pour compiler le paquet.
export CC=gcc CXX=g++ && export MOZBUILD_STATE_PATH=${PWD}/mozbuild && ./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 install && mkdir -pv /usr/lib/mozilla/plugins && ln -sfv ../../mozilla/plugins /usr/lib/firefox/browser/
Redéfinissez les variables d'environnement à leur valeur initiale :
unset CC CXX MOZBUILD_STATE_PATH
sed -e 's/checkImpl/checkFFImpl/g'
... : bien que le paquet contienne une version
modifiée de ICU-63 et ne vérifie
seulement que la version du système, si elle est demandée, est au
moins la 63, des changements dans la version 63 en amont causent
l'échec de la construction avec des messages d'erreur de la forme
no void JSContext::checkImpl_63 member
function
. Le sed renomme la fonction locale. La version
ICU-64 en amont contient un contournement pour ce problème.
export CC=gcc CXX=g++ ... : clang est maintenant préféré en amont, mais gcc est un compilateur plus sécurisé et produit maintenant des constructions de taille raisonnable.
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.
./mach build : Firefox utilise maintenant ce script python2 pour lancer la construction et l'installation.
./mach build --verbose
: Utilisez
cette alternative si vous avez besoin de détails sur les fichiers
qui sont compilés avec les drapeaux C ou C++ utilisés.
./mach build -jN
: La construction
devrait, par défaut, utiliser tous les cœurs CPU en ligne. Il y a
deux raisons pour spécifier le nombre de cœur, p. ex. -j4 pour 4
cœurs : tout d'abord, si l'utilisation de tous les cœurs fait
que la construction utilise l'espace d'échange parce que vous
n'avez pas assez de mémoire (p. ex. pour 4 cœurs la construction
sans le graphite2 et le harfbuzz du système utilise maintenant un
peu plus de 8 Go de RAM). Dans ce cas, utiliser moins de cœurs peut
être plus rapide. Ensuite, sur certaines machines, le milieu de la
construction peut s'effectuer comme si un seul cœur était présent.
Dans ces cas, spécifier le nombre de cœurs peut accélérer la
construction.
mkdir -pv
/usr/lib/mozilla/plugins : Vérifie que
/usr/lib/mozilla/plugins
existe.
ln -sv ...
/usr/lib/firefox/browser : Cette commande crée
un lien symbolique vers /usr/lib/mozilla/plugins
. Il n'est pas vraiment
nécessaire, comme Firefox vérifie
/usr/lib/mozilla/plugins
par défaut,
mais le lien symbolique est fait pour garder tous les greffons
installés dans un seul dossier.
export CC=clang CXX=clang++ AR=llvm-ar
NM=llvm-nm RANLIB=llvm-ranlib
: utilisez cela comme
alternative à la construction avec gcc et g++ si vous souhaitez
utiliser la chaîne d'outils clang. Rappelez-vous d'effacer ces
variables avec « unset » après la construction.
Si vous utilisez un environnement de bureau comme Gnome ou KDE
vous pourriez souhaiter créer un fichier firefox.desktop
pour que Firefox apparaisse dans les menus du bureau.
Si vous n'avez pas activé startup-notification (notification de
démarrage) dans votre mozconfig, modifiez la ligne StartupNotify en
false. En tant qu'utilisateur root
:
mkdir -pv /usr/share/applications &&
mkdir -pv /usr/share/pixmaps &&
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=application/xhtml+xml;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
EOF
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.
Avec cette version de firefox, le son peut poser problème. 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 arrive 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-12.2) 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 profile dans firefox. Pour cela, invoquez firefox avec firefox --ProfileManager. Vous pouvez aussi vérifier le profil actuellement utilisé avec about:profiles.
Last updated on 2019-08-21 02:28:20 +0000