Firefox é um navegador autônomo baseado na base de código Mozilla.
Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.
Transferência (HTTP): https://archive.mozilla.org/pub/firefox/releases/102.8.0esr/source/firefox-102.8.0esr.source.tar.xz
Soma de verificação MD5 da transferência: 2f65e84943e97f6d56d7b07aa1ded135
Tamanho da transferência: 457 MB
Espaço em disco estimado exigido: 7,0 GB (197 MB instalado) sem testes
Tempo de construção estimado: 20 UPC usando -j4, sem testes
O nome do diretório é firefox-102.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 esteja configurado, como o
/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 termina 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 esteja
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.
Autoconf-2.13, Cbindgen-0.24.3, dbus-glib-0.112, GTK+-3.24.36, libnotify-0.8.1, LLVM-15.0.7 (com clang, usado para bindgen mesmo se usar gcc), nodejs-18.14.1, PulseAudio-16.1 (ou alsa-lib-1.2.8 se você editar o mozconfig; agora obsoletado pelo Mozilla); em quaisquer casos, por favor, leia as Informações de Configuração, Python-3.11.2 (reconstruído depois de instalar o SQLite-3.40.1), startup-notification-0.12, UnZip-6.0, yasm-1.3.0 e Zip-3.0
ICU-72.1, libevent-2.1.12, libvpx-1.13.0, libwebp-1.3.0, NASM-2.16.01, nss-3.88.1
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.
cURL-7.88.1, Doxygen-1.9.6, FFmpeg-5.1.2 (tempo de execução, para reproduzir arquivos mov, mp3 ou mp4), liboauth-1.0.3, Valgrind-3.20.0, Wget-1.21.3, Wireless Tools-29, libproxy
Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/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 &&
./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 Elementos de Processamento, todos os Elementos de Processamento 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.
# libdavid (decodificador av1) exige nasm. Descomente isto se o nasm
# não tiver sido instalado. Não descomente se você tiver o
# ffmpeg-5 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 o 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 - comente isto se você souber que tua máquina não é afetada.
ac_add_options --disable-elf-hack
# 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
# enabling the tests will use a lot more space and significantly
# increase the build time, for no obvious benefit.
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
# 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
Compile o Firefox emitindo os seguintes comandos:
Uma mudança em cbindgen-0.24.2 faz com que um símbolo seja agora gerado pelo cbindgen, mas ele já foi definido em um cabeçalho. Este sed evita que a compilação falhe:
sed -i '/ROOT_CLIP_CHAIN/d' gfx/webrender_bindings/webrender_ffi.h
Se as APIs de geolocalização forem necessárias:
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
Se você estiver compilando esse pacote em chroot, você precisa
fazer duas coisas. Primeiro, como o(a) usuário(a) root
, certifique-se de que /dev/shm
esteja montado. Se você não fizer
isso, a configuração do Python
falhará com um informe de rastreamento referenciando /usr/lib/pythonN.N/multiprocessing/synchronize.py
.
Execute:
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
Segundo, como o(a) usuário(a) root
exporte a variável de ambiente
$SHELL
usando export SHELL=/bin/sh ou, então,
preceda SHELL=/bin/sh
ao executar os
comandos ./mach.
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 configure && ./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
:
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 MOZBUILD_STATE_PATH
export
MOZBUILD_STATE_PATH=${PWD}/mozbuild: A construção
agora deve te informar que pretende criar ~/.mozbuild
e oferecer a você 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 identificador de telemetria
(provavelmente aleatório). Criar isso no diretório de construção, e
deletá-lo depois da instalação, evita que seja usado. Se você
deseja participar da telemetria, exporte MOZBUILD_STATE_PATH para
apontar para o diretório padrão dele e remova a entrada do
mozconfig
.
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 nem usar os módulos Python do sistema. Isso evita incompatibilidades de versão entre os módulos do sistema e os incluídos.
./mach configure:
Isso valida as dependências fornecidas e o mozconfig
.
./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.
: 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.
CC=gcc
CXX=g++
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
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-16.1) 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).