Introduction à D-BUS
D-BUS est un système bus de
message, une manière simple pour les applications de parler entre
elles. D-BUS fournit un démon
système (pour des événements tels que « nouveau périphérique ajouté » ou
« queue de l'imprimante
modifiée ») et un démon aligné sur la session de
l'utilisateur (pour les besoins IPC généraux des applications de
l'utilisateur). Le bus de message est aussi construit au sommet
d'un environnement de passage de message entre éléments général,
qui peut être utilisé par deux applications pour communiquer
directement (sans passer par le démon de bus de message).
Ce paquet est connu pour se construire correctement sur une
plateforme LFS-7.8.
Informations sur le paquet
-
Téléchargement (HTTP) :
http://dbus.freedesktop.org/releases/dbus/dbus-1.10.0.tar.gz
-
Somme de contrôle MD5 du téléchargement :
5af6297348107a906c8449817a728b3b
-
Taille du téléchargement : 2 Mo
-
Estimation de l'espace disque requis : 28 Mo (additional
81 Mo with doxygen and xml documents, without tests))
-
Estimation du temps de construction : 0.3 SBU (without
tests)
Dépendances de D-BUS
Recommandées
Xorg Libraries (pour le programme
dbus-launch)
Facultatives
Pour les tests: dbus-glib-0.104, D-Bus
Python-1.2.0, PyGObject-2.28.6, et Valgrind-3.10.1; pour
la documentation: Doxygen-1.8.10, xmlto-0.0.26,
Ducktype, et
Yelp Tools
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/dbus
Installation de D-BUS
S'il n'existe pas déjà, en tant qu'utilisateur root
, créez un utilisateur et un groupe
systèmes pour gérer l'activité du bus de messages système :
groupadd -g 18 messagebus &&
useradd -c "D-Bus Message Daemon User" -d /var/run/dbus \
-u 18 -g messagebus -s /bin/false messagebus
Installez D-BUS en lançant les
commandes suivantes (vous pouvez d'abord souhaiter observer la
sortie de ./configure
--help et ajouter des paramètres désirés à la
commande configure
affichée ci-dessous) :
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-doxygen-docs \
--disable-xml-docs \
--disable-static \
--disable-systemd \
--without-systemdsystemunitdir \
--with-console-auth-dir=/run/console/ \
--docdir=/usr/share/doc/dbus-1.10.0 &&
make
Voir ci-dessous pour les instructions de test.
Maintenant, en tant qu'utilisateur root
:
make install
Si vous utilisez une installation DESTDIR, dbus-daemon-launch-helper demande
à être corrigé. Tapez en tant qu'utilisateur root
chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &&
chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper
Si vous construisez votre système en chroot ou que vous n'avez pas
encore lancé le démon, mais que vous souhaitez compiler certains
paquets dépendant de D-Bus,
générez l'UUID D-Bus afin d'éviter
les avertissements lors de la compilation de certains paquet à
l'aide de la commande suivante en utilisateur root
:
dbus-uuidgen --ensure
Les tests dbus ne peuvent pas être lancé tant que dbus-glib-0.104
n'est pas installé. Ils peuvent être lancé en tant qu'utilisateur
sans privilèges depuis une session locale avec une adresse de bus.
Les test échouent via ssh. Si vous voulez lancer seulement les
tests unitaires, remplacez, ensuite, --enable-tests
par --enable-embedded-tests
, autrement,
D-Bus Python-1.2.0 a été installé, avant. Les
tests demandent de passer des paramètres supplémentaires à
configure et d'avoir
des fonctionnalités supplémentaires dans les fichiers binaires. Ces
interfaces ne sont pas destinés à être utilisées dans une
construction de production de D-BUS. Si vous souhaitez lancer la suite de
tests, tapez les commandes suivantes (pour les tests, vous n'avez
pas besoin de construire les docs) :
make distclean &&
./configure --enable-tests \
--enable-asserts \
--disable-doxygen-docs \
--disable-xml-docs &&
make &&
make check
Si run-test.sh
échoue, il peut être désactivé avec le sed suivant, avant de lancer
les commandes pour les tests:
sed -i -e 's:run-test.sh:$(NULL):g' test/name-test/Makefile.in
Il y a un signalement indiquant que les tests peuvent échouer s'ils
sont lancés depuis un shell Midnight Commander. Il se peut vous
vous ayez des messages d'erreur de dépassement de mémoire lors des
tests. Ils sont normaux et vous pouvez sans problème les ignorer.
Explication des commandes
--disable-doxygen-docs
: Ce
paramètre désactive la construction de la documentation doxygen et
l'installation, si vous n'avez pas installé doxygen. Effacez, si doxygen est installé et que vous souhaitez
construire et l'installer.
--disable-xml-docs
: Ce
paramètre désactive la construction et l'installation de la
documentation html si vous avez installé xmlto. Supprimez le, si xmlto est installé et que vous souhaitiez la
contruire et l'installer.
--disable-static
: Ce
paramètre empêche l'installation des versions statiques des
bibliothèques.
--disable-systemd
:
Cette option désactive le support de systemd dans D-Bus
--without-systemdsystemunitdir
: Ce
paramètre empêche l'installation des fichiers unités de systemd.
--with-console-auth-dir=/run/console/
:
Ce paramètre spécifie l'endroit pour le répertoire auth de
ConsoleKit.
--enable-tests
:
Construit des parties supplémentaires du code pour tous les tests.
Configure se terminera avec un avertissement NOTE à propos de
l'augmentation de la taille des bibliothèques et de la perte de
sécurité.
--enable-embedded-tests
:
Construit des parties supplémentaires du code pour seulement les
tests unitaires. Configure se terminera avec un avertissement NOTE
à propos de l'augmentation de la taille des bibliothèques et de la
perte de sécurité.
--enable-asserts
:
Active le code de débogage pour exécuter des déclarations
d'éléments supposées normalement vraies. Cela empêche un
avertissement selon lequel '--enable-tests
' n'est utile en
lui-même que pour le profilage et il pourrait ne pas donner de bon
résultats pour tous les tests, mais il ajoute sa propre remarque
selon laquelle cela ne devrait pas être utilisé dans une
construction de production.
Configuration de dbus
Fichiers de
configuration
/etc/dbus-1/session.conf
,
/etc/dbus-1/system.conf
et
/etc/dbus-1/system.d/*
Informations de configuration
On ne devrait probablement pas modifier les fichiers de
configuration listés ci-dessus. Si des modifications sont
requises, vous devriez créer /etc/dbus-1/session-local.conf
et/ou
/etc/dbus-1/system-local.conf
et
faire les changements désirés à ces fichiers.
Si un paquet installe un fichier .service
de D-Bus hors du répertoire /usr/share/dbus-1/services
standard, vous
devriez ajouter ce répertoire à la configuration de la session
locale. Par exemple, /usr/local/share/dbus-1/services
peut être
ajouté en effectuant les commandes suivantes en tant
qu'utilisateur root
:
cat > /etc/dbus-1/session-local.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Search for .service files in /usr/local -->
<servicedir>/usr/local/share/dbus-1/services</servicedir>
</busconfig>
EOF
Script de démarrage
Pour démarrer automatiquement dbus-daemon quand on redémarre
le système, installez le script de démarrage /etc/rc.d/init.d/dbus
depuis le paquet
blfs-bootscripts-20150924.
make install-dbus
Remarquez que ce script de démarrage ne démarre que démon
D-BUS de tout le système. Chaque
utilisateur ayant besoin d'un accès aux services de D-BUS devront exécuter en plus un démon de
session. Il y a beaucoup de méthodes utilisables pour démarrer un
démon de session en utilisant la commande dbus-launch. Revoyez la page de
man de dbus-launch
pour des détails sur les paramètres et les options disponibles.
Voici quelques suggestions et exemples :
-
Ajouter dbus-launch à la ligne
dans le fichier ~/.xinitrc
qui démarre votre environnement graphique .
-
Si vous utilisez xdm ou un autre
gestionnaire d'affichage qui appelle le fichier
~/.xsession
, vous pouvez
ajouter dbus-launch à la ligne
dans votre fichier ~/.xsession
qui démarre votre
environnement graphique. La syntaxe ressemblerait à celle
de l'exemple dans le fichier ~/.xinitrc
.
-
L'exemple montré précédement utilise dbus-launch pour
spécifier un programme à executer. Ceci à le bénéfice
(Quand on utilise également le paramètre --exit-with-session
) de
stopper le démon de la session quand le programme spécifié
est stoppé. Vous pouvez également commencer le démon de la
session dans vos scripts de démarrage du système où
personels en ajoutant les lignes suivantes :
# Start the D-Bus session daemon
eval `dbus-launch`
export DBUS_SESSION_BUS_ADDRESS
Cette méthode n'arrêtera pas le démon de session quand vous
quittez votre shell, donc vous devriez ajouter la ligne
suivante à votre fichier ~/.bash_logout
:
# Kill the D-Bus session daemon
kill $DBUS_SESSION_BUS_PID
-
Une astuce a été écrite offrant des moyens de démarrer des
scripts utilisant le gestionnaire de sessions KDM de KDE.
Les concepts de cette astuce pourraient être éventuellement
utilisés aussi avec d'autres gestionnaires de session.
L'astuce se trouve sur
http://www.linuxfromscratch.org/hints/downloads/files/execute-session-scripts-using-kdm.txt.