QtWebEngine-5.15.17

Introduksjon til QtWebEngine

QtWebEngine integrerer chromium sin nettfunksjoner i Qt. Den sender med sin egen kopi av ninja som den bruker til byggingen hvis den ikke kan finne en systemkopi og forskjellige kopier av biblioteker fra ffmpeg, icu, libvpx, og zlib (inkludert libminizip) som har blitt skilt ut av chromium utviklere.

Denne pakken og nettlesere som bruker den kan være nyttig hvis du trenger å bruke et nettsted utviklet for google chrome, eller chromium, nettlesere.

[Important]

Important

Qt-5.15 nådde End Of Life 26. mai 2023. Forlenget levetid Qt5.15 LTS har blitt forlenget til 26. mai 2025 for de med abonnementslisenser. Fordi qtwebengine bruker chromium kode under LGPL, ser det ut til at noen nye tilbakeporterte CVE reparasjoner for QtWebEngine vil være tilgjengelige etter at Qt lager offentlige utgivelser av gjeldende versjoner.

[Warning]

Warning

QtWebEngine bruker en utskilt kopi av chromium, og er derfor sårbar til mange problemer som finnes der. Qt utviklerne har alltid foretrukket å lage utgivelser samtidig som resten av Qt (i stedet for å legge til nødrettinger), men med stabile versjoner som blir utgitt etter gjeldende utviklingsversjon. Nå som de er opptatt av å flytte til Qt6, har 5.15.3 og senere Qt-5.15 utgivelser er i utgangspunktet kun tilgjengelige for betalende kunder. QtWebEngine er noe av et unntak på grunn av sin LGPL lisens, men får git kildene (med utskilt chromium undermodul) til en posisjon hvor det lykkes med å bygge videre på et nåværende BLFS system kan kreve mye arbeid og derfor kan oppdateringer av boken bli forsinket.

Det virker sannsynlig at fremtidige 5.15 serieversjoner også vil bli utgitt lenge etter at chromium sårbarhetene er kjent, men fikser for QtWebEngine finnes i git, og redaktørene mener at kjente sårbarheter i nettlesere bør fikses.

Tarballen lenket nedenfor ble opprettet fra 5.15 git grenen og 87 grenen til chromium undermodulen (som er utskilt fra chromium). Se GIT-VERSIONS filen i tarballen for detaljer om siste forpliktelser.

Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.1 plattform.

[Warning]

Warning

Som standard vil ninja bruke alle online CPUer +2 (hvis minst 4 finnes), selv om de ikke er tilgjengelige for gjeldende oppgave på grunn av at byggeterminalen har blitt begrenset med 'oppgavesett'. I BLFS, denne pakken tar mer tid å bygge enn noen annen. I ett eksempel, konstruksjonen av denne pakken krasjet ved omtrent 90 prosent punktet på grunn av et lite minneproblem på et system med 24 kjerner og 32 GB av minne.

For å omgå dette, se kommandoforklaringene nedenfor.

[Note]

Note

Hvis du oppgraderer og har installert en nyere versjon av ICU-74.2 siden du sist installerte Qt-5.15.12, må du installere Qt5 på nytt før oppgraderingen, ellers vil den siste lenken av denne pakken mislykkes med en advarsel om at versjonen av icu bibliotekene som trengs av libQt5Core.so kan komme i konflikt med versjonen som brukes til denne pakken.

Uvanlig er det leverte GN byggesystemet (brukt til å lage Ninja filene) krever en statisk libstdc++.a selv om de installerte bibliotekene bruker den delte versjonen riktig. Hvis et statisk bibliotek ikke er til stede, vil byggingen mislykkes ganske raskt. Vær oppmerksom på at hvis du prøver å bygge webengine som en del av Qt og det statiske biblioteket ikke er tilgjengelig, vil den byggingen enten fullføres uten å installere webengine, eller mislykkes under installasjonen (begge varianter ble observert i 5.12.0).

Pakkeinformasjon

Ytterligere Nedlastinger

qtwebengine Avhengigheter

Påkrevd

nodejs-20.11.1, nss-3.98, pciutils-3.10.0, Python-3.11.1, og (Qt-5.15.12 eller qt-components-5.15.12 med qtlocation og qtwebchannel)

Anbefalt

[Note]

Note

Hvis disse pakkene ikke er installert, vil byggeprosessen kompilere og installere sin egen (kanskje eldre) versjon, med bivirkning av økt bygg og installert diskplass og byggetid.

Valgfri

libevent-2.1.12, MIT Kerberos V5-1.21.2, pipewire-1.0.3, Poppler-24.02.0, jsoncpp, libsrtp, snappy

Installasjon av qtwebengine

Bruk en oppdatering for å fikse flere problemer som kan forhindre at byggingen fullføres, og for å tvinge den til å bruke python3:

patch -Np1 -i ../qtwebengine-5.15.17-build_fixes-2.patch

Hvis du bygger med systemets FFmpeg-6.1.1 som redaktørene anbefaler, bruk en oppdatering som løser problemer når du bygger med ffmpeg-5 og senere:

patch -Np1 -i ../qtwebengine-5.15.17-ffmpeg5_fixes-1.patch

Selv om build_fixes oppdateringen har sørget for at git ikke blir påkalt under byggingen, byggesystemet har labyrintiske regler for bysantinsk kompleksitet, og spesielt prøver å bygge uten to .git mapper vil føre til at den til slutt faller inn i uventet og ubyggbar kode som refererer til en privat deklarasjon som ikke er opprettet. Unngå dette ved å opprette de nødvendige mappene:

mkdir -pv .git src/3rdparty/chromium/.git

Fordi denne versjonen av qtwebengine er rettet mot en senere utgivelse enn nåværende offentlige utgivelser, endre den for å bygge for qt-5.15.12 ved bruk av sed:

sed -e '/^MODULE_VERSION/s/5.*/5.15.12/' -i .qmake.conf

Sørg nå for at de lokale deklarasjonene er tilgjengelige når du ikke bygger som del av det komplette Qt-5.15.12:

find -type f -name "*.pr[io]" |
  xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |'

Deretter lar du pulsaudio biblioteket koble på byggetidspunktet i stedet for kjøretid. Dette forhindrer også et problem med nyere pulsaudio:

sed -e '/link_pulseaudio/s/false/true/' \
    -i src/3rdparty/chromium/media/media_options.gni

Deretter fikser du en byggefeil som oppstår når libxml2-2.12.0 eller nyere er installert:

sed -e 's/xmlError/const xmlError/' \
-i src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor.h \
-i src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc

Installer qtwebengine ved å kjøre følgende kommandoer:

mkdir build &&
cd    build &&
PATH=/opt/python3.11/bin:$PATH qmake .. --                  \
                                        -system-ffmpeg      \
                                        -proprietary-codecs \
                                        -webengine-icu      &&
make

Denne pakken kommer ikke med en testpakke.

Nå, som root bruker:

make install

Fjern referanser til byggemappen fra installert bibliotek avhengighetsfiler (prl) ved å kjøre følgende kommandoer som root bruker:

find $QT5DIR/ -name \*.prl \
   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

Parameterforklaringer

PATH=/opt/python3.11/bin:$PATH: Denne bryteren tvinger denne pakken å bruke versjonen av Python 3.11 som er installert i /opt. Dette gjøres for å redusere sjansene for problemer som kan oppstå under byggingen, og for å forenkle instruksjonene siden denne pakken er inkompatibel med Python 3.12 uten ytterligere modifikasjoner.

qmake: Dette vil bygge den inkluderte kopien av ninja hvis den ikke allerede er installert og bruke den til å konfigurere bygget.

-- -system-ffmpeg -proprietary-codecs -webengine-icu: Hvis noen alternativer sendes til qmake må de komme etter '--' som må følge '..' som peker til hovedmappen. Alternativene her får den til å bruke system ffmpeg og system icu. Alternativet '-proprietary-codecs' tillater ffmpeg for å dekode H264 og H265 kodeker. Hvis bygget er en del av full Qt5, vil system icu brukes automatisk (bare) av Qt5Core hvis det er tilgjengelig, men med mindre dette alternativet brukes, vil webengine alltid bruke sin sendte kopi av icu, som legger til tid og plass til bygget. Fjern -system-ffmpeg bryteren hvis du ikke har FFmpeg-6.1.1 installert og ønsker å bygge denne pakken med en intern kopi av ffmpeg.

-webengine-jumbo-build 0: Hvis dette legges til qmake kommandoen vil det føre til at 'Jumbo Build Merge Limit' blir rapportert som 'no' i stedet for 8. Det slår av jumbo bygget. Noen distroer gjør det for å få en mindre bygging på noen arkitekturer som MIPS. På x86_64 kan den spare litt plass i bygget, men byggetiden vil øke med en veldig stor mengde.

-webengine-kerberos: Legg til denne hvis du har installert MIT Kerberos V5-1.21.2 og ønsker å koble til fra en nettleser ved hjelp av QtWebEngine til en webserver som krever at du kobler deg til via kerberos.

NINJAJOBS=4 make: Hvis du oppdaterte system ninja i LFS til å gjenkjenne miljøvariabelen NINJAJOBS, vil denne kommandoen kjøre systemets ninja med det angitte antall jobber (dvs. 4). Det er flere grunner til at du kanskje vil bruke alternativer som dette:

  • Å bygge på et undersett av CPUer gjør det mulig å måle byggetiden for et mindre antall prosessorer, og/eller kjører andre CPU intensive oppgaver samtidig. For en redaktør på en maskin med mange CPUer, å prøve å måle byggetiden for en 4-CPU maskin, NINJAJOBS=4 make vil gi en rimelig tilnærming (det er en kort periode hvor N+2 python og node jobber kjøres).

  • På en maskin med bare 4 CPUer tilgjengelig, standard planlegging med N+2 jobber for qtwebengine er tregere med mellom 3% og 7%, sannsynligvis på grunn av størrelsen på C++ filene og deres mange inkluderinger og maler. Derfor, hvis du er i tvil, sett NINJAJOBS til antall CPUer.

  • Å redusere antall kjerner som brukes på langvarig CPU intensive pakker kan hjelpe på varmeproblemer.

  • Redusering av antall kjerner vil forhindre potensielt tomt minne problemer på systemer som ikke har nok minne (eller vekselminne) når alle kjerner er aktive. En foreslått tilnærming er å begrense antall kjerner til omtrent en kjerne for hver 1,5 GB av kombinert RAM og vekselminne.

Konfigurere QtWebEngine

Konfigurasjonsinformasjon

Hvis du oppgraderer fra en eldre mindre versjon av denne applikasjon, for at enkelte nettsider skal lastes, må du kanskje fjerne nettleseren sin mellomlagring, f.eks. til falkon vil de bli funnet i ~/.cache/falkon/. Du må gjøre dette hvis nettleseren begynner å gjengi siden og endres deretter til en tom fane med en melding at noe gikk galt, og en knapp for å prøve på nytt. Til og med etter at du har fjernet de gamle mellomlagrene, kan det hende du må prøve noen ganger for hver berørt fane.

Hvis en nettleser som bruker denne pakken ikke klarer å kjøre og når den kjøres fra en term rapporterer det 'Trace/breakpoint trap', dvs sannsynligvis et problem med kjernekonfigurasjon - det er ikke nødvendig å gjenoppbygge QtWebEngine, se neste avsnitt, kompiler på nytt kjernen og start på nytt til den nye kjernen.

Kjernekonfigurasjon

Denne pakken krever ingen av de valgfrie kjernenavneromselementene, men hvis brukernavneområdet er aktivert (som skjer i noen enhetsfiler, for økt sikkerhet) PID navneområde må også være aktivert. Aktiver i så fall følgende alternativer i kjernekonfigurasjonen og kompiler kjernen på nytt om nødvendig:

General setup --->
  -*- Namespaces support --->                                       [NAMESPACES]
    # Enable or disable *both* of them:
    [ /*] User namespace                                               [USER_NS]
    [ /*] PID Namespaces                                                [PID_NS]

Innhold

Installerte Programmer: qtwebengine_convert_dict og QtWebEngineProcess (in $QT5DIR/libexec)
Installerte Biblioteker: libQt5Pdf.so, libQt5PdfWidgets.so, libQt5WebEngineCore.so, libQt5WebEngine.so, og libQt5WebEngineWidgets.so
Installerte Mapper: $QT5DIR/include/QtPdf, $QT5DIR/include/QtPdfWidgets, $QT5DIR/include/QtWebEngine, $QT5DIR/include/QtWebEngineCore, $QT5DIR/include/QtWebEngineWidgets, $QT5DIR/qml/QtWebEngine, og $QT5DIR/translations/qtwebengine_locales

Korte Beskrivelser

qtwebengine_convert_dict

konverterer hunspell ordbøker (.dic) til chromium format (.bdic)

QtWebEngineProcess

er et libexec program som kjører en zygote prosess (en som lytter for spawn forespørsler fra en masterprosess, og vil gå inn i respons)

libQtWebEngine.so

gir QML typer for gjengivelse av nettinnhold i en QML applikasjon

libQtWebEngineCore.so

gir offentlig API som deles av både QtWebEngine og QtWebEngineWidgets

libQtWebEngineWidgets.so

gir en nettlesermotor samt C++ klasser for å gjengi og samhandle med nettinnhold