Construction de KDE Frameworks 6.17.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).

Ce paquet est connu pour pouvoir être construit et fonctionner correctement avec une plateform 12.4.

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.17.0, breeze-icons-6.17.0, docbook-xml-4.5, docbook-xsl-nons-1.79.2, libcanberra-0.30, libgcrypt-1.11.2, libical-3.0.20, libxslt-1.1.43, lmdb-0.9.33, qca-2.3.10, libqrencode-4.1.1, plasma-wayland-protocols-1.18.0, PyYAML-6.0.2, shared-mime-info-2.4, URI-5.32 et Wget-1.25.0 (requis pour télécharger les paquets)

Recommandes

Facultatives

BlueZ-5.83 (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, libjxl-0.11.1, libraw-0.21.4, libheif, OpenEXR

Dépendances facultatives pour Solid

UDisks-2.10.1, UPower-1.90.9 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.17/
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.17.0.md5 << "EOF"
82423c1b42100b5b776c8fecdc042a40  attica-6.17.0.tar.xz
#c6c6e39f1bba551a21401cd5fbba1c1a  extra-cmake-modules-6.17.0.tar.xz
8a59548faa1778cef7a6ad3395490ed2  kapidox-6.17.0.tar.xz
7ac1e1b5d4be693f208381b4fa704965  karchive-6.17.0.tar.xz
77d7969cda44acc3c679f230d2a82f9d  kcodecs-6.17.0.tar.xz
51d38c6aec7f6af07bd0fff8c96b3505  kconfig-6.17.0.tar.xz
0e497f3da6780a81eebadd22c856bc00  kcoreaddons-6.17.0.tar.xz
4ae23e5cba7f547e5202e5eeb1842f49  kdbusaddons-6.17.0.tar.xz
cbd3e5128e0cdcdb8096d54579601bb7  kdnssd-6.17.0.tar.xz
f33a5c69a7649ffba69a1aa52feaf649  kguiaddons-6.17.0.tar.xz
4c75596dc00ad12e9a80bf7798d9f843  ki18n-6.17.0.tar.xz
e86f50568a3303f2542db2b4fb5183db  kidletime-6.17.0.tar.xz
4b291a60f6374f96e2cf99a38ddb5eb9  kimageformats-6.17.0.tar.xz
4aca52e11e671da59d87c24de5206055  kitemmodels-6.17.0.tar.xz
e01dc3235328a28275f9b6f30d915a60  kitemviews-6.17.0.tar.xz
c1afe10db53a7f061364bb8be10fc451  kplotting-6.17.0.tar.xz
238a7cb973629f9d6207fbd80e3a2a43  kwidgetsaddons-6.17.0.tar.xz
9a8e56599a0bfa0fd5ca8f52c04dd410  kwindowsystem-6.17.0.tar.xz
a999ecf34d2a08ddf9de8d1ef6b00930  networkmanager-qt-6.17.0.tar.xz
8c8239af3e50c7ae75c51292e077307d  solid-6.17.0.tar.xz
38b1c0354ca13efb9378c9a9f7ca6d4c  sonnet-6.17.0.tar.xz
1dea5634f166937e9657defd8a1c435a  threadweaver-6.17.0.tar.xz
c1c4bdcd93a64b424938efd31994b391  kauth-6.17.0.tar.xz
164f867d80ea9d511d120a2316e2d083  kcompletion-6.17.0.tar.xz
9bbc4d738ffcdb2980b7d03483f0ecaf  kcrash-6.17.0.tar.xz
318b37f959efb7b8414fd6f225fc6180  kdoctools-6.17.0.tar.xz
b53d98281af63012844e42f4d2340e72  kpty-6.17.0.tar.xz
81260390604d84f30fc7e397f2a71377  kunitconversion-6.17.0.tar.xz
e178d79bf39b6eca3c5a43904e1e6812  kcolorscheme-6.17.0.tar.xz
288b6d923b1e0e470902226cb0150aef  kconfigwidgets-6.17.0.tar.xz
bdec608acd77463bc13be706143e1ad1  kservice-6.17.0.tar.xz
bc8d0c1a7915679d265996c3f8cf022d  kglobalaccel-6.17.0.tar.xz
71aced57987eecd1a54cd78c4acf0997  kpackage-6.17.0.tar.xz
e4e7130dbc3df657419a41b1716fae88  kdesu-6.17.0.tar.xz
973fc15005119c8206deac1e7c950928  kiconthemes-6.17.0.tar.xz
7d2f8797d6a7d01481ccaa5853853f78  knotifications-6.17.0.tar.xz
1281a859bbade7b6d0f4062be5801503  kjobwidgets-6.17.0.tar.xz
a7241f89698eef4da4476c5f8e942532  ktextwidgets-6.17.0.tar.xz
f081efe2093e1808ec936a1504aa921b  kxmlgui-6.17.0.tar.xz
d9e0be9f6ab3a826d46bd69fab5df3cc  kbookmarks-6.17.0.tar.xz
be6b34cd7395ce1bfbb026202a0fb049  kwallet-6.17.0.tar.xz
ade7d92808bcc51303aac1e3d2fac1ea  kded-6.17.0.tar.xz
6f2caa8f5cc4c473c14024ef33292aa6  kio-6.17.0.tar.xz
af1144caf162a8e7183178b9697d4b76  kdeclarative-6.17.0.tar.xz
75a1a1af5647ef5ae2a4800bd5d0436e  kcmutils-6.17.0.tar.xz
9c3167fb2f81a610149d0baa9086cd03  kirigami-6.17.0.tar.xz
eefe9fd856c0d90c8e70c36cf8d71b0b  syndication-6.17.0.tar.xz
3315f351aac4fd66d1be6783d25f767b  knewstuff-6.17.0.tar.xz
58f3a8d01b2471487b5e1fee5d7428d7  frameworkintegration-6.17.0.tar.xz
b58edde459f7df84e6ac15b8c0d8a0b3  kparts-6.17.0.tar.xz
c9b97c254e572760633966017640447d  syntax-highlighting-6.17.0.tar.xz
00047f9c145d242212cf7e0bdbdd11c5  ktexteditor-6.17.0.tar.xz
c155065874518609dd0ca9159e03ee2f  modemmanager-qt-6.17.0.tar.xz
cc4c525dff89bdb2f65e3130df58e280  kcontacts-6.17.0.tar.xz
ddbcacdc97fcac94fc23624f8d86b3cd  kpeople-6.17.0.tar.xz
cff7e94d07346f8fe0863ab4140965d1  bluez-qt-6.17.0.tar.xz
07374ffc535818d174f3b2a477935c74  kfilemetadata-6.17.0.tar.xz
5f352802358f0106418a233379e6f67a  baloo-6.17.0.tar.xz
#9aaed8b97970adf982f732e528050aca  breeze-icons-6.17.0.tar.xz
3c04c64a88d1273856b9dfca5b31e787  krunner-6.17.0.tar.xz
051d08b46b47d9f79266f8c54f67ddc3  prison-6.17.0.tar.xz
1fc84041ca6959adf18aeb6f7f16519e  qqc2-desktop-style-6.17.0.tar.xz
6560b5d9e25758afc0c72a35374d6f8f  kholidays-6.17.0.tar.xz
6c40e376dae0209229739c9e92259964  purpose-6.17.0.tar.xz
60e2beddf625dd29b06ecb9966968824  kcalendarcore-6.17.0.tar.xz
76a127b6826b69f24a491c911d5f1731  kquickcharts-6.17.0.tar.xz
dad770e5aa4ad6b7c83625488c119619  knotifyconfig-6.17.0.tar.xz
2ef222252c3e1f9f131fe6d89ada580e  kdav-6.17.0.tar.xz
e60223dddf9812597933d37c9ced0003  kstatusnotifieritem-6.17.0.tar.xz
bd54e23c136fcb53ec866c476f1919c4  ksvg-6.17.0.tar.xz
242303b5dcdb5d4eab00c4d16980aec0  ktexttemplate-6.17.0.tar.xz
56e69133a11b2e67355d4869959be9ba  kuserfeedback-6.17.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.17.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.

Installation de KDE Frameworks

[Note]

Note

Pour l'installation de paquets multiples dans un script, les installations doivent être faites en tant qu'utilisateur root. Il y a trois options générales qui peuvent être utilisées pour faire cela :

  1. Lancer le script entièrement en tant qu'utilisateur root (pas recommandé).

  2. Use the sudo command from the Sudo-1.9.17p2 package.

  3. Use su -c "command arguments" (guillemet requis) 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 sélectionne 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

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.17.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.

Des unités systemd inutiles ont été installées dans $KF6_PREFIX/lib. Supprimez-les maintenant (en root) :

rm -rf $KF6_PREFIX/lib/systemd

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.17.0
ln -sfvn kf6-6.17.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: balooctl, baloo_file, baloo_file_extractor, baloosearch, balooshow, checkXML6, depdiagram-generate, depdiagram-generate-all, depdiagram-prepare, desktoptojson, gentrigrams, kactivities-cli, kapidox_generate, kate-syntax-highlighter, kbuildsycoca6, kcookiejar6, kdebugdialog6, kded6, kdeinit6, kdeinit6_shutdown, kdeinit6_wrapper, kf6-config, kf6kross, kgendesignerplugin, kglobalaccel6, kiconfinder6, kjs6, kjscmd6, kjsconsole, knewstuff-dialog, kpackagelauncherqml, kpackagetool6, kquitapp6, kreadconfig6, kshell6, ktelnetservice6, ktrash6, kwalletd6, kwallet-query, kwrapper6, kwriteconfig6, meinproc6, parsetrigrams, plasmapkg2, preparetips6, protocoltojson et solid-hardware6
Bibliothèques installées: libkdeinit6_klauncher.so, libKF6Activities.so, libKF6ActivitiesStats.so, libKF6Archive.so, libKF6Attica.so, libKF6AuthCore.so, libKF6Auth.so, libKF6Baloo.so, libKF6BluezQt.so, libKF6Bookmarks.so, libKF6CalendarCore.so, libKF6CalendarEvents.so, libKF6Codecs.so, libKF6Completion.so, libKF6ConfigCore.so, libKF6ConfigGui.so, libKF6ConfigWidgets.so, libKF6Contacts.so, libKF6CoreAddons.so, libKF6Crash.so, libKF6DAV.so, libKF6DBusAddons.so, libKF6Declarative.so, libKF6DNSSD.so, libKF6DocTools.so, libKF6Emoticons.so, libKF6FileMetaData.so, libKF6GlobalAccel.so, libKF6GuiAddons.so, libKF6Holidays.so, libKF6I18n.so, libKF6IconThemes.so, libKF6IdleTime.so, libKF6ItemModels.so, libKF6ItemViews.so, libKF6JobWidgets.so, libKF6JSApi.so, libKF6JsEmbed.so, libKF6JS.so, libKF6KCMUtils.so, libKF6KDELibs4Support.so, libKF6KHtml.so, libKF6KIOCore.so, libKF6KIOFileWidgets.so, libKF6KIOGui.so, libKF6KIONTLM.so, libKF6KIOWidgets.so, libKF6Kirigami2.so, libKF6KrossCore.so, libKF6KrossUi.so, libKF6MediaPlayer.so, libKF6NetworkManagerQt.so, libKF6NewStuffCore.so, libKF6NewStuff.so, libKF6Notifications.so, libKF6NotifyConfig.so, libKF6Package.so, libKF6Parts.so, libKF6PeopleBackend.so, libKF6People.so, libKF6PeopleWidgets.so, libKF6PlasmaQuick.so, libKF6Plasma.so, libKF6Plotting.so, libKF6Prison.so, libKF6Pty.so, libKF6Purpose.so, libKF6PurposeWidgets.so, libKF6QuickAddons.so, libKF6Runner.so, libKF6Service.so, libKF6Solid.so, libKF6SonnetCore.so, libKF6SonnetUi.so, libKF6Style.so, libKF6Su.so, libKF6SyntaxHighlighting.so, libKF6TextEditor.so, libKF6TextWidgets.so, libKF6ThreadWeaver.so, libKF6UnitConversion.so, libKF6Wallet.so, libKF6WaylandClient.so, libKF6WaylandServer.so, libKF6WidgetsAddons.so, libKF6WindowSystem.so, libKF6XmlGui.so, libKF6XmlRpcClient.so et libkwalletbackend6.so
Répertoires installés: /opt/kf6 (lien symbolique vers /opt/kf6-6.17.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

depdiagram-generate

est un outil pour générer un diagramme de dépendances

depdiagram-generate-all

est un outil pour générer un diagramme de dépendance pour tous les frameworks en même temps

depdiagram-prepare

est un outil pour préparer les fichiers dot

desktoptojson

est un outil pour convertir un fichier .desktop en fichier .json

kbuildsycoca6

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

kcookiejar6

est une interface en ligne de commandes pour enregistrer les cookies HTTP utilisés par KDE, un service D-BUS pour enregistrer, retrouver, nettoyer les cookies

kded6

consolide plusieurs petits services en un processus

kdeinit6

est un lanceur de processus similaire au fameux init utilisé pour le démarrage d'UNIX

kf6-config

est un programme en ligne de commande utilisé pour retrouver des informations sur l'installation de KDE ou les chemins des utilisateurs

kf6kross

éxecute des scripts kross écrit en KDE Javascript, Python, Ruby, Java et Falcon

kgendesignerplugin

génère des greffons pour Qt(TM) Designer

kglobalaccel6

est un démon utilisé pour enregistrer les raccourcis clavier et pour obtenir une notification quand l'action est réalisée

kjs6

est le moteur KDE ECMAScript/JavaScript

kjscmd6

est un outil pour lancer les scripts KJSEmbed depuis la ligne de commandes

kjsconsole

est une console pour kjs6

kpackagelauncherqml

est un outil en ligne de commande pour le lancement des applications kpackage QML

kpackagetool6

est un outil en ligne de commande pour kpackage

kreadconfig6

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

kshell6

démarre des applications via kdeinit

ktelnetservice6

est un service telnet

ktrash6

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

kwalletd6

est le démon de gestion de portefeuille

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

plasmapkg2

est un outil pour installer, lister et supprimer les paquets Plasma

preparetips6

est un script pour extraire le texte depuis un fichier d'astuces

solid-hardware6

est un outil en ligne de commande pour chercher les périphériques disponibles