Constructions de KDE Frameworks 5 (KF5)

KDE Frameworks 5 est une collection de bibliothèques basée sur Qt5 et dérivée de QML depuis les bibliothèques monolithiques de KDE 4. Elles peuvent être utilisées indépendamment de l'environnement d'affichage KDE (Plasma 5).

[Note]

Note

Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

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

Informations sur le paquet

Dépendances de KF5

Requises

Boost-1.79.0, extra-cmake-modules-5.94.0, docbook-xml-4.5, docbook-xsl-nons-1.79.2, giflib-5.2.1, libepoxy-1.5.10, libgcrypt-1.10.1, libical-3.0.14, libjpeg-turbo-2.1.3, libpng-1.6.37, libxslt-1.1.35, lmdb-0.9.29, qrencode-4.1.1, phonon-4.11.1, plasma-wayland-protocols-1.7.0, shared-mime-info-2.2, URI-5.12 et Wget-1.21.3 (requis pour télécharger les packages)

Recommandées

Facultatives

BlueZ-5.65 (requis pour construire Bluez-Qt), ModemManager-1.18.10 (requis pour construire ModemManager-Qt), Datamatrix (recommandé pour Prison par les développeurs en amont)

Dépendance à l'exécution de FrameworkIntegration

Polices Oxygen et polices Noto

Support des formats d'images supplémentaires dans KImageFormats

JasPer-3.0.6 et OpenEXR

Dépendances facultatives de KIO

MIT Kerberos V5-1.20

Dépendances facultatives pour Solid

UDisks-2.9.4, UPower-1.90.0 et media-player-info (exécution)

Dépendance facultative pour KWallet

GPGME-1.17.1, construit avec les liaisons C++ (ce qui est le cas par défaut).

Moteurs de dictionnaires facultatifs pour Sonnet

Hspell et Hunspell

Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/kf5

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/5.94/
wget -r -nH -nd -A '*.xz' -np $url

The options used here are:
  -r            recurse through child directories
  -nH           disable generation of host-prefixed directories
  -nd           do not create a hierarchy of directories
  -A '*.xz'     just get the *.xz files
  -np           don't get parent directories

Initialisation de l'ordre des paquets

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

cat > frameworks-5.94.0.md5 << "EOF"
4c58b14c3e9b566efa1192d4ecd2af79  attica-5.94.0.tar.xz
#87284231fba89d63a644fd5580a93419  extra-cmake-modules-5.94.0.tar.xz
#05881681bb54a656df941760ec95f78f  kapidox-5.94.0.tar.xz
7755930b43e6d1c2ffd84d3a0900837c  karchive-5.94.0.tar.xz
5e369a4776d905113ffd3ff4253ec242  kcodecs-5.94.0.tar.xz
ef377ebb6a0a186f0b0c1d866e9cd9e0  kconfig-5.94.0.tar.xz
08307d77429c08cace165ee332774150  kcoreaddons-5.94.0.tar.xz
ec62f262f1e18f18f98583e2c2a9eef0  kdbusaddons-5.94.0.tar.xz
6e904e169b64308f26a849e97b57a229  kdnssd-5.94.0.tar.xz
b2c6301308c0d14e175ed7247a20a2f5  kguiaddons-5.94.0.tar.xz
a5ed561a992e8c153ba8ee9e928df775  ki18n-5.94.0.tar.xz
a20e40478fd1d97dfb1de841c618ddbb  kidletime-5.94.0.tar.xz
5d8a593d887dd87ec275ecd60463c23e  kimageformats-5.94.0.tar.xz
c70d3292fd64cf0601031a77b952da16  kitemmodels-5.94.0.tar.xz
598084088d4aa8774ed45fd90f27b889  kitemviews-5.94.0.tar.xz
a405d0efed821d49046701e23df3a15a  kplotting-5.94.0.tar.xz
28ec585eb7b021d9fe36c34a04e15e45  kwidgetsaddons-5.94.0.tar.xz
dc4600c342cf19a59f77a0a3e6f15f9a  kwindowsystem-5.94.0.tar.xz
13b415dae8fecc7bc13fd74da8dcbd5c  networkmanager-qt-5.94.0.tar.xz
f01586b53ec25461a79e9b041384ccf6  solid-5.94.0.tar.xz
4d9bb4004e793c74090b09c517a73ed3  sonnet-5.94.0.tar.xz
e0587825e0f9a9900907ebc5bdec4fc7  threadweaver-5.94.0.tar.xz
63298692e6643c2f9c46f5e896092249  kauth-5.94.0.tar.xz
df116b33cd4701417804995181043e17  kcompletion-5.94.0.tar.xz
b15403397a15cdd19cc9c37cc641a390  kcrash-5.94.0.tar.xz
89150622d44cbe16d0866630679ed344  kdoctools-5.94.0.tar.xz
8c9e66d27034ab827a7bff258c26ac40  kpty-5.94.0.tar.xz
e4614a7ff9b50b45f0d331569b1f037c  kunitconversion-5.94.0.tar.xz
99b651617d4aa11de8da3a29fca4f293  kconfigwidgets-5.94.0.tar.xz
0b503bfe8fa34c67d7cd05c3e4569deb  kservice-5.94.0.tar.xz
8962279f6b830f6facb2b4774fe3bbd5  kglobalaccel-5.94.0.tar.xz
f21bde21930493488e580b7ab2fb9a68  kpackage-5.94.0.tar.xz
0740b92bcdf9a693337a44d8d60010a8  kdesu-5.94.0.tar.xz
4074814f4ef40b9c4ef98730d04eacc3  kemoticons-5.94.0.tar.xz
39d57f459d465ee36257afa00d14c4af  kiconthemes-5.94.0.tar.xz
4efc13aa9b4c25e0c8ecdccbded0258b  kjobwidgets-5.94.0.tar.xz
b1eed570adcf176e26732e11d443b45f  knotifications-5.94.0.tar.xz
02196b04420b82dea5a8cfb1afe4c3ed  ktextwidgets-5.94.0.tar.xz
9e3262d243d0647fa449637bb6721257  kxmlgui-5.94.0.tar.xz
fdf2b3aa23143a61245d5c9c71b1e10a  kbookmarks-5.94.0.tar.xz
33dfaa62d9a29c728d5517cb470f4cab  kwallet-5.94.0.tar.xz
df17b4d7749752ea870f41ee939a6de2  kded-5.94.0.tar.xz
b173ed937a1031bbe3fcb9b00cde8ddf  kio-5.94.0.tar.xz
e1545546a5dffb1a204ee52ce35f262a  kdeclarative-5.94.0.tar.xz
1db143e7ae245d53c83310532f22c42c  kcmutils-5.94.0.tar.xz
a7dd929fe16bee46a7a6405496e07c1a  kirigami2-5.94.0.tar.xz
0b5af5f1b6a01fbfc2f9409080b1ed6d  syndication-5.94.0.tar.xz
910e635386cdbc7fb001a26188f2ad2f  knewstuff-5.94.0.tar.xz
e1234f34020f69e96029159b985a90fe  frameworkintegration-5.94.0.tar.xz
22d387e61144829658ee37e39dc63cd3  kinit-5.94.0.tar.xz
1eda63d543969f2e92a4bcd3431042d7  kparts-5.94.0.tar.xz
21e2b0a1a22a23b10396c8eed8c31b00  kactivities-5.94.0.tar.xz
#c67ab93795b50e39b1e31628da1ca011  kdewebkit-5.94.0.tar.xz
1848474b94ea30081d287870f9cba116  syntax-highlighting-5.94.0.tar.xz
0b2d6b28c7d543c1d32ad9726e29e40f  ktexteditor-5.94.0.tar.xz
4fbb3293df1edb2605ce928dcb562d97  kdesignerplugin-5.94.0.tar.xz
71e3be9e7c55af746b96d6ac72434019  kwayland-5.94.0.tar.xz
a3e74066c093105e4bb46f6feeecf16c  plasma-framework-5.94.0.tar.xz
#37ee3c5a952c19c827bb183ae0c30af1  modemmanager-qt-5.94.0.tar.xz
add7886e4c40a1f391bdb590130bc7ab  kpeople-5.94.0.tar.xz
f4b6e612931d90c89719a91710c1ca5c  kxmlrpcclient-5.94.0.tar.xz
f26170bc0c78b72cdeb0908df7524181  bluez-qt-5.94.0.tar.xz
3c1187cff306f87dce08100996a93b96  kfilemetadata-5.94.0.tar.xz
a453a4ab37073aafeb6e5a5c487230b9  baloo-5.94.0.tar.xz
#30d8ecac16f36e4b9fd1794a39460c42  breeze-icons-5.94.0.tar.xz
#0101721db51fdce9dd6e3e3b6de46f2a  oxygen-icons5-5.94.0.tar.xz
ff23ccf6ade8f2a7709b36846748758e  kactivities-stats-5.94.0.tar.xz
69f5c374d56ff468b8cd5d0cf6b3e223  krunner-5.94.0.tar.xz
60c71e3c275b97caacd7568987a4fab4  prison-5.94.0.tar.xz
5a24bcad8364bc54f08eeef64920d2c5  qqc2-desktop-style-5.94.0.tar.xz
10cd152091f2c14d7dcb888cd69aa902  kjs-5.94.0.tar.xz
caa2c3e5dcc94924877e5f1d2430b5a6  kdelibs4support-5.94.0.tar.xz
3afa34590fcc12338c17118859a604b3  khtml-5.94.0.tar.xz
7b2dd5afb48757ea1ec22f22a9fe880e  kjsembed-5.94.0.tar.xz
42434eaee534d1d82cd152368fd695a8  kmediaplayer-5.94.0.tar.xz
0ded971b6d9aa1fdc27d721c022fd6e4  kross-5.94.0.tar.xz
7f5fe39fa4d9714aeffa75d381a8d63a  kholidays-5.94.0.tar.xz
62928a8400931c074e4f924899e0ee3b  purpose-5.94.0.tar.xz
cef3c9347f6feb52ccb5bdf3d32d3572  kcalendarcore-5.94.0.tar.xz
e871157fef871e5b65c728b7bbc52c47  kcontacts-5.94.0.tar.xz
774aab02052060e0935b53a80b6aee2c  kquickcharts-5.94.0.tar.xz
d5eb244dabef2a80fef3344410fe1d89  knotifyconfig-5.94.0.tar.xz
67d0ce7a0c7bc64c5711440817585fce  kdav-5.94.0.tar.xz
EOF

Dans la liste précédente, remarquez que certains fichiers sont commentés avec un caractère dièse (#). L'entrée extra-cmake-modules est commentée car elle est construite plus tôt dans Introduction à KDE. Les paquets d'icônes sont traités séparément dans breeze-icons-5.94.0 et oxygen-icons5-5.94.0. Le paquet modemmanager-qt peut être construit si sa dépendance facultative est installée. Kdewebkit peut être construit si le paquet externe QtWebkit a été construit. Le paquet kapidox est un paquet uniquement en python et ne peut pas être construit avec les instructions ci-dessous.

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.11p3 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 déjà un répertoire /opt/kf5 soit en tant que répertoire normal, soit en tant que lien symbolique, il devrait être supprimé (en tant que root) :

mv -v /opt/kf5 /opt/kf5.old                         &&
install -v -dm755           $KF5_PREFIX/{etc,share} &&
ln -sfv /etc/dbus-1         $KF5_PREFIX/etc         &&
ln -sfv /usr/share/dbus-1   $KF5_PREFIX/share       &&
ln -sfv /usr/share/polkit-1 $KF5_PREFIX/share

Pour commencer, démarrez un sous-shell qui sortira 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|-5.*$||') # Isolate package name

    tar -xf $file
    pushd $packagedir

      mkdir build
      cd    build

      cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX \
            -DCMAKE_PREFIX_PATH=$QT5DIR        \
            -DCMAKE_BUILD_TYPE=Release         \
            -DBUILD_TESTING=OFF                \
            -Wno-dev ..
      make
      as_root make install
    popd

  as_root rm -rf $packagedir
  as_root /sbin/ldconfig

done < frameworks-5.94.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 $KF5_PREFIX/lib. Supprimez-les maintenant (en root) :

rm -rf $KF5_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/kf5 /opt/kf5-5.94.0
ln -sfvn kf5-5.94.0 /opt/kf5

Explication des commandes

-DCMAKE_PREFIX_PATH=$QT5DIR : Ce paramètre est utilisé pour permettre à cmake de trouver les bonnes bibliothèques Qt.

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

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

Contenu

Programmes installés: balooctl, baloo_file, baloo_file_extractor, baloosearch, balooshow, checkXML5, depdiagram-generate, depdiagram-generate-all, depdiagram-prepare, desktoptojson, gentrigrams, kactivities-cli, kapidox_generate, kate-syntax-highlighter, kbuildsycoca5, kcookiejar5, kdebugdialog5, kded5, kdeinit5, kdeinit5_shutdown, kdeinit5_wrapper, kf5-config, kf5kross, kgendesignerplugin, kglobalaccel5, kiconfinder5, kjs5, kjscmd5, kjsconsole, knewstuff-dialog, kpackagelauncherqml, kpackagetool5, kquitapp5, kreadconfig5, kshell5, ktelnetservice5, ktrash5, kwalletd5, kwallet-query, kwrapper5, kwriteconfig5, meinproc5, parsetrigrams, plasmapkg2, preparetips5, protocoltojson et solid-hardware5
Bibliothèques installées: libkdeinit5_klauncher.so, libKF5Activities.so, libKF5ActivitiesStats.so, libKF5Archive.so, libKF5Attica.so, libKF5AuthCore.so, libKF5Auth.so, libKF5Baloo.so, libKF5BluezQt.so, libKF5Bookmarks.so, libKF5CalendarCore.so, libKF5CalendarEvents.so, libKF5Codecs.so, libKF5Completion.so, libKF5ConfigCore.so, libKF5ConfigGui.so, libKF5ConfigWidgets.so, libKF5Contacts.so, libKF5CoreAddons.so, libKF5Crash.so, libKF5DAV.so, libKF5DBusAddons.so, libKF5Declarative.so, libKF5DNSSD.so, libKF5DocTools.so, libKF5Emoticons.so, libKF5FileMetaData.so, libKF5GlobalAccel.so, libKF5GuiAddons.so, libKF5Holidays.so, libKF5I18n.so, libKF5IconThemes.so, libKF5IdleTime.so, libKF5ItemModels.so, libKF5ItemViews.so, libKF5JobWidgets.so, libKF5JSApi.so, libKF5JsEmbed.so, libKF5JS.so, libKF5KCMUtils.so, libKF5KDELibs4Support.so, libKF5KHtml.so, libKF5KIOCore.so, libKF5KIOFileWidgets.so, libKF5KIOGui.so, libKF5KIONTLM.so, libKF5KIOWidgets.so, libKF5Kirigami2.so, libKF5KrossCore.so, libKF5KrossUi.so, libKF5MediaPlayer.so, libKF5NetworkManagerQt.so, libKF5NewStuffCore.so, libKF5NewStuff.so, libKF5Notifications.so, libKF5NotifyConfig.so, libKF5Package.so, libKF5Parts.so, libKF5PeopleBackend.so, libKF5People.so, libKF5PeopleWidgets.so, libKF5PlasmaQuick.so, libKF5Plasma.so, libKF5Plotting.so, libKF5Prison.so, libKF5Pty.so, libKF5Purpose.so, libKF5PurposeWidgets.so, libKF5QuickAddons.so, libKF5Runner.so, libKF5Service.so, libKF5Solid.so, libKF5SonnetCore.so, libKF5SonnetUi.so, libKF5Style.so, libKF5Su.so, libKF5SyntaxHighlighting.so, libKF5TextEditor.so, libKF5TextWidgets.so, libKF5ThreadWeaver.so, libKF5UnitConversion.so, libKF5Wallet.so, libKF5WaylandClient.so, libKF5WaylandServer.so, libKF5WidgetsAddons.so, libKF5WindowSystem.so, libKF5XmlGui.so, libKF5XmlRpcClient.so et libkwalletbackend5.so
Répertoires installés: /opt/kf5 (lien symbolique vers /opt/kf5-5.94.0) si vous installez dans /opt

Descriptions courtes

checkXML5

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

kbuildsycoca5

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

kcookiejar5

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

kded5

consolide plusieurs petits services en un processus

kdeinit5

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

kf5-config

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

kf5kross

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

kgendesignerplugin

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

kglobalaccel5

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

kjs5

est le moteur KDE ECMAScript/JavaScript

kjscmd5

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

kjsconsole

est une console pour kjs5

kpackagelauncherqml

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

kpackagetool5

est un outil en ligne de commande pour kpackage

kreadconfig5

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

kshell5

démarre des applications via kdeinit

ktelnetservice5

est un service telnet

ktrash5

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

kwalletd5

est le démon de gestion de portefeuille

kwriteconfig5

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

meinproc5

convertit les fichiers DocBook en HTML

plasmapkg2

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

preparetips5

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

solid-hardware5

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

Last updated on