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.7 basé sur KDE Frameworks-5.109.0.
This package is known to build and work properly using an LFS 12.0 platform.
Tlchargement (HTTP) : https://download.qt.io/archive/qt/5,15/5.15.10/single/qt-everywhere-opensource-src-5.15.10.tar.xz
Somme de contrle MD5 : fb41d86bea6bc4886030a5092c910b09
Taille du tlchargement : 629 Mo
Estimation de l'espace disque requis : 8,7 Go (153 Mo installés)
Estimation du temps de construction : 5,7 SBU (avec paralllisme = 8)
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.0/qt-everywhere-opensource-src-5.15.10-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.
alsa-lib-1.2.9, Cups-2.4.6, dbus-1.14.8, double-conversion-3.3.0, GLib-2.76.4, HarfBuzz-8.1.1, ICU-73.2, hicolor-icon-theme-0.17, Mesa-23.1.6, libjpeg-turbo-3.0.0, libxkbcommon-1.5.0, SQLite-3.42.0, Wayland-1.22.0 (Mesa must be built with Wayland EGL backend), 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.38, libinput-1.23.0 MariaDB-10.11.4 or MySQL, MIT Kerberos V5-1.21.2, mtdev-1.1.6 PostgreSQL-15.4 et unixODBC-2.3.12
Notes des rédacteurs : https://wiki.linuxfromscratch.org/blfs/wiki/qt5
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.10
. 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.10 ln -sfnv qt-5.15.10 /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
Tout d'abord, 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.10-kf5-1.patch
Le correctif est censé être utilisé dans un répertoire git, car le
fonctionnement de la commande configure est modifié dans ce
cas. 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
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 \ -syslog \ $(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.18
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 -sfrvn $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().
-syslog
: ce paramètre
active l'envoie de messages qt au système de journalisation
syslog.
$(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.14p3 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