Firefox-128.1.0esr

Introdução ao Firefox

Firefox é um navegador autônomo baseado na base de código Mozilla.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.2.

Informação do Pacote

[Nota]

Nota

O nome do diretório é firefox-128.1.0

Extrair o tarball reconfigurará as permissões do diretório atual para 0755, se você tiver permissão para fazer isso. Se você fizer isso em um diretório onde o bit sticky estiver configurado, como /tmp, ela terminará com mensagens de erro:

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

Isso finaliza com situação diferente de zero, mas NÃO significa que existe um problema real. Não desempacote como o(a) usuário(a) root em um diretório onde o bit sticky estiver configurado - isso irá desconfigurá-lo.

Tal como acontece com outros pacotes grandes que usam C++ (ou rust), os tempos de UPC para construir isso variam mais amplamente que você poderia esperar. Os tempos de construção aumentarão significativamente se tua máquina tiver que trocar.

Embora o(a) desenvolvedor(a) prefira usar PulseAudio, no momento Alsa ainda pode ser usado. Ambos possivelmente precisem de configuração de tempo de execução para que o som funcione.

Dependências do Firefox

Exigidas

Cbindgen-0.27.0, GTK+-3.24.43, libnotify-0.8.3, LLVM-18.1.7 (com clang, usado para bindgen mesmo se usar gcc), nodejs-20.16.0, PulseAudio-17.0 (ou alsa-lib-1.2.12 se você editar o mozconfig; agora obsoleto pela Mozilla), em qualquer caso, por favor, leiam-se as Informações de Configuração, Python-3.12.5 (depois de instalar SQLite-3.46.1), startup-notification-0.12 e UnZip-6.0

Recomendadas

[Nota]

Nota

Se você não instalar as dependências recomendadas, então cópias internas desses pacotes serão usadas. Elas podem ter sido testadas para funcionar, mas podem estar desatualizadas ou conter falhas de segurança.

Opcionais

cURL-8.9.1, Doxygen-1.12.0, FFmpeg-7.0.2 (tempo de execução, para reproduzir arquivos mov, mp3 ou mp4), GeoClue-2.7.1 (tempo de execução), liboauth-1.0.3, pciutils-3.13.0 (tempo de execução), Valgrind-3.23.0, Wget-1.24.5, Wireless Tools-29, yasm-1.3.0, libproxy

Observações de Editor(a): https://wiki.linuxfromscratch.org/blfs/wiki/firefox

Instalação do Firefox

A configuração do Firefox é realizada criando-se um arquivo mozconfig contendo as opções desejadas de configuração. Um mozconfig padrão é criado abaixo. Para ver a lista completa de opções de configuração disponíveis (e uma descrição abreviada de algumas delas), emita ./mach configure -- --help | less. Você também possivelmente revise o arquivo inteiro e descomente quaisquer outras opções desejadas. Crie o arquivo emitindo o seguinte comando:

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

Adapte dois arquivos para compatibilidade com cbindgen-0.27.0 ou posterior:

sed 's/input.try/&_parse/' \
    -i servo/components/style_traits/values.rs &&
sed '0,/"Keyframe"/{//d}' -i servo/ports/geckolib/cbindgen.toml

Se construir com o ICU do sistema, adapte o mapeamento de quebra de linha para ICU 74 ou posterior. Esta construção adiciona cinco entradas para um vetor c++.

for i in {43..47}; do
   sed -i '/ZWJ/s/}/,CLASS_CHARACTER&/' intl/lwbrk/LineBreaker.cpp 
done

Compile o Firefox emitindo os seguintes comandos:

Se as APIs de geolocalização forem necessárias:

[Nota]

Nota

A chave de API do Google abaixo é específica para o LFS. Se usar essas instruções para outra distribuição ou se você pretender distribuir cópias binárias do software usando essas instruções, por favor, obtenha as tuas próprias chaves seguindo as instruções localizadas em https://www.chromium.org/developers/how-tos/api-keys.

echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key
[Nota]

Nota

Se você estiver compilando esse pacote em chroot, você precisa assegurar que /dev/shm esteja montado. Se você não fizer isso, a configuração do Python falhará com um informe de rastreamento reverso referenciando /usr/lib/pythonN.N/multiprocessing/synchronize.py. Como o(a) usuário(a) root, execute:

mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm

Agora invoque o conjunto de comandos sequenciais Python mach para compilar o pacote.

export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none &&
export MOZBUILD_STATE_PATH=${PWD}/mozbuild          &&
./mach build

O mozconfig acima desabilita os testes porque eles usam muito mais tempo e espaço em disco sem nenhum benefício óbvio. Se você, mesmo assim, os tiver ativado, poderá executar os testes executando ./mach gtest. Isso exigirá uma conexão de rede de intercomunicação e será executado a partir de uma sessão do Xorg - existe uma caixa de diálogo pop-up quando ele falha ao se conectar ao ALSA (isso não cria um teste com falha). Um ou dois testes falharão. Para ver os detalhes da(s) falha(s), você precisará registrar a saída gerada a partir desse comando, de forma que consiga revisá-la(s).

Agora, como o(a) usuário(a) root:

export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none &&
./mach install

Esvazie as variáveis de ambiente que foram configuradas acima:

unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE
unset MOZBUILD_STATE_PATH

Explicações do Comando

export MOZBUILD_STATE_PATH=${PWD}/mozbuild: A construção te informa que pretende criar ~/.mozbuild e te oferece uma opção para pressionar <ENTER> para aceitar isso ou Ctrl-C para cancelar e reiniciar a construção depois de especificar o diretório. Na prática, a mensagem possivelmente não apareça até depois do <ENTER> ser pressionado, ou seja, a construção para.

Esse diretório é usado para um (provavelmente aleatório) identificador de telemetria. Criar esse diretório dentro do construção da construção e deletá-lo depois da instalação evita que seja usado.

MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none: Use o Python do sistema para criar um ambiente virtual para o mach sem baixar nenhuma roda Python e sem usar os módulos Python do sistema. Isso evita incompatibilidades de versão entre módulos do sistema e os incluídos.

./mach build --verbose: Use essa alternativa se você precisar de detalhes a respeito de quais arquivos estão sendo compilados, juntamente com quaisquer sinalizadores C ou C++ sendo usados. Mas não adicione '--verbose' ao comando de instalação, pois não é aceito lá.

./mach build -jN: A construção deveria, por padrão, usar todos os Elementos de Processamento de CPU online. Se usar todos os Elementos de Processamento fizer com que a construção use a área de troca porque você tem memória insuficiente, usar menos Elementos de Processamento poderá ser mais rápido.

CC=gcc CXX=g++: o BLFS costumava preferir usar gcc e g++ em vez dos padrões do(a) desenvolvedor(a) dos aplicativos clang. Com o lançamento do gcc-12, a construção demora mais tempo com gcc e g++, principalmente por causa de avisos extras, e é maior. Configure essas variáveis de ambiente antes de você executar o conjunto de comandos sequenciais de configuração se desejar continuar a usar gcc, g++. Construir com GCC no i?86 atualmente está quebrado.

Configurando o Firefox

Se você usa um ambiente de área de trabalho, como Gnome ou KDE, você possivelmente queira criar um arquivo firefox.desktop, de forma que o Firefox apareça nos menus do painel. Como o(a) usuário(a) 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=Navegador da Web Firefox
Comment=Navegue a World Wide Web
GenericName=Navegador da Web
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

Informação de Configuração

As configurações de aplicativo para o Firefox são acessíveis digitando-se about:config na barra de endereço.

Ocasionalmente, conseguir som que funcione no firefox pode ser um problema. Embora o(a) desenvolvedor(a) prefira o pulseaudio, no geral, usar Alsa possivelmente seja mais fácil.

Se você habilitou o Alsa para som, você possivelmente precise alterar uma variável para obter som funcional. Se executar o firefox a partir de um terminal e tentar reproduzir algo com som, você poderá encontrar mensagens de erro como:

Sandbox: seccomp sandbox violation: pid 3941, tid 4030, syscall 16, args 48 2147767296 139909894784796 0 0 0.

Isso foi em x86_64, em i686 o número da chamada de sistema é 54. Para permitir esse chamada de sistema, em about:config mude security.sandbox.content.syscall_whitelist para 16 (ou 54 se usar i686).

Se usar pulseaudio em um ambiente de área de trabalho, ele já poderá ter sido iniciado por esse Ambiente. Mas se não tiver, embora o Firefox-57 conseguisse iniciá-lo, o Firefox-58 não consegue. Se executar o firefox a partir de um terminal e esse problema estiver presente, ao tentar reproduzir o som, você encontrará mensagens de erro avisando Can't get cubeb context!

A correção para isso é fechar o firefox, iniciar o pulseaudio para verificar se ele inicia (se não, leiam-se as informações em Configuração em PulseAudio-17.0) e reiniciar o firefox para verificar se está funcionando. Se agora funcionar, adicione o seguinte ao teu ~/.xinitrc: pulseaudio --verbose --log-target=journald& (infelizmente, em alguns sistemas, isso não funciona).

Você possivelmente deseje usar vários perfis no Firefox. Para fazer isso, invoque o Firefox como firefox --ProfileManager. Você também pode verificar qual perfil está em uso no momento a partir de about:profiles.

Embora o WebRender (usando a GPU para composição) não seja usado por padrão, agora parece funcionar bem em hardware compatível (GPUs ATI, Nvidia e Intel com Mesa-18 ou posterior). Para uma explicação, por favor, veja-se hacks.mozilla.org. A única desvantagem parece ser que, em uma máquina com RAM limitada, ele poderá usar mais RAM.

Para verificar se o WebRender está sendo usado, consulte about:support. Na seção Gráficos, a Composição ou mostrará 'Básico' (ou seja, não em uso) ou 'WebRender'. Para habilitá-lo, acesse about:config e mude gfx.webrender.all para True. Você precisará reiniciar o Firefox.

Possivelmente seja útil mencionar os processos provenientes do Firefox que podem aparecer no top - assim como o próprio firefox, possivelmente existam vários processos de Conteúdo da Web e agora um processo RDD (Remote Data Decoder) que aparece quando reproduzindo vídeos da web codificados com av1 (libdav1d). Se o WebRender tiver sido habilitado, um Processo de GPU também aparecerá quando o Firefox tiver que repintar (por exemplo, rolar, abrir uma nova guia ou reproduzir um vídeo).

Conteúdo

Aplicativos Instalados: firefox
Bibliotecas Instaladas: Numerosas bibliotecas, componentes de navegador, plug-ins, extensões e módulos auxiliares instalados em /usr/lib/firefox
Diretório Instalado: /usr/lib/firefox

Descrições Curtas

firefox

é um navegador GTK+-3 da Internet que usa o mecanismo de renderização Mozilla Gecko