Construction de KDE Frameworks 6.23.0 (KF6)

KDE Frameworks est une collection de bibliothèques basée sur Qt6 et dérivée de QML depuis les bibliothèques précédentes de KDE. Elles peuvent être utilisées indépendamment de l'environnement d'affichage KDE (Plasma 6).

[Note]

Note

Les versions de développement de BLFS peuvent ne pas arriver à contruire ou à exécuter certains paquets correctement si LFS ou des dépendances ont été mises à jour depuis la dernière version stable des livres.

Les instructions suivantes construisent tous les paquets de KDE Frameworks en une étape en utilisant un script bash.

Informations sur le paquet

Dpendances de KF6

Requises

Extra-CMake-Modules-6.23.0, breeze-icons-6.23.0, docbook-xml-4.5, docbook-xsl-nons-1.79.2, libcanberra-0.30, libgcrypt-1.12.0, libical-3.0.20, libsecret-0.21.7, libxslt-1.1.45, lmdb-0.9.35, qca-2.3.10, libqrencode-4.1.1, plasma-wayland-protocols-1.20.0, PyYAML-6.0.3, shared-mime-info-2.4, URI-5.34 et Wget-1.25.0 (requis pour télécharger les paquets)

Recommandes

Facultatives

BlueZ-5.86 (requis pour construire Bluez-Qt) et Datamatrix (recommandé pour Prison par les développeurs en amont)

Dépendance à l'exécution de FrameworkIntegration

polices Noto

Dépendances recommandées supplémentaires pour kapidox

Support des formats d'images supplémentaires dans KImageFormats

libavif-1.3.0, libheif-1.21.2, libjxl-0.11.2, libraw-0.22.0, OpenEXR

Dépendances facultatives pour Solid

UDisks-2.11.1, UPower-1.91.1 et media-player-info (exécution)

Dépendance facultative pour KWallet

gpgmepp-2.0.0

Dépendances facultatives pour kcoreaddons

Shiboken6 et PySide6

Moteurs de dictionnaires facultatifs pour Sonnet

Hspell et Hunspell

Téléchargement de KDE Frameworks

La façon la plus facile d'obtenir les paquets de KDE Frameworks est d'utiliser wget pour les récupérer tous en une fois :

url=https://download.kde.org/stable/frameworks/6.23/
wget -r -nH -nd -A '*.xz' -np $url

Les options utilisées ici sont :
  -r            cherche récursivement dans les répertoires enfants
  -nH           désactive la génération des répertoires préfixés par le nom d'hôte
  -nd           ne crée pas de hiérarchie de répertoires
  -A '*.xz'     récupère uniquement les fichiers *.xz
  -np           ne récupère pas les répertoires parents

Initialisation de l'ordre des paquets

L'ordre de construction des fichiers est important à cause des dépendances internes. Créez la liste des fichiers dans le bon ordre comme suit :

cat > frameworks-6.23.0.md5 << "EOF"
7f5e6053833355988580d124cb5c5331  attica-6.23.0.tar.xz
#b9c562bac371dcf693ceccb431cad782  extra-cmake-modules-6.23.0.tar.xz
81be2706e95070ef2e8d5db08b61ec36  kapidox-6.23.0.tar.xz
af026d47371ce53861d9690b7fd24f4a  karchive-6.23.0.tar.xz
8e9793683a6cdff52354bf01688814cf  kcodecs-6.23.0.tar.xz
ff251eb0454169bdd9b905be308602e1  kconfig-6.23.0.tar.xz
a471374e701aaf344443edc544fd7a9b  kcoreaddons-6.23.0.tar.xz
b9d47c2926eeae091dbd34a5e3c4ee6a  kdbusaddons-6.23.0.tar.xz
3ade961d35d6cee2ecc65c183239be09  kdnssd-6.23.0.tar.xz
#2c1c531fe46ddaca670ce7b17232d1dd  kguiaddons-6.23.0.tar.xz
992519166dbb9370c43704385ea20558  kguiaddons-6.23.1.tar.xz
3e50f60355ad2072cf5190b6602f6f67  ki18n-6.23.0.tar.xz
6ecb97791b574c93e82e2b31e9e15a4f  kidletime-6.23.0.tar.xz
cdfda2ead13c6fba183d96c502b3532f  kimageformats-6.23.0.tar.xz
a0a2a59ed844903093ab4544eebbfdc0  kitemmodels-6.23.0.tar.xz
80cd780c0d6b0244d1f78db67d0fa64a  kitemviews-6.23.0.tar.xz
1eaf72467eda257e7f92aa3af1f4f2c4  kplotting-6.23.0.tar.xz
731b50c86228c901a51a4f23d9b8c875  kwidgetsaddons-6.23.0.tar.xz
c25a4af6bac14133a038ac64c00e6e35  kwindowsystem-6.23.0.tar.xz
72c92cae8ef3353968ed8f0de5086b49  networkmanager-qt-6.23.0.tar.xz
c84db21836589cbe499d788800f1e4bf  solid-6.23.0.tar.xz
48848833c731c3955a15b5d92af2e261  sonnet-6.23.0.tar.xz
2af774a263d6a96ac2cf1a1b1625ffd0  threadweaver-6.23.0.tar.xz
3459dd6a909ce38d4cf550b09ea1a156  kauth-6.23.0.tar.xz
e9fa7e2ee27c677876cc82654c224cd4  kcompletion-6.23.0.tar.xz
31d5bf5fb58c0db2af3f64b2e58e3dd2  kcrash-6.23.0.tar.xz
54bc6affc404656abe170e3d5de53040  kdoctools-6.23.0.tar.xz
a97cbf17038c4995d2f2bd22223aa2be  kpty-6.23.0.tar.xz
c16caf60255f88491b7ad734393a74a8  kunitconversion-6.23.0.tar.xz
13d3f9b0e8603d11ec5021fc89655e8e  kcolorscheme-6.23.0.tar.xz
2b0c888201444f9a2545c42fb622fcda  kconfigwidgets-6.23.0.tar.xz
#bc5d5ec03447e31ac1cb3390e31d8e0e  kservice-6.23.0.tar.xz
a2a26413473f429108002c3774f847f4  kservice-6.23.1.tar.xz
5b9b4765c8dbe1a2cfd5c26fdc018cc4  kglobalaccel-6.23.0.tar.xz
982fa2202cd799440ed75d514cf252fc  kpackage-6.23.0.tar.xz
05e3ce90249bfa35e9f6141f3b836586  kdesu-6.23.0.tar.xz
30878c5dafdbc0cf56d501ec2a0160ad  kiconthemes-6.23.0.tar.xz
79b0eb4ffa38c05f577906fb22546983  knotifications-6.23.0.tar.xz
77a32fda6c00c1fec55258d9d3f93107  kjobwidgets-6.23.0.tar.xz
01c003d32107dbadff8cc49df77d48ee  ktextwidgets-6.23.0.tar.xz
8f2cd3edd3f7ec208064148745d2005a  kxmlgui-6.23.0.tar.xz
2bea8e1c8b35612d3a737ce4dfd55c7e  kbookmarks-6.23.0.tar.xz
72b042c87f63d65a26354c85c0603422  kwallet-6.23.0.tar.xz
07b2486ba61789183dcb3a0cd0195ad7  kded-6.23.0.tar.xz
bc3542b9fd9f457c42716985d7d521c9  kio-6.23.0.tar.xz
8f73a6558ec2751c2f5aed48445f92e5  kdeclarative-6.23.0.tar.xz
a4bea919b1bb17ae2bea4391f9e1ed89  kcmutils-6.23.0.tar.xz
#75aacf94859607acbf559e4ea13e33c3  kirigami-6.23.0.tar.xz
a56601923ca393d98ce5f42e6153d95b  kirigami-6.23.1.tar.xz
d5792a6ecc962b5627b25e836523a92f  syndication-6.23.0.tar.xz
d660b791fa1371a79b748b71045a03f4  knewstuff-6.23.0.tar.xz
530b86fbf3b196f7b18ade8d0bded15c  frameworkintegration-6.23.0.tar.xz
b0a490e46de5c0462737559dfdf78318  kparts-6.23.0.tar.xz
d603462ba045e9bceba9cebffa5b2bc4  syntax-highlighting-6.23.0.tar.xz
39ebea55fbcd952e316d70ca9db92286  ktexteditor-6.23.0.tar.xz
b1fe0e064401bd89408331cda4e43ecf  modemmanager-qt-6.23.0.tar.xz
7e6f12fa0d52a05f837260fe8c176837  kcontacts-6.23.0.tar.xz
627545d2bb64280cb6e726ca15e3b6a3  kpeople-6.23.0.tar.xz
2b90def0079acc96566631caf35ddcbd  bluez-qt-6.23.0.tar.xz
9e0008e31216062e3f282de618d9d7da  kfilemetadata-6.23.0.tar.xz
e94361e6311e89e5dcf4e1bb7ee37d66  baloo-6.23.0.tar.xz
#c8e3ceb2a349683510aeee1b5bccf521  breeze-icons-6.23.0.tar.xz
99b8d338845974e7054f13fb0dd0414f  krunner-6.23.0.tar.xz
f3e0f1dc78f55e3e98788e52e6f353ce  prison-6.23.0.tar.xz
e038915d3aabd6cb4152a75de45c9a68  qqc2-desktop-style-6.23.0.tar.xz
b677d299d7b1d8e976905bcb93dbd4ab  kholidays-6.23.0.tar.xz
a61df0e0ed04127740d9088bae3bd7b5  purpose-6.23.0.tar.xz
d74a32da736d9186843e5ba3ff66740f  kcalendarcore-6.23.0.tar.xz
717105d7e9dcaac6256471f8b5286eca  kquickcharts-6.23.0.tar.xz
d276123343d251dd51471ea7eaa4f801  knotifyconfig-6.23.0.tar.xz
39c6c20192c9ea9eef5b33437df66fd8  kdav-6.23.0.tar.xz
c7d67aa70a326713c1af883d62563e90  kstatusnotifieritem-6.23.0.tar.xz
f6c9809f880968ce6db12873bf827ff0  ksvg-6.23.0.tar.xz
14ffa33ff0a440bbb97f329b738f4d92  ktexttemplate-6.23.0.tar.xz
735f61eee9c3185123ffe82118a91645  kuserfeedback-6.23.0.tar.xz
EOF

Dans la liste ci-dessus, remarquez que certains fichiers ont été commentés avec un caractère dièse (#).

  • L'entrée extra-cmake-modules a été commentée car elle a été construite plus tôt dans Introduction à KDE.

  • Ce paquet d'icônes est couvert séparément dans breeze-icons-6.23.0. Le paquet est séparé pour les utilisateurs qui ont besoin de ces icônes mais pas de l'ensemble de paquets KF6 complet (par exemple post-installation du bureau LXQt) pour les installer facilement. Cependant, ce sont des dépendances pour plusieurs paquets de kf6.

  • Trois fichiers dont le numéro de version est 6.23.1 sont des corrections de bogues qui remplacent leur version 6.23.0 respective.

Installation de KDE Frameworks

[Note]

Note

Pour l'installation de plusieurs paquets dans un script, les installations doivent être faites en tant qu'utilisateur root. Il y a trois possibilités génériques pour cela :

  1. Exécuter le script complet en tant qu'utilisateur root (pas recommandé).

  2. Utiliser la commande sudo du paquet Sudo-1.9.17p2.

  3. Utiliser su -c "command arguments" (les guillemets sont nécessaires) qui demandera le mot de passe root à chaque itération de la boucle.

Une façon de gérer cette situation est de créer une petite fonction bash qui choisit automatiquement la méthode appropriée. Une fois que la commande est initialisée dans l'environnement, il n'est plus nécessaire de le refaire.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root
[Attention]

Attention

Si vous installez dans /opt et qu'il existe soit un dossier soit un lien symbolique /opt/kf6, il faut le réinitialiser (en tant que root) :

mv -v /opt/kf6 /opt/kf6.old                         &&
install -v -dm755           $KF6_PREFIX/{etc,share} &&
ln -sfv /etc/dbus-1         $KF6_PREFIX/etc         &&
ln -sfv /usr/share/dbus-1   $KF6_PREFIX/share       &&
ln -sfv /usr/share/polkit-1 $KF6_PREFIX/share       &&
install -v -dm755           $KF6_PREFIX/lib         &&
ln -sfv /usr/lib/systemd    $KF6_PREFIX/lib

Tout d'abord, démarrez un sous-shell qui terminera en cas d'erreur :

bash -e

Installez tous les paquets en exécutant les commandes suivantes :

while read -r line; do

    # Get the file name, ignoring comments and blank lines
    if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi
    file=$(echo $line | cut -d" " -f2)

    pkg=$(echo $file|sed 's|^.*/||')          # Remove directory
    packagedir=$(echo $pkg|sed 's|\.tar.*||') # Package directory

    name=$(echo $pkg|sed 's|-6.*$||') # Isolate package name

    tar -xf $file
    pushd $packagedir

      # kapidox is a python module
      case $name in
        kapidox)
          pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
          as_root pip3 install --no-index --find-links dist --no-user kapidox
          popd
          rm -rf $packagedir
          continue
          ;;
      esac

      mkdir build
      cd    build

      cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
            -D CMAKE_INSTALL_LIBEXECDIR=libexec \
            -D CMAKE_PREFIX_PATH=$QT6DIR        \
            -D CMAKE_SKIP_INSTALL_RPATH=ON      \
            -D CMAKE_BUILD_TYPE=Release         \
            -D BUILD_TESTING=OFF                \
            -D BUILD_PYTHON_BINDINGS=OFF        \
            -W no-dev ..
      make
      as_root make install
    popd

  as_root rm -rf $packagedir
  as_root /sbin/ldconfig

done < frameworks-6.23.0.md5

exit
[Note]

Note

Tous les modules qui auront été oubliés peuvent être installés plus tard en utilisant la même procédure mkdir build; cd build; cmake; make; make install qu'au dessus.

Parfois les chemins d'installation sont codés en dur dans les fichiers installés. Si le répertoire d'installation n'est pas /usr, renommez le répertoire et créez un lien symbolique :

mv -v /opt/kf6 /opt/kf6-6.23.0
ln -sfvn kf6-6.23.0 /opt/kf6

Explication des commandes

-D CMAKE_PREFIX_PATH=$QT6DIR : ce paramètre est utilisé pour permettre à cmake de trouver les bonnes bibliothèques Qt.

-D CMAKE_BUILD_TYPE=Release : Ce paramètre est utilisé pour appliquer un plus haut niveau d'optimisation à la compilation.

-D BUILD_TESTING=OFF : Ce paramètre est utilisé pour empêcher la construction des bibliothèques et des programmes de test qui ne sont pas utiles pour un utilisateur final.

-D BUILD_PYTHON_BINDINGS=OFF : ce paramètre est utilisé pour empêcher la construction des modules Python qui nécessitent des dépendances facultatives externes.

Contenu

Programmes installés: balooctl6, baloosearch6, balooshow6, checkXML6, kbuildsycoca6, kcmshell6, kded6, kde-geo-uri-handler, kiconfinder6, knewstuff-dialog6, kpackagetool6, kquitapp6, kreadconfig6, ksecretd, ksyntaxhighlighter6, ktelnetservice6, ktexteditor-script-tester6, ktrash6, kwalletd6, kwallet-query, kwriteconfig6, meinproc6, parsetrigrams6 et solid-hardware6
Bibliothèques installées: libkdeinit6_klauncher.so, libKF6Archive.so, libKF6Attica.so, libKF6AuthCore.so, libKF6Baloo.so, libKF6BluezQt.so, libKF6Bookmarks.so, libKF6BookmarksWidgets.so, libKF6CalendarCore.so, libKF6CalendarEvents.so, libKF6Codecs.so, libKF6ColorScheme.so, libKF6Completion.so, libKF6ConfigCore.so, libKF6ConfigGui.so, libKF6ConfigQml.so, libKF6ConfigWidgets.so, libKF6Contacts.so, libKF6CoreAddons.so, libKF6Crash.so, libKF6DAV.so, libKF6DBusAddons.so, libKF6DNSSD.so, libKF6DocTools.so, libKF6FileMetaData.so, libKF6GlobalAccel.so, libKF6GuiAddons.so, libKF6Holidays.so, libKF6I18n.so, libKF6I18nLocaleData.so, libKF6I18nQml.so, libKF6IconThemes.so, libKF6IconWidgets.so, libKF6IdleTime.so, libKF6ItemModels.so, libKF6ItemViews.so, libKF6JobWidgets.so, libKF6KCMUtils.so, libKF6KCMUtilsCore.so, libKF6KCMUtilsQuick.so, libKF6KIOCore.so, libKF6KIOFileWidgets.so, libKF6KIOGui.so, libKF6KIOWidgets.so, libKF6ModemManagerQt.so, libKF6NetworkManagerQt.so, libKF6NewStuffCore.so, libKF6NewStuffWidgets.so, libKF6Notifications.so, libKF6NotifyConfig.so, libKF6Package.so, libKF6Parts.so, libKF6PeopleBackend.so, libKF6People.so, libKF6PeopleWidgets.so, libKF6Plotting.so, libKF6PrisonScanner.so, libKF6Prison.so, libKF6Pty.so, libKF6Purpose.so, libKF6PurposeWidgets.so, libKF6Runner.so, libKF6Service.so, libKF6Solid.so, libKF6SonnetCore.so, libKF6SonnetUi.so, libKF6StatusNotifierItem.so, libKF6Style.so, libKF6Su.so, libKF6Svg.so, libKF6Syndication.so, libKF6SyntaxHighlighting.so, libKF6TextEditor.so, libKF6TextTemplate.so, libKF6TextWidgets.so, libKF6ThreadWeaver.so, libKF6UnitConversion.so, libKF6UserFeedbackCore.so, libKF6UserFeedbackWidgets.so, libKF6Wallet.so, libKF6WidgetsAddons.so, libKF6WindowSystem.so, libKF6XmlGui.so, libKirigamiDelegates.so, libKirigamiDialogs.so, libKirigamiLayoutsPrivate.so, libKirigamiLayouts.so, libKirigamiPlatform.so, libKirigamiPolyfill.so, libKirigamiPrimitives.so, libKirigamiPrivate.so, libKirigami.so, libKirigamiLayouts.so, libkuriikwsfiltereng_private.so, libQuickCharts.so et libQuickChartsControls.so
Répertoires installés: /opt/kf6 (lien symbolique vers /opt/kf6-6.23.0) si vous installez dans /opt

Descriptions courtes

checkXML6

est un outil pour vérifier les erreurs de syntaxe dans les fichiers DocBook XML de KDE

kbuildsycoca6

reconstruit le cache des fichiers de configuration système de KService

kcmshell6

débute un unique module de paramètres systèmes, qui peut être utile pour déboguer des problèmes avec l'application de paramètres systèmes

kded6

consolide plusieurs petits services en un processus unique

kde-geo-uri-handler

traite les URI qui contiennent des informations de géolocalisation

kiconfinder6

cherche un icône par son nom

knewstuff-dialog6

affiche un fichier KNSRC (qui utilise le cadriciel KNewStuff)

kpackagetool6

est un outil en ligne de commande pour gérer des paquets KDE

kquitapp6

est un outil en ligne de commande pour forcer une application qui utilise D-Bus à quitter en toute sécurité

kreadconfig6

est un outil en ligne de commande pour retrouver les valeurs des fichiers de configuration de KDE

ksecretd

démarre le service KDE Wallet, qui permet de gérer les mots de passe et les certificats enregistrés par l'utilisateur·ice

ksyntaxhighlighter6

est un analyseur syntaxique en ligne de commande qui utilise les définitions de syntaxe de KSyntaxHighlighting

ktelnetservice6

est utilisé par Konsole pour gérer les protocoles Telnet et SSH

ktexteditor-script-tester6

est un outil en ligne de commande pour valider et tester les scripts de commande Kate

ktrash6

est un programme d'aide pour gérer la poubelle de KDE

kwalletd6

est un service de compatibilité pour KWallet, qui enveloppe libsecret et ksecretd

kwallet-query

est un outil en ligne de commande pour envoyer des requêtes à KWallet et ksecretd et lister les entrées du portefeuille, ainsi que lire ou écrire un mot de passe

kwriteconfig6

est un outil en ligne de commande pour écrire des valeurs dans les fichiers de configuration de KDE

meinproc6

convertit les fichiers DocBook en HTML

parsetrigrams6

est un outil en ligne de commande pour analyser des trigrammes

solid-hardware6

est un outil en ligne de commande pour chercher les périphériques disponibles sur un système