Firefox-128.2.0esr

Introduksjon til Firefox

Firefox er en frittstående nettleser basert på Mozilla kodebasen.

[Notat]

Notat

Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden den siste stabile versjonene av bøkene.

Pakkeinformasjon

[Notat]

Notat

Mappenavnet er firefox-128.2.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.

Firefox Avhengigheter

Påkrevd

Cbindgen-0.27.0, GTK+-3.24.43, libnotify-0.8.3, LLVM-19.1.0 (med clang, brukes til bindgen selv om man bruker gcc), nodejs-20.17.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.6 (etter installasjonen av SQLite-3.46.1), startup-notification-0.12, og UnZip-6.0

Anbefalt

[Notat]

Notat

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.

Valgfri

cURL-8.10.1, Doxygen-1.12.0, FFmpeg-7.0.2 (kjøretid, for å spille mov, mp3 eller mp4 files), GeoClue-2.7.2 (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

Installasjon av 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

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:

[Notat]

Notat

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
[Notat]

Notat

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

Parameterforklaringer

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.

CC=gcc CXX=g++: 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.

Konfigurere Firefox

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

Konfigurasjonsinformasjon

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=syslog& (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).

Innhold

Installerte Programmer: firefox
Installerte Biblioteker: Tallrike biblioteker, nettleserkomponenter, programtillegg, utvidelser og hjelpemoduler installert i /usr/lib/firefox
Installert Mappe: /usr/lib/firefox

Korte Beskrivelser

firefox

er en GTK+-3 nettleser som bruker Mozilla Gecko gjengivelsesmotoren