8.71. D-Bus-1.12.20

D-bus 是一个消息总线系统,即应用程序之间互相通信的一种简单方式。D-Bus 提供一个系统守护进程 (负责 “添加了新硬件” 或 “打印队列发生改变” 等事件),并对每个用户登录会话提供一个守护进程 (负责一般用户程序的进程间通信)。另外,消息总线被构建在一个通用的一对一消息传递网络上,它可以被任意两个程序用于直接通信 (不需通过消息总线守护进程)。

估计构建时间: 0.2 SBU
需要硬盘空间: 18 MB

8.71.1. 安装 D-Bus

准备编译 D-Bus:

./configure --prefix=/usr                        \
            --sysconfdir=/etc                    \
            --localstatedir=/var                 \
            --disable-static                     \
            --disable-doxygen-docs               \
            --disable-xml-docs                   \
            --docdir=/usr/share/doc/dbus-1.12.20 \
            --with-console-auth-dir=/run/console \
            --with-system-pid-file=/run/dbus/pid \
            --with-system-socket=/run/dbus/system_bus_socket

配置选项的含义:

--with-console-auth-dir=/run/console

该选项指定 ConsoleKit 认证目录位置。

--with-system-pid-file=/run/dbus/pid--with-system-socket=/run/dbus/system_bus_socket

将 PID 文件和系统总线套接字的位置设定在 /run 中,而非过时的 /var/run

编译该软件包:

make

该软件包有测试套件,但需要 LFS 没有包含的一些软件包。阅读 BLFS 手册中的 http://www.linuxfromscratch.org/blfs/view/svn/general/dbus.html,以查阅运行测试套件的说明。

安装该软件包:

make install

需要将共享库移动到 /lib,因此 /usr/lib 中的 .so 符号链接需要重新建立:

mv -v /usr/lib/libdbus-1.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so

创建符号链接,使 D-Bus 和 systemd 使用同一个 machine-id 文件:

ln -sfv /etc/machine-id /var/lib/dbus

8.71.2. D-Bus 的内容

安装的程序: dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor, dbus-run-session, dbus-send, dbus-test-tool, dbus-update-activation-environment, 以及 dbus-uuidgen
安装的库: libdbus-1.{a,so}
安装的目录: /etc/dbus-1, /usr/include/dbus-1.0, /usr/lib/dbus-1.0, /usr/share/dbus-1, /usr/share/doc/dbus-1.12.20, 以及 /var/lib/dbus

简要描述

dbus-cleanup-sockets

用于清理目录中遗留的套接字

dbus-daemon

是 D-Bus 消息总线守护程序

dbus-launch

从 shell 脚本启动 dbus-daemon

dbus-monitor

监视通过一个 D-Bus 消息总线的消息

dbus-run-session

从 shell 脚本启动一个 dbus-daemon 的会话总线实例,并在该会话中启动给定程序

dbus-send

向 D-Bus 消息总线发送消息

dbus-test-tool

是一个帮助软件包测试 D-Bus 的工具

dbus-update-activation-environment

更新将会为 D-Bus 会话服务设置的环境变量

dbus-uuidgen

产生通用唯一识别码

libdbus-1

包含用于和 D-Bus 消息总线通信的 API 函数