source: general/sysutils/dbus.xml@ 30d0aef

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 30d0aef was 30d0aef, checked in by Ken Moffat <ken@…>, 15 years ago

dbus and dbus-glib.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@7635 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 16.7 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY dbus-download-http "http://dbus.freedesktop.org/releases/dbus/dbus-&dbus-version;.tar.gz">
8 <!--<!ENTITY dbus-download-ftp "&gentoo-ftp-repo;/dbus-&dbus-version;.tar.gz">-->
9 <!ENTITY dbus-download-ftp " ">
10 <!ENTITY dbus-md5sum "2e643910a09f44b000a0d76038637999">
11 <!ENTITY dbus-size "1.5 MB">
12 <!ENTITY dbus-buildsize "24 MB">
13 <!ENTITY dbus-time "0.5 SBU">
14]>
15
16<sect1 id="dbus" xreflabel="D-BUS-&dbus-version;">
17 <?dbhtml filename="dbus.html"?>
18
19 <sect1info>
20 <othername>$LastChangedBy$</othername>
21 <date>$Date$</date>
22 </sect1info>
23
24 <title>D-BUS-&dbus-version;</title>
25
26 <indexterm zone="dbus">
27 <primary sortas="a-D-BUS">D-BUS</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to D-BUS</title>
32
33 <para><application>D-BUS</application> is a message bus system, a simple
34 way for applications to talk to one another.
35 <application>D-BUS</application> supplies both a system daemon (for events
36 such as <quote>new hardware device added</quote> or <quote>printer queue
37 changed</quote>) and a per-user-login-session daemon (for general IPC needs
38 among user applications). Also, the message bus is built on top of a
39 general one-to-one message passing framework, which can be used by any two
40 applications to communicate directly (without going through the message bus
41 daemon).</para>
42
43 <bridgehead renderas="sect3">Package Information</bridgehead>
44 <itemizedlist spacing="compact">
45 <listitem>
46 <para>Download (HTTP): <ulink url="&dbus-download-http;"/></para>
47 </listitem>
48 <listitem>
49 <para>Download (FTP): <ulink url="&dbus-download-ftp;"/></para>
50 </listitem>
51 <listitem>
52 <para>Download MD5 sum: &dbus-md5sum;</para>
53 </listitem>
54 <listitem>
55 <para>Download size: &dbus-size;</para>
56 </listitem>
57 <listitem>
58 <para>Estimated disk space required: &dbus-buildsize;</para>
59 </listitem>
60 <listitem>
61 <para>Estimated build time: &dbus-time;</para>
62 </listitem>
63 </itemizedlist>
64
65 <bridgehead renderas="sect3">D-BUS Dependencies</bridgehead>
66
67 <bridgehead renderas="sect4">Required</bridgehead>
68 <para role="required"><xref linkend="expat"/> or both
69 <xref linkend="pkgconfig"/>
70 and <xref linkend="libxml2"/></para>
71
72 <bridgehead renderas="sect4">Optional</bridgehead>
73 <para role="optional"><xref linkend="x-window-system"/>,
74 <xref linkend="doxygen"/> (to generate the API documentation)
75 </para>
76
77 <para condition="html" role="usernotes">User Notes:
78 <ulink url="&blfs-wiki;/dbus"/></para>
79
80 </sect2>
81
82 <sect2 role="kernel" id='dbus-kernel'>
83 <title>Kernel Configuration</title>
84
85 <para>Ensure the following option is enabled in the kernel configuration
86 and recompile the kernel if necessary:</para>
87
88<screen><literal>General Setup
89 System V IPC</literal></screen>
90
91 <indexterm zone="dbus dbus-kernel">
92 <primary sortas="d-dbus">dbus</primary>
93 </indexterm>
94
95 </sect2>
96
97 <sect2 role="installation">
98 <title>Installation of D-BUS</title>
99
100 <para>As the <systemitem class="username">root</systemitem> user, create a
101 system user and group to handle the system message bus activity:</para>
102
103<screen role="root"><userinput>groupadd -g 18 messagebus &amp;&amp;
104useradd -c "D-BUS Message Daemon User" -d /dev/null \
105 -u 18 -g messagebus -s /bin/false messagebus</userinput></screen>
106
107 <para>This package's test suite cannot be run without passing additional
108 parameters to <command>configure</command> and exposing additional
109 functionality in the binaries. These interfaces are not intended to be
110 used in a production build of <application>D-BUS</application>, so it
111 will have to be built twice in this situation. If you would like to run
112 the unit tests, issue the following commands:</para>
113
114<screen><userinput>./configure --enable-tests --enable-asserts &amp;&amp;
115make &amp;&amp;
116make check &amp;&amp;
117make distclean</userinput></screen>
118
119 <para>Install <application>D-BUS</application> by running the following
120 commands (you may wish to review the output from
121 <command>./configure --help</command> first and add any desired parameters
122 to the <command>configure</command> command shown below):</para>
123
124<screen><userinput>./configure --prefix=/usr \
125 --sysconfdir=/etc \
126 --localstatedir=/var &amp;&amp;
127make</userinput></screen>
128
129 <para>The <option>--enable-doxygen-docs</option> parameter does not work
130 properly. If you have <application>Doxygen</application> installed and you
131 wish to build the API documentation, issue
132 <command>doxygen Doxyfile</command>.</para>
133
134 <para>Now, as the <systemitem class="username">root</systemitem> user:</para>
135
136<screen role="root"><userinput>make install &amp;&amp;
137install -v -m755 -d /usr/share/doc/dbus-&dbus-version; &amp;&amp;
138install -v -m644 doc/{TODO,*.{dtd,html,xml,xsl,txt,c}} \
139 /usr/share/doc/dbus-&dbus-version; &amp;&amp;</userinput></screen>
140
141 <para>If you built the API documentation, install it by issuing the
142 following commands as the <systemitem class="username">root</systemitem> user:</para>
143
144<screen role="root"><userinput>install -v -m755 -d /usr/share/doc/dbus-&dbus-version;/api \
145 /usr/share/man/man3dbus &amp;&amp;
146install -v -m644 doc/api/html/* \
147 /usr/share/doc/dbus-&dbus-version;/api &amp;&amp;
148install -v -m644 doc/api/man/man3dbus/* \
149 /usr/share/man/man3dbus</userinput></screen>
150
151 </sect2>
152
153 <sect2 role="commands">
154 <title>Command Explanations</title>
155
156 <para><parameter>--localstatedir=/var</parameter>: This parameter causes
157 the daemon PID file, system bus socket and machine uuid file to be
158 created in the <filename class="directory">/var</filename> directory
159 instead of the <filename class="directory">/usr/var</filename>
160 directory.</para>
161
162 <para><parameter>--enable-tests</parameter>: Build extra parts of the code
163 to support testing. Configure will end with a NOTE warning about this.</para>
164
165 <para><parameter>--enable-asserts</parameter>: Enable debugging code to run
166 assertions for statements normally assumed to be true. This prevents a
167 warning that '<parameter>--enable-tests</parameter>' on its own is only useful
168 for profiling and might not give true results for all tests, but adds its own
169 NOTE that this should not be used in a production build.
170 </para>
171
172 <para><parameter>--disable-static</parameter>: Prevent the static libraries
173 being built.</para>
174
175 </sect2>
176
177 <sect2 role="configuration">
178 <title>Configuring dbus</title>
179
180 <sect3 id="dbus-config">
181 <title>Config Files</title>
182 <para><filename>/etc/dbus-1/session.conf</filename>,
183 <filename>/etc/dbus-1/system.conf</filename> and
184 <filename>/etc/dbus-1/system.d/*</filename></para>
185
186 <indexterm zone="dbus dbus-config">
187 <primary sortas="e-etc-dbus-1-session.conf">/etc/dbus-1/session.conf</primary>
188 </indexterm>
189
190 <indexterm zone="dbus dbus-config">
191 <primary sortas="e-etc-dbus-1/system.conf">/etc/dbus-1/system.conf</primary>
192 </indexterm>
193
194 <indexterm zone="dbus dbus-config">
195 <primary sortas="e-etc-dbus-1-system.d-star">/etc/dbus-1/system.d/*</primary>
196 </indexterm>
197
198 </sect3>
199
200 <sect3 id="dbus-session-config" xreflabel="D-Bus custom services directory">
201 <title>Configuration Information</title>
202
203 <para>The configuration files listed above should probably not be
204 modified. If changes are required, you should create
205 <filename>/etc/dbus-1/session-local.conf</filename> and/or
206 <filename>/etc/dbus-1/system-local.conf</filename> and make any
207 desired changes to these files.</para>
208
209 <para>If any packages install a
210 <application>D-Bus</application> <filename>.service</filename>
211 file outside of the standard <filename
212 class="directory">/usr/share/dbus-1/services</filename> directory,
213 that directory should be added to the local session configuration.
214 For instance, <filename
215 class="directory">/usr/local/share/dbus-1/services</filename> can
216 be added by performing the following commands as the
217 <systemitem class="username">root</systemitem> user:</para>
218
219<screen role="root"><userinput>cat &gt; /etc/dbus-1/session-local.conf &lt;&lt; "EOF"
220<literal>&lt;!DOCTYPE busconfig PUBLIC
221 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
222 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
223&lt;busconfig&gt;
224
225 &lt;!-- Search for .service files in /usr/local --&gt;
226 &lt;servicedir&gt;/usr/local/share/dbus-1/services&lt;/servicedir&gt;
227
228&lt;/busconfig&gt;</literal>
229EOF</userinput></screen>
230
231 <para>Many packages will refuse to run if the file
232 <literal>/var/lib/dbus/machine-id</literal> does not exist, and
233 complain that <application>dbus</application> has not been properly
234 installed. To prevent this, run the following command as the
235 <systemitem class="username">root</systemitem> user:</para>
236
237<screen><userinput>dbus-uuidgen --ensure</userinput></screen>
238
239 <para>This will create a unique identifier for the machine.</para>
240
241 </sect3>
242
243 <sect3 id="dbus-init">
244 <title>Boot Script</title>
245
246 <para>To automatically start <command>dbus-daemon</command> when the
247 system is rebooted, install the
248 <filename>/etc/rc.d/init.d/dbus</filename> bootscript from the
249 <xref linkend="bootscripts"/> package.</para>
250
251 <indexterm zone="dbus dbus-init">
252 <primary sortas="f-dbus">dbus</primary>
253 </indexterm>
254
255<screen role="root"><userinput>make install-dbus</userinput></screen>
256
257 <para>Note that this boot script only starts the system-wide
258 <application>D-BUS</application> daemon. Each user requiring access to
259 <application>D-BUS</application> services will also need to run a
260 session daemon as well. There are many methods you can use to start a
261 session daemon using the <command>dbus-launch</command> command. Review
262 the <command>dbus-launch</command> man page for details about the
263 available parameters and options. Here are some suggestions and
264 examples:</para>
265
266 <itemizedlist spacing="compact">
267 <listitem>
268 <para>Add <command>dbus-launch</command> to the line in the
269 <filename>~/.xinitrc</filename> file that starts your graphical
270 desktop environment as shown in <xref linkend="gnome-config"/>.</para>
271 </listitem>
272 <listitem>
273 <para>If you use <command>xdm</command> or some other display manager
274 that calls the <filename>~/.xsession</filename> file, you can add
275 <command>dbus-launch</command> to the line in your
276 <filename>~/.xsession</filename> file that starts your graphical
277 desktop environment. The syntax would be similar to the example in
278 the <filename>~/.xinitrc</filename> file.</para>
279 </listitem>
280 <listitem>
281 <para>If you use <command>gdm</command> or some other display manager
282 that utilizes custom files to initiate sessions, use the example in
283 <xref linkend="gdm-config-dbus"/> of the
284 <application>GDM</application> instructions to create a file
285 containing <command>dbus-launch</command>.</para>
286 </listitem>
287 <listitem>
288 <para>The examples shown previously use
289 <command>dbus-launch</command> to specify a program to be run. This
290 has the benefit (when also using the
291 <parameter>--exit-with-session</parameter> parameter) of stopping the
292 session daemon when the specified program is stopped. You can also
293 start the session daemon in your system or personal startup scripts
294 by adding the following lines:</para>
295
296<screen><userinput><literal># Start the D-BUS session daemon
297eval `dbus-launch`
298export DBUS_SESSION_BUS_ADDRESS</literal></userinput></screen>
299
300 <para>This method will not stop the session daemon when you exit
301 your shell, therefore you should add the following line to your
302 <filename>~/.bash_logout</filename> file:</para>
303
304<screen><userinput><literal># Kill the D-BUS session daemon
305kill $DBUS_SESSION_BUS_PID</literal></userinput></screen>
306 </listitem>
307
308 <listitem>
309 <para>A hint has been written that provides ways to start scripts
310 using the KDM session manager of KDE. The concepts in this hint could
311 possibly used with other session managers as well. The hint is
312 located at <ulink
313 url="&hints-root;/downloads/files/execute-session-scripts-using-kdm.txt"/>.
314 </para>
315 </listitem>
316
317 </itemizedlist>
318
319 </sect3>
320
321 </sect2>
322
323 <sect2 role="content">
324 <title>Contents</title>
325
326 <segmentedlist>
327 <segtitle>Installed Programs</segtitle>
328 <segtitle>Installed Library</segtitle>
329 <segtitle>Installed Directories</segtitle>
330
331 <seglistitem>
332 <seg>dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
333 dbus-send, dbus-uuidgen</seg>
334 <seg>libdbus-1.{so,a}</seg>
335 <seg>/etc/dbus-1, /usr/include/dbus-1.0, /usr/lib/dbus-1.0,
336 /usr/share/dbus-1, /usr/share/doc/dbus-&dbus-version;,
337 /usr/share/man/man3dbus, /var/lib/dbus and /var/run/dbus</seg>
338 </seglistitem>
339 </segmentedlist>
340
341 <variablelist>
342 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
343 <?dbfo list-presentation="list"?>
344 <?dbhtml list-presentation="table"?>
345
346 <varlistentry id="dbus-cleanup-sockets">
347 <term><command>dbus-cleanup-sockets</command></term>
348 <listitem>
349 <para>is used to clean up leftover sockets in a directory.</para>
350 <indexterm zone="dbus dbus-cleanup-sockets">
351 <primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
352 </indexterm>
353 </listitem>
354 </varlistentry>
355
356 <varlistentry id="dbus-daemon">
357 <term><command>dbus-daemon</command></term>
358 <listitem>
359 <para>is the <application>D-BUS</application> message bus
360 daemon.</para>
361 <indexterm zone="dbus dbus-daemon">
362 <primary sortas="b-dbus-daemon">dbus-daemon</primary>
363 </indexterm>
364 </listitem>
365 </varlistentry>
366
367 <varlistentry id="dbus-launch">
368 <term><command>dbus-launch</command></term>
369 <listitem>
370 <para>is used to start <command>dbus-daemon</command> from a shell
371 script. It would normally be called from a user's login
372 scripts.</para>
373 <indexterm zone="dbus dbus-launch">
374 <primary sortas="b-dbus-launch">dbus-launch</primary>
375 </indexterm>
376 </listitem>
377 </varlistentry>
378
379 <varlistentry id="dbus-monitor">
380 <term><command>dbus-monitor</command></term>
381 <listitem>
382 <para>is used to monitor messages going through a
383 <application>D-BUS</application> message bus.</para>
384 <indexterm zone="dbus dbus-monitor">
385 <primary sortas="b-dbus-monitor">dbus-monitor</primary>
386 </indexterm>
387 </listitem>
388 </varlistentry>
389
390 <varlistentry id="dbus-send">
391 <term><command>dbus-send</command></term>
392 <listitem>
393 <para>is used to send a message to a <application>D-BUS</application>
394 message bus.</para>
395 <indexterm zone="dbus dbus-send">
396 <primary sortas="b-dbus-send">dbus-send</primary>
397 </indexterm>
398 </listitem>
399 </varlistentry>
400
401 <varlistentry id="dbus-uuidgen">
402 <term><command>dbus-uuidgen</command></term>
403 <listitem>
404 <para>is used to generate or read a universally unique ID.</para>
405 <indexterm zone="dbus dbus-uuidgen">
406 <primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
407 </indexterm>
408 </listitem>
409 </varlistentry>
410
411 <varlistentry id="libdbus-1">
412 <term><filename class='libraryfile'>libdbus-1.{so,a}</filename></term>
413 <listitem>
414 <para>contains the API functions used by the
415 <application>D-BUS</application> message daemon.
416 <application>D-BUS</application> is first a library that provides
417 one-to-one communication between any two applications;
418 <command>dbus-daemon</command> is an application that uses this
419 library to implement a message bus daemon.</para>
420 <indexterm zone="dbus libdbus-1">
421 <primary sortas="c-libdbus-1">libdbus-1.{so,a}</primary>
422 </indexterm>
423 </listitem>
424 </varlistentry>
425
426 </variablelist>
427
428 </sect2>
429
430</sect1>
Note: See TracBrowser for help on using the repository browser.