QtWebEngine-5.15.15
      
      
        
          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]](../images/important.png) 
          
            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]](../images/warning.png) 
          
            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.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.0 plattform.
        
        
          ![[Warning]](../images/warning.png) 
          
            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]](../images/note.png) 
          
            Note
          
          
            Hvis du oppgraderer og har installert en nyere versjon av
            ICU-73.2 siden du sist installerte Qt-5.15.10, 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-18.17.1, nss-3.92, pciutils-3.10.0, og Qt-5.15.10 eller qt-components-5.15.10 med qtlocation og
          qtwebchannel)
        
        
          Anbefalt
        
        
          ![[Note]](../images/note.png) 
          
            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.
          
         
        
          enten alsa-lib-1.2.9 eller PulseAudio-16.1 (eller begge), FFmpeg-6.0, ICU-73.2 (bygg før
          libxml2-2.10.4) , libwebp-1.3.1,
          libxslt-1.1.38, og Opus-1.3.1
        
        
          Valgfri
        
        
          libevent-2.1.12, MIT
          Kerberos V5-1.21.2, pipewire-0.3.77, Poppler-23.08.0, jsoncpp,
          libsrtp, snappy
        
        
          Redaktørens notater: https://wiki.linuxfromscratch.org/blfs/wiki/qtwebengine
        
       
      
        
          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.15-build_fixes-1.patch
        
          Bruk en oppdatering som løser problemer når du bygger med ffmpeg-5
          og senere:
        
        patch -Np1 -i ../qtwebengine-5.15.15-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.10 ved bruk av sed:
        
        sed -e '/^MODULE_VERSION/s/5.*/5.15.10/' -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.10:
        
        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 byggeverktøyene slik at de kan kjøres med
          Python-3.11+:
        
        sed -e 's/\^(?i)/(?i)^/' \
    -i src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py &&
sed -e "s/'rU'/'r'/" \
    -i src/3rdparty/chromium/tools/grit/grit/util.py
        
          Til slutt, fiks en endring i byggesystemet som gjør det mulig for
          utviklerne å bruke f.eks. -j20 til make (for raske tester av noen
          områder), men bryter byggingen med LFS sin bruk av miljøvariabelen
          NINJAJOBS:
        
        sed -i 's/NINJAJOBS/NINJA_JOBS/' src/core/gn_run.pro
        
          Installer qtwebengine ved å kjøre
          følgende kommandoer:
        
        mkdir build &&
cd    build &&
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
        
        
          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.
        
        
          -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 makevil 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 nettleser
            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 (i $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
                   |