Qt5 est un cadriciel multi-plateforme très utilisé pour développer des applications avec une interface graphique (GUI) (dans ce cas, qt5 est une boîte à outils de widgets) et pour développer des programmes non graphiques comme des outils en ligne de commande et des consoles pour des serveurs. Deux des utilisateurs principaux de qt sont KDE Frameworks 5 (KF5) et LXQt.
Le paquet qt5 complet consiste en 43 composants distincts. Ces instructions utilisent un petit ensemble des instructions d'installation complètes de qt5 plus haut. Elles couvrent la plupart, mais pas tous, les composants requis pour construire les paquets dans BLFS. Cette page et la suivante sont présentes pour réduire le temps, l'espace disque et le nombre de dépendances requis pour construire ces paquets. Elles ne sont pas recommandées si vous construisez l'environnement de bureau Plasma-5.27.10 basé sur KDE Frameworks-5.115.0.
This package is known to build and work properly using an LFS 12.1 platform.
Téléchargement (HTTP) : https://download.qt.io/archive/qt/5,15/5.15.12/single/qt-everywhere-opensource-src-5.15.12.tar.xz
Somme de contrôle MD5 : 3fb1cd4f763f5d50d491508b7b99fb77
Taille du téléchargement : 630 Mo
Estimation de l'espace disque requis : 8,5 Go (154 Mo installés)
Estimation du temps de construction : 7,4 SBU (avec parallélisme = 4)
Maintenant que les mises à jour de qt5 sont restreintes aux clients commerciaux, les correctifs amont pour plusieurs modules sont pris en charge par kde. Les correctifs pour les modules requis par les paquets de BLFS ont été agrégés pour la construction qt5 monolithique que nous utilisons.
Correctif requis : https://www.linuxfromscratch.org/patches/blfs/12.1/qt-everywhere-opensource-src-5.15.12-kf5-1.patch
Vous pouvez trouver des détails sur le travail de kde sur https://dot.kde.org/2021/04/06/announcing-kdes-qt-5-patch-collection et https://community.kde.org/Qt5PatchCollection.
Correctif requis : 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 doit être construit avec le moteur Wayland EGL), xcb-util-image-0.4.1, xcb-util-keysyms-0.4.1, xcb-util-renderutil-0.3.10 et xcb-util-wm-0.4.2
GTK+-3.24.41, libinput-1.25.0 MariaDB-10.11.7 or MySQL, MIT Kerberos V5-1.21.2, mtdev-1.1.6 PostgreSQL-16.2 et unixODBC-2.3.12
Les rédacteurs de BLFS recommandent d'installer qt5 dans un répertoire autre que /usr
, c.-à-d. /opt/qt5
. Pour cela, configurez les variables
d'environnement suivantes :
export QT5PREFIX=/opt/qt5
Parfois, les chemins d'installation sont codés en dur dans les
fichiers installés. C'est la raison pour laquelle /opt/qt5
est utilisé comme préfixe
d'installation au lieu de /opt/qt-5.15.12
. Pour créer un répertoire
qt5 versionné après avoir
terminé l'installation, vous pouvez renommer le répertoire et
créer un lien symbolique :
mkdir -pv /opt/qt-5.15.12 ln -sfnv qt-5.15.12 /opt/qt5
Plus tard, vous voudrez peut-être installer une autre version de
qt5. Pour cela, supprimez
simplement le lien symbolique et utilisez de nouveau /opt/qt5
comme préfixe. La version de
qt5 utilisée ne dépend que de
l'endroit où pointe le lien symbolique.
Si qt5 est réinstallé dans le
même répertoire qu'une instance existante, exécutez les commandes
en root
comme make install, à partir d'une
console ou d'un gestionnaire de fenêtre qui n'est pas basé sur
qt5. Cela réécrit les bibliothèques qt5 qui ne doivent pas être utilisées
pendant le processus d'installation.
Si vous n'avez pas installé certaines dépendances recommandées, examinez la sortie de ./configure --help pour vérifier comment les désactiver ou utiliser une version interne intégrée dans l'archive des sources.
Les rédacteurs de BLFS ne recommandent pas d'installer
qt5 dans la hiérarchie
/usr
car il devient difficile de
trouver les composants et de les mettre à jour vers une nouvelle
version. Si vous ne voulez pas installer qt5 dans /usr
,
les répertoires doivent être spécifiés explicitement. Dans ce
cas, configurez QT5PREFIX=/usr
et
ajoutez ce qui suit aux arguments de configure ci-dessous :
-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
Maintenant, appliquez un correctif pour récupérer les correctifs récoltés par kde pour les modules qui sont requis par les paquets mentionnés dans ce livre :
patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-kf5-1.patch
Le correctif est censé être utilisé dans un répertoire git. Sinon,
certains fichiers qui doivent être modifiés par configure après l'application du
correctif ne sont pas touchés. Il est suffisant de créer un
répertoire .git
dans le répertoire
qmake
, où le script configure est exécuté :
mkdir -pv qtbase/.git
Corrigez une vulnérabilité de sécurité dans qtbase :
patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-security_fix-1.patch
Maintenant nous voulons configurer le fait de sauter la plupart des composants. Faites cela avec :
ls -Fd qt* | grep / | sed 's/^/-skip /;s@/@@' > tempconf && sed -i -r '/base|tools|x11extras|svg|declarative|wayland/d' tempconf
Maintenant, installez qt5 en exécutant les commandes suivantes :
./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
Ce paquet n'a pas de suite de tests.
Maintenant, en tant qu'utilisateur root
:
make install
Supprimez les références au répertoire de construction dans les
fichiers de dépendances (prl) des bibliothèques installées en
exécutant la commande suivante en tant qu'utilisateur root
:
find $QT5PREFIX/ -name \*.prl \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
Installez les images et créez les entrées de menu pour les
applications installées. La variable QT5BINDIR
est utilisée ici pour pointer vers le
répertoire pour les programmes exécutables. Si vous avez changé le
bindir plus haut, QT5BINDIR
doit être
ajusté ci-dessous. Assurez-vous que la variable QT5BINDIR
est définie dans l'environnement root et
en tant qu'utilisateur root
:
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
Certains paquets comme VLC-3.0.20
cherchent certains exécutables avec un suffix -qt5. Exécutez la
commande suivante en tant qu'utilisateur root
pour créer les liens symboliques
nécessaires :
for file in moc uic rcc qmake lconvert lrelease lupdate; do ln -sfvn $QT5BINDIR/$file /usr/bin/$file-qt5 done
-confirm-license
:
accepte la licence sans demander à l'utilisateur pendant la
configuration.
-opensource
: installe
la version libre de qt.
-nomake examples
: ce
paramètre désactive la construction des programmes d'exemple inclus
dans l'archive des sources. Supprimez-le si vous voulez les
construire.
-system-sqlite
: ce
paramètre active l'utilisation de la version du système de
SQLite.
-system-harfbuzz
: ce
paramètre active l'utilisation de la version système de
Harfbuzz.
-dbus-linked
-openssl-linked
: ces paramètres
activent explicitement la liaison des bibliothèques D-Bus et OpenSSL aux bibliothèques qt5 au lieu d'utiliser dlopen().
-journald
: ce
paramètre active l'envoie de messages qt au système de
journalisation journald.
$(cat tempconf) : cette commande fournit une liste des composants qui ne devraient pas être construits. Ces entrées sont de la forme « -skip <component> ».
Si Sudo-1.9.15p5 est installé, QT5DIR devrait
également être disponible pour le super utilisateur. Exécutez les
commandes suivantes en tant qu'utilisateur root
:
cat > /etc/sudoers.d/qt << "EOF"
Defaults env_keep += QT5DIR
EOF
Si vous intsallez qt5 dans
/usr
, créez une variable
d'environnement requise par certains paquets. En tant
qu'utilisateur root
:
cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh
QT5DIR=/usr
export QT5DIR
# End /etc/profile.d/qt5.sh
EOF
Si vous installez qt5 dans un
autre emplacement que /usr
, vous
devez mettre à jour les fichiers de configuration suivants pour
que qt5 soit correctement trouvé
par les autres paquets et les processus système.
En tant qu'utilisateur root
,
mettez à jour le fichier /etc/ld.so.conf
et le fichier de cache à
l'exécution de l'éditeur des liens dynamique :
cat >> /etc/ld.so.conf << EOF
# Begin Qt addition
/opt/qt5/lib
# End Qt addition
EOF
ldconfig
En tant qu'utilisateur root
,
créez le fichier /etc/profile.d/qt5.sh
:
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