Qt5 er et applikasjonsrammeverk på tvers av plattformer som er mye brukt for å utvikle applikasjonsprogramvare med en grafisk brukergrensesnitt (GUI) (i hvilke tilfeller qt5 er klassifisert som et skjermelement verktøysett), og brukes også til å utvikle ikke-GUI programmer som kommandolinjeverktøy og konsoller for servere. To store brukere av qt er KDE Frameworks 5 (KF5) og LXQt.
Hele qt5 pakken består av 43 separate komponenter. Disse instruksjonene bruker en liten delmengde av hele qt5 installasjonsinstruksjonene ovenfor. De dekker de fleste, men ikke alle, av komponentene som trengs for å bygge pakker i BLFS. Denne siden, og den neste, er gitt for å redusere mengden tid, plass og avhengigheter som trengs for å bygge disse pakkene. De anbefales ikke om du vil bygge KDE Frameworks-5.115.0 baserte Plasma-5.27.10 skrivebordsmiljø.
Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.1 plattform.
Nedlasting (HTTP): https://download.qt.io/archive/qt/5.15/5.15.12/single/qt-everywhere-opensource-src-5.15.12.tar.xz
Nedlasting MD5 sum: 3fb1cd4f763f5d50d491508b7b99fb77
Nedlastingsstørrelse: 630 MB
Estimert diskplass som kreves: 8.5 GB (154 MB installert)
Estimert byggetid: 7.4 SBU (ved å bruke parallellisme=4)
Nå som qt5 oppdateringer er begrenset til kommersielle kunder, oppstrøms oppdateringer for de ulike modulene blir organisert og presentert hos kde. Oppdateringer for modulene som kreves av pakker i BLFS har vært samlet for den ikke-modulære qt5 byggingen vi bruker.
Nødvendig oppdatering: https://www.linuxfromscratch.org/patches/blfs/12.1/qt-everywhere-opensource-src-5.15.12-kf5-1.patch
Detaljer om kde organiseringen og presentasjon kan finnes på https://dot.kde.org/2021/04/06/announcing-kdes-qt-5-patch-collection og https://community.kde.org/Qt5PatchCollection.
Nødvendig oppdatering: https://www.linuxfromscratch.org/patches/blfs/12.1/qt-everywhere-opensource-src-5.15.12-security_fix-1.patch
alsa-lib-1.2.11, at-spi2-core-2.50.1, Cups-2.4.7, double-conversion-3.3.0, GLib-2.78.4, HarfBuzz-8.3.0, ICU-74.2, hicolor-icon-theme-0.17, Mesa-24.0.1, libjpeg-turbo-3.0.1, libxkbcommon-1.6.0, SQLite-3.45.1, Wayland-1.22.0 (Mesa må bygges med Wayland EGL bakstykke), xcb-util-image-0.4.1, xcb-util-keysyms-0.4.1, xcb-util-renderutil-0.3.10, og xcb-util-wm-0.4.2
GTK+-3.24.41, libinput-1.25.0 MariaDB-10.11.7 eller MySQL, MIT Kerberos V5-1.21.2, mtdev-1.1.6 PostgreSQL-16.2, og unixODBC-2.3.12
BLFS redaktørene anbefaler å installere qt5 inn i /usr
hierarkiet fordi det blir vanskelig å finne komponenter og å
oppdatere til en ny versjon. Hvis du ønsker å installere
qt5 i /usr
, mappene må spesifiseres eksplisitt. I dette
tilfellet, sett QT5PREFIX=/usr
og legg
til følgende i configure argumentene nedenfor:
export QT5PREFIX=/opt/qt5
Noen ganger er installasjonsbanene hardkodet til installerte
filer. Dette er grunnen /opt/qt5
brukes som installasjonsprefiks i stedet for /opt/qt-5.15.12
. For å opprette en versjonert
qt5 mappen etter installasjonen
er fullført, kan du gi nytt navn til mappen og opprette en
symbolkobling:
mkdir -pv /opt/qt-5.15.12 ln -sfnv qt-5.15.12 /opt/qt5
Senere kan du ønske å installere andre versjoner av qt5. For å gjøre det, fjern bare
symbolkoblingen og bruk /opt/qt5
som prefiks igjen. Hvilken versjon av qt5 du bruker avhenger bare av hvor
symbollinken peker.
Hvis qt5 blir reinstallert i
samme mappe som en eksisterende forekomst, kjør kommandoene
utført av root
, som for eksempel
make install, fra
en konsoll eller ikke-qt5 basert vindusbehandler. Den overskriver
qt5 biblioteker som ikke skal
være i bruk under installasjonsprosessen.
Hvis du ikke installerte noen av de anbefalte avhengighetene, undersøk ./configure --help utdataen for å sjekke hvordan du deaktiverer dem eller bruk interne versjoner samlet i kildens tarball.
BLFS redaktørene anbefaler ikke å installere qt5 inn i /usr hierarkiet fordi det blir vanskelig å finne komponenter og å oppdatere til en ny versjon. Hvis du ønsker å installere qt5 i /usr, mappen må spesifiseres eksplisitt. I dette tilfellet setter du QT5PREFIX=/usr og legger til følgende til konfigureringsargumentene nedenfor:
-archdatadir /usr/lib/qt5 \ -bindir /usr/bin \ -plugindir /usr/lib/qt5/plugins \ -importdir /usr/lib/qt5/imports \ -headerdir /usr/include/qt5 \ -datadir /usr/share/qt5 \ -docdir /usr/share/doc/qt5 \ -translationdir /usr/share/qt5/translations \ -examplesdir /usr/share/doc/qt5/examples
Nå bruk en oppdatering for å trekke inn rettelsene vedlikeholdt av kde for disse moduler som kreves av pakker nevnt i denne boken:
patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-kf5-1.patch
Oppdateringen er ment å brukes i et git depot. Ellers vil noen
filer som burde endres av configure etter anvendelsen av
oppdateringen ikke berøres. Heldigvis er det nok å lage en
.git
mappe i qmake
mappen hvor configure skriptet kjøres:
mkdir -pv qtbase/.git
Rett opp en sikkerhetssårbarhet i qtbase:
patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-security_fix-1.patch
På dette tidspunktet ønsker vi å sette opp å hoppe over de fleste komponentene. Gjør det med:
ls -Fd qt* | grep / | sed 's/^/-skip /;s@/@@' > tempconf && sed -i -r '/base|tools|x11extras|svg|declarative|wayland/d' tempconf
Nå, installer qt5 ved å kjøre følgende kommandoer:
./configure -prefix $QT5PREFIX \ -sysconfdir /etc/xdg \ -confirm-license \ -opensource \ -dbus-linked \ -openssl-linked \ -system-harfbuzz \ -system-sqlite \ -nomake examples \ -no-rpath \ -journald \ $(cat tempconf) \ && make
Denne pakken kommer ikke med en testpakke.
Nå, som root
bruker:
make install
Fjern referanser til byggemappen fra installert bibliotek
avhengighet (prl) filer ved å kjøre følgende kommando som
root
bruker:
find $QT5PREFIX/ -name \*.prl \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
Installer bilder og lag menyoppføringer for installerte
applikasjoner. QT5BINDIR
variabel brukes
her for å peke på mappen for de kjørbare programmene. Hvis du har
endret bindir ovenfor, QT5BINDIR
må
justeres nedenfor. Vær sikker på at QT5BINDIR
variabel er definert i root sitt miljø og
som root
bruker:
QT5BINDIR=$QT5PREFIX/bin install -v -dm755 /usr/share/pixmaps/ && install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \ /usr/share/pixmaps/assistant-qt5.png && install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \ /usr/share/pixmaps/designer-qt5.png && install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \ /usr/share/pixmaps/linguist-qt5.png && install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \ /usr/share/pixmaps/qdbusviewer-qt5.png && install -dm755 /usr/share/applications && cat > /usr/share/applications/assistant-qt5.desktop << EOF[Desktop Entry] Name=Qt5 Assistant Comment=Shows Qt5 documentation and examples Exec=$QT5BINDIR/assistant Icon=assistant-qt5.png Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Documentation;
EOF cat > /usr/share/applications/designer-qt5.desktop << EOF[Desktop Entry] Name=Qt5 Designer GenericName=Interface Designer Comment=Design GUIs for Qt5 applications Exec=$QT5BINDIR/designer Icon=designer-qt5.png MimeType=application/x-designer; Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;
EOF cat > /usr/share/applications/linguist-qt5.desktop << EOF[Desktop Entry] Name=Qt5 Linguist Comment=Add translations to Qt5 applications Exec=$QT5BINDIR/linguist Icon=linguist-qt5.png MimeType=text/vnd.trolltech.linguist;application/x-linguist; Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;
EOF cat > /usr/share/applications/qdbusviewer-qt5.desktop << EOF[Desktop Entry] Name=Qt5 QDbusViewer GenericName=D-Bus Debugger Comment=Debug D-Bus applications Exec=$QT5BINDIR/qdbusviewer Icon=qdbusviewer-qt5.png Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Debugger;
EOF
Noen pakker som f.eks VLC-3.0.20 ser etter visse kjørbare filer
med suffikset -qt5. Kjør følgende kommando som root
bruker for å opprette de nødvendige
symbolkoblingene:
for file in moc uic rcc qmake lconvert lrelease lupdate; do ln -sfvn $QT5BINDIR/$file /usr/bin/$file-qt5 done
-confirm-license
: Godta
lisens uten å spørre brukeren under konfigurasjonen.
-opensource
: Installer åpen
kildekode versjon av qt.
-nomake examples
: Denne
bryteren deaktiverer bygging av eksempelprogrammene inkludert i
kilde tarballen. Fjern den hvis du vil bygge dem.
-system-sqlite
: Denne
bryteren aktiverer systemversjonen av SQLite.
-system-harfbuzz
: Denne
bryteren aktiverer systemversjonen avf Harfbuzz.
-dbus-linked
-openssl-linked
: Disse brytere
muliggjør eksplisitt kobling av D-Bus og OpenSSL biblioteker inn i qt5 biblioteker i stedet for å dlopen()-ing dem.
-journald
: Denne bryteren
lar deg sende qt meldinger til journald loggingssystem.
$(cat tempconf): Denne kommandoen gir en liste over komponenter som ikke skal bygges. Disse oppføringene er i form av "-skip <component>".
Hvis Sudo-1.9.15p5 er installert, skal QT5DIR være
tilgjengelig for superbrukeren også. Utfør følgende kommandoer
som root
bruker:
cat > /etc/sudoers.d/qt << "EOF"
Defaults env_keep += QT5DIR
EOF
Hvis du har installert qt5 i
/usr
, opprett en miljøvariabel som
kreves av visse pakker. Som root
bruker:
cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh
QT5DIR=/usr
export QT5DIR
# End /etc/profile.d/qt5.sh
EOF
Hvis du har installert qt5 på et
annet sted enn /usr
, må du
oppdatere følgende konfigurasjonsfiler slik at qt5 er riktig funnet av andre pakker og
systemprosesser.
Som root
bruker, oppdater
/etc/ld.so.conf
filen og den
dynamiske linkeren kjøretidsbufferfil:
cat >> /etc/ld.so.conf << EOF
# Begin Qt addition
/opt/qt5/lib
# End Qt addition
EOF
ldconfig
Som root
bruker, opprett
/etc/profile.d/qt5.sh
filen:
cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh
QT5DIR=/opt/qt5
pathappend $QT5DIR/bin PATH
pathappend $QT5DIR/lib/pkgconfig PKG_CONFIG_PATH
export QT5DIR
# End /etc/profile.d/qt5.sh
EOF