"QtWebEngine" integra os recursos "web" do "chromium" no "Qt". Ele vem com a própria cópia dele do "ninja", a qual usa para a construção se não conseguir encontrar uma cópia de sistema, e várias cópias de bibliotecas originárias do "ffmpeg", "icu", "libvpx" e "zlib" (incluindo "libminizip"), as quais foram bifurcadas pelos(as) desenvolvedores(as) do "chromium".
Esse pacote, e os navegadores que o usam, possivelmente seja útil se você precisar usar um sítio da "web" projetado para navegadores "Chrome" ou "Chromium" da "Google".
QtWebEngine usa uma cópia bifurcada do chromium e, portanto, é vulnerável a muitos problemas encontrados lá. Os(As) desenvolvedores(as) do Qt parecem bifurcar uma versão mais recente para versões secundárias do Qt, porém como o chromium muda para versões mais recentes muito frequentemente, no momento em que os(as) desenvolvedores(as) do Qt obtém uma versão bifurcada para passar em nos testes estendidos deles(as), ela é sempre uma versão antiga e correções de segurança provenientes do chromium (algumas das quais tem um número CVE) podem levar vários meses para aparecer em um lançamento do QtWebengine, mesmo se a gravidade tenha sido classificada como Crítica.
Portanto, você deveria ter cuidado ao usar o QtWebEngine em um contexto sensível e deveria sempre atualizar para o próximo lançamento assim que ela aparecer neste livro, mesmo que não esteja sinalizada como uma Atualização de Segurança. Identificar quais vulnerabilidades tenham sido corrigidas em um lançamento específico exige puxar a ramificação 'based-NNN' apropriada, pouco antes dos lançamentos anteriores e atuais e frequentemente é impraticável. Informes de itens de QTBUG corrigidos não parecem estar disponíveis e não existe nenhuma documentação no tarball para mudanças depois das versões qt-5.
Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.2.
Por padrão, o ninja usará todas as CPUs online mais duas (se existirem pelo menos quatro), mesmo que elas não estejam disponíveis para a tarefa atual porque o terminal de construção tenha sido restringido com o 'taskset'. No BLFS, esse pacote leva mais tempo para construir que qualquer outro. Em um exemplo, a construção desse pacote travou no ponto de cerca de noventa por cento (90%) devido a um problema de falta de memória em um sistema com vinte e quatro (24) elementos de processamento e trinta e dois (32) GB de memória.
Para contornar isso, vejam-se as Explicações do Comando abaixo.
Transferência (HTTP): https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtwebengine-everywhere-src-6.7.2.tar.xz
Soma de verificação MD5 da transferência: 650bacb77f1fa3d4843e0667df07a1b8
Tamanho da transferência: 525 MB
Espaço em disco estimado exigido: 8,7 GB (335 MB instalado)
Tempo de construção estimado: 40 UPC (Usando paralelismo=8)
Cups-2.4.10, html5lib-1.1, nodejs-20.16.0, nss-3.103, pciutils-3.13.0 e Qt-6.7.2
Se esses pacotes não estiverem instalados, [então] o processo de construção compilará e instalará a própria versão dele (talvez mais antiga), com o efeito colateral de aumentar a construção e espaço instalado em disco e o tempo de construção.
ou alsa-lib-1.2.12 ou PulseAudio-17.0 (ou ambos), FFmpeg-7.0.2, ICU-75.1, libwebp-1.4.0, libxslt-1.1.42 e Opus-1.5.2
libevent-2.1.12, MIT Kerberos V5-1.21.3, pipewire-1.2.3, Poppler-24.08.0, jsoncpp, libsrtp, snappy
Primeiro, adapte a cópia incluída do Chromium para a versão mais recente do ffmpeg:
patch -Np1 -d src/3rdparty/chromium < ../qtwebengine-6.7.2-ffmpeg7_fixes-1.patch
Em seguida, corrija uma falha de construção que ocorre porque a construção do BLFS do ffmpeg não usa OpenH264:
sed -e '189 s/=/& false/' \ -e '190 d' \ -i.orig src/3rdparty/chromium/third_party/webrtc/webrtc.gni
Instale o "qtwebengine" executando os seguintes comandos:
mkdir build && cd build && cmake -D CMAKE_MESSAGE_LOG_LEVEL=STATUS \ -D QT_FEATURE_webengine_system_ffmpeg=ON \ -D QT_FEATURE_webengine_system_icu=ON \ -D QT_FEATURE_webengine_system_libevent=ON \ -D QT_FEATURE_webengine_proprietary_codecs=ON \ -D QT_FEATURE_webengine_webrtc_pipewire=ON \ -D QT_BUILD_EXAMPLES_BY_DEFAULT=OFF \ -G Ninja .. && ninja
Esse pacote não vem com uma suíte de teste.
Agora, como o(a) usuário(a) "root
":
ninja install
CMAKE_MESSAGE_LOG_LEVEL=STATUS
:
Produz mensagens interessantes nas quais usuários(as) do projeto
possam estar interessados(as). Idealmente, deveriam ser concisas,
não mais que uma linha, porém ainda informativas.
QT_FEATURE_webengine_system_*
:
Especifique quais pacotes externos o sistema deveria usar.
QT_BUILD_EXAMPLES_BY_DEFAULT=OFF
: Não
construa exemplos por padrão.
NINJAJOBS=4 make
: Se você remendou o
"ninja" do sistema no LFS para reconhecer a variável de ambiente
"NINJAJOBS," [então] esse comando executará o "ninja" do sistema
com o número especificado de tarefas (ou seja, quatro). Existem
várias razões pelas quais você poderia querer usar opções como
essa:
Construir em um subconjunto de "CPUs" permite medir o tempo
de construção para um número menor de processadores e (ou)
executar outras tarefas com uso intensivo da "CPU" ao mesmo
tempo. Para um(a) editor(a) em uma máquina com muitas "CPUs",
tentando medir o tempo de construção para uma máquina com
quatro "CPUs", "NINJAJOBS=4 make
"
fornecerá uma aproximação razoável (existe um curto período
onde N+2 tarefas "python" e "node" executam).
Em uma máquina com somente quatro "CPUs" "online", o padrão de agendamento de tarefas N+2 para o "qtwebengine" é mais lento entre três por cento (3%) e sete por cento (7%), provavelmente devido ao tamanho dos arquivos" C++" e às muitas inclusões e modelos deles. Portanto, se em dúvida, [então] configure "NINJAJOBS" para o número de "CPUs".
Reduzindo o número de núcleos sendo usados em execução prolongada, os pacotes com uso intensivo de "CPU" possivelmente aliviem os problemas de aquecimento.
Reduzir o número de núcleos evitará potenciais problemas de falta de memória em sistemas que não tenham memória suficiente (ou troca) quando todos os núcleos estiverem ativos. Uma abordagem sugerida é a de limitar o número de núcleos a cerca de um núcleo para cada 1,5 GB de "RAM" e espaço de troca combinados.
Se estiver atualizando a partir de uma versão secundária mais
antiga desse aplicativo, [então] para algumas páginas da "Web"
carregarem, você possivelmente precise limpar os "caches" do
navegador; por exemplo.
para o "falkon" eles serão
encontrados em "~/.cache/falkon/
".
Você precisará fazer isso se o navegador começar a renderizar a
página e então mudar para uma guia em branco com uma mensagem de
que algo deu errado e um botão para Tentar novamente. Mesmo
depois de remover os "caches" antigos, você possivelmente precise
tentar novamente algumas vezes para cada guia afetada.
Se um navegador usando esse pacote falhar ao executar e quando executado a partir de um terminal ele informar "Trace/breakpoint trap", isso provavelmente é um problema de configuração do núcleo - não existe necessidade de reconstruir o "QtWebEngine"; veja-se a próxima seção, recompile o núcleo e reinicie para o novo núcleo.
Esse pacote não exige nenhum dos itens opcionais de espaço de nome do núcleo, mas se o espaço de nome de Usuário(a) estiver habilitado , [então] o espaço de nome de "PID" também precisa ser habilitado. Nesse caso, habilite as seguintes opções na configuração do núcleo e recompile o núcleo se necessário:
General setup ---> -*- Namespaces support ---> [NAMESPACES] # Enable or disable *both* of them: [ /*] User namespace [USER_NS] [ /*] PID Namespaces [PID_NS]