Firefox-115.8.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.1.

Informação do Pacote

[Nota]

Nota

O nome do diretório é firefox-115.8.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.26.0, dbus-glib-0.112, GTK+-3.24.41, libnotify-0.8.3, LLVM-17.0.6 (com clang, usado para bindgen mesmo se usar gcc), nodejs-20.11.1, PulseAudio-17.0 (ou alsa-lib-1.2.11 se você editar o mozconfig; agora obsoleto pela Mozilla), em qualquer caso, por favor, leiam-se as Informações de Configuração, Python-3.11.1 (construído depois de instalar SQLite-3.45.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.6.0, Doxygen-1.10.0, FFmpeg-6.1.1 (tempo de execução, para reproduzir arquivos mov, mp3 ou mp4), liboauth-1.0.3, pciutils-3.10.0 (tempo de execução), Valgrind-3.22.0, Wget-1.21.4, 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"
# Se você tiver uma máquina multi cores, todos os cores serão usados por padrão.

# Se você tiver instalado (ou instalará) o "wireless-tools" e desejar
# usar serviços de geolocalização da web, comente esta linha
ac_add_options --disable-necko-wifi

# Chaves de API para APIs de geolocalização - necko-wifi (acima) é exigido para MLS.
# Descomente a linha seguinte se desejar usar o Serviço de Localização do Mozilla
#ac_add_options --with-mozilla-api-keyfile=$PWD/mozilla-key

# Descomente a linha seguinte se desejar usar a API de geolocalização do Google
# (necessária para uso com mapas salvos com o Google Maps)
#ac_add_options --with-google-location-service-api-keyfile=$PWD/google-key

# notificação de inicialização é necessária desde o Firefox-78

# Descomente a seguinte opção se você não tiver instalado o PulseAudio
# e quiser usar o alsa
#ac_add_options --enable-audio-backends=alsa

# Comente as seguintes opções se você não tiver instalado
# as dependências recomendadas:
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

# Ao contrário do Thunderbird, embora usar o vinculador Gold possa
# economizar quatro megabytes no arquivo instalado, isso não torna
# a construção mais rápida.

# A biblioteca libdavid (decodificador av1) exige nasm. Descomente isto
# se o nasm não tiver sido instalado. Não descomente se você tiver o
# ffmpeg instalado.
#ac_add_options --disable-av1

# Você não pode distribuir o binário se fizer isto
ac_add_options --enable-official-branding

# A remoção agora está habilitada por padrão. Descomente estas linhas
# se você precisar executar um depurador:
#ac_add_options --disable-strip
#ac_add_options --disable-install-strip

# Desabilitar os símbolos de depuração torna a construção muito menor e um pouco
# mais rápida. Comente isto se você precisar executar um depurador. Observação: Isto é
# exigido para compilação em i686.
ac_add_options --disable-debug-symbols

# Foi informado que elf-hack causa instalações falhas (depois de construções bem-sucedidas)
# em algumas máquinas. Supõe-se que melhore o tempo de inicialização e reduza a libxul.so em
# alguns MB. Com lançamentos recentes do Binutils, o vinculador já suporta
# uma maneira muito mais segura e genérica para isso.
ac_add_options --disable-elf-hack
export LDFLAGS="$LDFLAGS -Wl,-z,pack-relative-relocs"

# Os(As) editores(as) do BLFS recomendam não mudar nada abaixo desta linha:
ac_add_options --prefix=/usr
ac_add_options --enable-application=browser
ac_add_options --disable-crashreporter
ac_add_options --disable-updater

# Habilitar os testes usará muito mais espaço e aumentará significativamente
# o tempo de construção, sem nenhum benefício óbvio.
ac_add_options --disable-tests

# O nível padrão de otimização novamente produz uma construção funcional com o 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

# O sandboxing funciona bem em x86_64, mas pode causar problemas em outras
# plataformas. Se não estiver em x86_64, por exemplo, i686, é recomendado
# descomentar a seguinte chave.
#ac_add_options --disable-sandbox

# Usar bibliotecas wasm em sandbox foi movido para todas as construções, em vez de
# apenas construções de automação do Mozilla. Exige pacotes extras llvm e foi
# informado que retarda seriamente a construção. Desative-o.
ac_add_options --without-wasm-sandboxed-libraries

# A opção seguinte desabilita o Informe de Telemetria. Com o Add-on Fiasco,
# constatou-se que a Mozilla estava coletando dados de usuário(a), incluindo senhas salvas
# e dados de formulários da web, sem o consentimento dos(as) usuários(as). Constatou-se, também,
# que a Mozilla estava enviando atualizações para sistemas sem o conhecimento ou permissão do(a)
# usuário(a). Como resultado disso, use o seguinte comando para desabilitar permanentemente
# os informes de telemetria no Firefox.
unset MOZ_TELEMETRY_REPORTING

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build-dir
EOF

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

As chaves de API do Google e Mozilla abaixo são específicas para o LFS. Se usar essas instruções para outra distribuição ou se 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 e https://location.services.mozilla.com/api respectivamente.

echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key
echo "613364a7-9418-4c86-bcee-57e32fd70c23" > mozilla-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          &&
export PYTHON311=/opt/python3.11/bin/python3.11     &&
$PYTHON311 ./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 &&
export PYTHON311=/opt/python3.11/bin/python3.11     &&
$PYTHON311 ./mach install

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

unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE
unset MOZBUILD_STATE_PATH
unset PYTHON311

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