Firefox er en frittstående nettleser basert på Mozilla kodebasen.
Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.2 plattform.
Nedlasting (HTTP): https://archive.mozilla.org/pub/firefox/releases/128.1.0esr/source/firefox-128.1.0esr.source.tar.xz
Nedlasting MD5 sum: efbf349f0b7442fc6f2995bef4d32785
Nedlastingsstørrelse: 536 MB
Estimert diskplass som kreves: 6.7 GB (223 MB installert) uten tester
Estimert byggetid: 15 SBU bruker -j8, uten tester
Mappenavnet er firefox-128.1.0
Å pakke ut tarballen vil tilbakestille tillatelsene til gjeldende
mappe til 0755 hvis du har tillatelse til det. Hvis du gjør dette
i en mappe hvor den klebrige biten er satt, slik som /tmp
vil det ende med feilmeldinger:
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
Dette avsluttes med ikke-null status, men det betyr IKKE at det er et reelt problem. Ikke
untar som root
bruker i en mappe
der klebrig-biten er satt - det vil deaktivere den.
Som med andre store pakker som bruker C++ (eller rust), er SBU tiden for å bygge dette varierer mer enn du kanskje forventer. Byggetidene vil øke betydelig hvis maskinen din må bruke vekselminnet.
Selv om oppstrøms foretrekker å bruke PulseAudio, for øyeblikket Alsa kan fortsatt brukes. Begge kan trenge kjøretidskonfigurasjon for å få lyden til å fungere.
Cbindgen-0.27.0, GTK+-3.24.43, libnotify-0.8.3, LLVM-18.1.7 (med clang, brukes til bindgen selv om man bruker gcc), nodejs-20.16.0, PulseAudio-17.0 (eller alsa-lib-1.2.12 hvis du redigerer mozconfig; nå avviklet av mozilla), i begge tilfeller vennligst les Konfigurasjonsinformasjon, Python-3.12.5 (etter installasjonen av SQLite-3.46.1), startup-notification-0.12, og UnZip-6.0
ICU-75.1, libevent-2.1.12, libvpx-1.14.1, libwebp-1.4.0, NASM-2.16.03, og nss-3.103
Hvis du ikke installerer anbefalte avhengigheter, blir interne kopier av disse pakkene brukt. De kan ha blitt testet for å fungere, men de kan være utdatert eller inneholde sikkerhetshull.
cURL-8.9.1, Doxygen-1.12.0, FFmpeg-7.0.2 (kjøretid, for å spille mov, mp3 eller mp4 files), GeoClue-2.7.1 (kjøretid), liboauth-1.0.3, pciutils-3.13.0 (kjøretid), Valgrind-3.23.0, Wget-1.24.5, Wireless Tools-29, yasm-1.3.0, libproxy
Redaktørens notater: https://wiki.linuxfromscratch.org/blfs/wiki/firefox
Konfigurasjonen av Firefox er
oppnådd ved å lage en mozconfig
fil
som inneholder ønsket konfigurasjonsalternativer. En standard
mozconfig
er opprettet nedenfor. For
å se hele listen over tilgjengelige konfigurasjonsalternativer (og
en forkortet beskrivelse av noen av dem), utsted ./mach configure -- --help |
less. Du kan også se gjennom hele filen og fjerne
kommentarer til andre ønskede alternativer. Opprett filen ved å gi
følgende kommando:
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
# Comment out the following line if you wish not to use Google's Location
# Service (GLS). Note that if Geoclue is installed and configured to use
# GLS (as the BLFS instruction does), Firefox can access GLS via Geoclue
# anyway. On the other hand if Geoclue is not installed (or not properly
# configured) and this line is commented out, the website requiring a
# location service will not function properly.
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
# The libdav1d library (av1 decoder) requires nasm. Uncomment this
# if nasm has not been installed. Do not uncomment this if you have
# ffmpeg 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.
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
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
# This enables SIMD optimization in the shipped encoding_rs crate.
ac_add_options --enable-rust-simd
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
# Sandboxing works well on x86_64 but might cause issues on other
# platforms, e.g. i686.
[ $(uname -m) != x86_64 ] && ac_add_options --disable-sandbox
# 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
Tilpass to filer for kompatibilitet med cbindgen-0.27.0 eller nyere:
sed 's/input.try/&_parse/' \ -i servo/components/style_traits/values.rs && sed '0,/"Keyframe"/{//d}' -i servo/ports/geckolib/cbindgen.toml
Hvis du bygger med system ICU, tilpasser du linjeskiftkartleggingen for ICU 74 eller senere. Denne konstruksjonen legger til fem oppføringer til en c++ matrise.
for i in {43..47}; do sed -i '/ZWJ/s/}/,CLASS_CHARACTER&/' intl/lwbrk/LineBreaker.cpp done
Kompiler Firefox ved å kjøre følgende kommandoer:
Hvis geolokaliserings APIene er nødvendige:
Google API nøkler nedenfor er spesifikke for LFS. Hvis du bruker disse instruksjonene for en annen distro, eller hvis du har tenkt å distribuere binære kopier av programvaren ved å bruke disse instruksjonene, hent dine egne nøkler ved å følge instruksjonene på https://www.chromium.org/developers/how-tos/api-keys.
echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key
Hvis du kompilerer denne pakken i chroot, må du Først som
root
bruker, sørge for at
/dev/shm
er montert. Hvis du ikke
gjør dette, Python
konfigurasjonen vil mislykkes med en tilbakesporingsrapport som
viser til /usr/lib/pythonN.N/multiprocessing/synchronize.py
.
Som root
bruker, kjør:
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
Påkall nå Python mach skript for å kompilere pakken.
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none && export MOZBUILD_STATE_PATH=${PWD}/mozbuild && ./mach build
mozconfig
ovenfor deaktiverer testene
fordi de bruker mye mer tid og diskplass uten noen åpenbar fordel.
Hvis du likevel har aktivert dem, kan du kjøre testene ved å kjøre
./mach gtest. Dette
vil kreve en nettverkstilkobling, og å bli kjørt fra en Xorg økt -
det er en sprettopp-dialog når den ikke klarer å koble til ALSA
(det skaper ikke en mislykket test). En eller to tester vil
mislykkes. For å se detaljene om feilen(e) må du logge utdataene
fra den kommandoen slik at du kan se gjennom den.
Nå, som root
bruker:
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none && ./mach install
Tøm miljøvariablene som ble angitt ovenfor:
unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE unset MOZBUILD_STATE_PATH
export
MOZBUILD_STATE_PATH=${PWD}/mozbuild: Bygget
forteller deg at den har til hensikt å opprette ~/.mozbuild
, og tilby deg et alternativ å trykke
<ENTER> for å godta dette, eller Ctrl-C for å avbryte og
starte på nytt å bygge etter å ha spesifisert mappen. I praksis kan
det hende at meldingen ikke vises til etter <ENTER> er
presset, dvs. bygget stopper.
Den mappen brukes for en (sannsynligvis tilfeldig) telemetriidentifikator. Opprette denne mappen i byggemappen og slette den etter installasjonen hindrer den i brukes.
MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none: Bruk system python for å lage et virtuelt miljø for mach uten å laste ned noen python wheels og uten å bruke systemets python moduler. Dette forhindrer versjonsfeil mellom systemmoduler og medfølgende moduler.
./mach build --verbose
: Bruk dette
alternativet hvis du trenger detaljer om hvilke filer som
kompileres, sammen med eventuelle C eller C++ flagg som brukes. Men
ikke legg til '--verbose' til installeringskommandoen siden det
ikke er akseptert der.
./mach build -jN
: Byggingen skal som
standard bruke alle tilgjengelige CPU kjerner. Hvis bruk av alle
kjernene får bygget til å bruke vekselminne fordi du har
utilstrekkelig minne, kan det gå raskere å bruke færre kjerner.
: BLFS pleide å foretrekke å bruke gcc og g++
i stedet for oppstrøms standardinnstillinger for clang programmer. Med utgivelsen av gcc-12
bygget tar lengre tid med gcc og g++, først og fremst fordi ekstra
advarsler, og er større. Angi disse miljøvariablene før du kjører configure skriptet hvis du
ønsker å fortsette å bruke gcc, g++. Bygging med GCC på i?86 er for
øyeblikket ødelagt.
CC=gcc
CXX=g++
Hvis du bruker et skrivebordsmiljø som Gnome eller KDE kan det være lurt å opprette en
firefox.desktop
fil sånn at
Firefox vises i panelets menyer.
Som root
bruker:
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
Applikasjonsinnstillingene for firefox er tilgjengelige ved å skrive about:config i adressefeltet.
Av og til, å få fungerende lyd i firefox kan være et problem. Skjønt oppstrøms foretrekker pulsaudio, bruk av Alsa kan være lettere.
Hvis du har aktivert Alsa for lyd, kan det hende du trenger å endre en variabel for å få fungerende lyd. Hvis du kjører firefox fra en terminal og prøv å spille noe med lyd kan du støte på feilmeldinger som:
Sandbox: seccomp sandbox violation: pid
3941, tid 4030, syscall 16, args 48 2147767296 139909894784796 0
0 0.
Det var på x86_64, på i686 er syscall nummeret 54. For å tillate denne syscall, i about:config forandre security.sandbox.content.syscall_whitelist til 16 (eller 54 hvis du bruker i686).
Hvis du bruker pulseaudio i et
skrivebordsmiljø, kan det allerede være startet av den DE. Men
hvis det ikke er det, skjønt firefox-57 klarte å starte den,
firefox-58 gjorde det ikke. Hvis du kjører firefox fra en terminal og
dette problemet er tilstede, å prøve å spille av lyd vil støte på
feilmeldinger advarsel Can't get cubeb
context!
Løsningen for dette er å lukke firefox, starte pulsaudio for å
sjekke om det starter (hvis ikke, les informasjonen om
konfigurering i PulseAudio-17.0) og start firefox på nytt
for å sjekke at det fungerer. Hvis det nå fungerer, legg til
følgende i din ~/.xinitrc
:
pulseaudio --verbose
--log-target=journald&
(dessverre, på noen
systemer fungerer ikke dette).
Det kan være lurt å bruke flere profiler i firefox. For å gjøre det, påkall firefox som firefox --ProfileManager. Du kan også sjekke hvilken profil som er i bruk fra about:profiles.
Selv om WebRender (bruker GPU for komposisjon) ikke brukes av standard, ser det nå ut til å fungere bra på støttet maskinvare (ATI, Nvidia og Intel GPUer med Mesa-18 eller nyere). For en forklaring, se hacks.mozilla.org. Den eneste ulempen ser ut til å være at på en maskin med begrenset RAM kan det hende det bruker mer RAM.
For å sjekke om WebRender brukes, se i about:support. I grafikk seksjonen, vil Compositing enten vise 'Basic' (dvs. ikke i bruk) eller 'WebRender'. For å aktivere det, gå til about:config og endre gfx.webrender.all til True. Du må starte firefox på nytt.
Det kan være nyttig å nevne prosessene fra firefox som kan dukke opp i top - så vel som firefox selv, kan det være flere Nettinnhold prosesser, og nå en RDD prosess (Remote Data Decoder) som vises når du spiller av nettvideoer kodet med av1 (libdav1d). Hvis WebRender har blitt aktivert, vil en GPU prosess også vises når firefox må oppdatere på nytt (f.eks. bla, åpne en ny fane eller spille av en video).