source: general/sysutils/dbus.xml@ ef52ec2

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 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 ef52ec2 was ef52ec2, checked in by Pierre Labastie <pieere@…>, 10 years ago

reword the paragraph abut adding user and group in D-Bus
as suggested by Bruce

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

  • Property mode set to 100644
File size: 18.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 " ">
9 <!ENTITY dbus-md5sum "4717cb8ab5b80978fcadf2b4f2f72e1b">
10 <!ENTITY dbus-size "1.8 MB">
11 <!ENTITY dbus-buildsize "109 MB (additional 42 MB for tests)">
12 <!ENTITY dbus-time "0.4 SBU (additional 1.4 SBU for tests)">
13]>
14
15<sect1 id="dbus" xreflabel="D-Bus-&dbus-version;">
16 <?dbhtml filename="dbus.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>D-Bus-&dbus-version;</title>
24
25 <indexterm zone="dbus">
26 <primary sortas="a-D-Bus">D-Bus</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to D-Bus</title>
31
32 <para>
33 <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).
42 </para>
43
44 &lfs75_checked;
45
46 <bridgehead renderas="sect3">Package Information</bridgehead>
47 <itemizedlist spacing="compact">
48 <listitem>
49 <para>
50 Download (HTTP): <ulink url="&dbus-download-http;"/>
51 </para>
52 </listitem>
53 <listitem>
54 <para>
55 Download (FTP): <ulink url="&dbus-download-ftp;"/>
56 </para>
57 </listitem>
58 <listitem>
59 <para>
60 Download MD5 sum: &dbus-md5sum;
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 Download size: &dbus-size;
66 </para>
67 </listitem>
68 <listitem>
69 <para>
70 Estimated disk space required: &dbus-buildsize;
71 </para>
72 </listitem>
73 <listitem>
74 <para>
75 Estimated build time: &dbus-time;
76 </para>
77 </listitem>
78 </itemizedlist>
79
80 <bridgehead renderas="sect3">D-Bus Dependencies</bridgehead>
81
82<!--
83 <bridgehead renderas="sect4">Required</bridgehead>
84 <para role="required">
85 <xref linkend="expat"/>
86 </para>
87-->
88 <bridgehead renderas="sect4">Recommended</bridgehead>
89 <para role="recommended">
90 <xref linkend="xorg7-lib"/> (for <command>dbus-launch</command> program)
91 </para>
92
93 <bridgehead renderas="sect4">Optional</bridgehead>
94 <para role="optional">
95 For the tests:
96 <xref linkend="dbus-glib"/>,
97 <xref linkend="dbus-python"/>, and
98 <xref linkend="pygobject2"/>;
99
100 for the API documentation:
101 <xref linkend="doxygen"/>;
102
103 for man pages and XML/HTML documentation:
104 <xref linkend="xmlto"/>
105 </para>
106
107 <para condition="html" role="usernotes">User Notes:
108 <ulink url="&blfs-wiki;/dbus"/>
109 </para>
110 </sect2>
111
112 <sect2 role="installation">
113 <title>Installation of D-Bus</title>
114
115 <para>
116 If they do not already exist,
117 as the <systemitem class="username">root</systemitem> user, create a
118 system user and group to handle the system message bus activity:
119 </para>
120
121<screen role="root"><userinput>groupadd -g 18 messagebus &amp;&amp;
122useradd -c "D-Bus Message Daemon User" -d /var/run/dbus \
123 -u 18 -g messagebus -s /bin/false messagebus</userinput></screen>
124
125 <para>
126 Install <application>D-Bus</application> by running the following
127 commands (you may wish to review the output from
128 <command>./configure --help</command> first and add any desired parameters
129 to the <command>configure</command> command shown below):
130 </para>
131
132<screen><userinput>sed -i -e '539 s/exit/kill_bus_and_exit/' tools/dbus-launch.c &amp;&amp;<!--sed already fixed upstream, remove in next update-->
133./configure --prefix=/usr \
134 --sysconfdir=/etc \
135 --localstatedir=/var \
136 --with-console-auth-dir=/run/console/ \
137 --without-systemdsystemunitdir \
138 --disable-systemd \
139 --disable-static &amp;&amp;
140make</userinput></screen>
141
142 <para>
143 See below for test instructions.
144 </para>
145
146 <para>
147 Now, as the <systemitem class="username">root</systemitem> user:
148 </para>
149
150<screen role="root"><userinput>make install &amp;&amp;
151mv -v /usr/share/doc/dbus /usr/share/doc/dbus-&dbus-version;</userinput></screen>
152
153 <para>
154 If you are still building your system in chroot or you did not start the
155 daemon yet, but you want to compile some packages that require
156 <application>D-Bus</application>, generate
157 <application>D-Bus</application> UUID to avoid warnings when compiling
158 some packages with the following command as the
159 <systemitem class="username">root</systemitem> user:
160 </para>
161
162<screen role="root"><userinput>dbus-uuidgen --ensure</userinput></screen>
163
164 <para>
165 The dbus tests cannot be run until after <xref linkend="dbus-glib"/>
166 has been installed. They must be run as an unprivileged user from a
167 local session. Tests fail through ssh. If you want to run only the unit
168 tests, replace, below, <parameter>--enable-tests</parameter> by
169 <parameter>--enable-embedded-tests</parameter>, otherwise,
170 <xref linkend="dbus-python"/> has to be installed, before.
171 The tests require passing additional parameters to
172 <command>configure</command> and exposing additional functionality in
173 the binaries. These interfaces are not intended to be used in a
174 production build of <application>D-Bus</application>. If you would
175 like to run the tests, issue the following commands:
176 </para>
177
178<screen><userinput>make distclean &amp;&amp;
179./configure --enable-tests --enable-asserts &amp;&amp;
180make &amp;&amp;
181make check &amp;&amp;
182make distclean</userinput></screen>
183
184 <para>
185 If <command>run-test.sh</command> fails, it can be disabled with the
186 following sed, before running the commands for the tests:
187 </para>
188
189<screen><userinput>sed -i -e 's:run-test.sh:$(NULL):g' test/name-test/Makefile.in</userinput></screen>
190
191 <para>
192 Note there has been a report that the tests may fail if running
193 inside a Midnight Commander shell.
194 You may get out-of-memory error messages when running the tests.
195 These are normal and can be safely ignored.
196 </para>
197
198 </sect2>
199
200 <sect2 role="commands">
201 <title>Command Explanations</title>
202
203 <para><!--already fixed upstream, remove in next update-->
204 <command>sed -i -e ... tools/dbus-launch.c</command>: fix
205 <command>dbus-launch</command> to kill bus if we can't attach to a
206 session when requested.
207 </para>
208 <para>
209 <parameter>--with-console-auth-dir=/run/console/</parameter>: This
210 parameter specifies location of the
211 <application>ConsoleKit</application> auth dir.
212 </para>
213
214 <para>
215 <parameter>--without-systemdsystemunitdir</parameter>: This switch
216 prevents installation of systemd unit files.
217 </para>
218
219 <para>
220 <parameter>--disable-systemd</parameter>: This switch disables systemd
221 support in <application>D-Bus</application>
222 </para>
223
224 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
225 href="../../xincludes/static-libraries.xml"/>
226
227 <para>
228 <parameter>--enable-tests</parameter>: Build extra parts of the code to
229 support all tests. Configure will end with a NOTE warning about increased
230 size of libraries and decreased security.
231 </para>
232
233 <para>
234 <parameter>--enable-embedded-tests</parameter>: Build extra parts of the
235 code to support only unit tests. Configure will end with a NOTE warning
236 about increased size of libraries and decreased security.
237 </para>
238
239 <para>
240 <parameter>--enable-asserts</parameter>: Enable debugging code to run
241 assertions for statements normally assumed to be true. This prevents a
242 warning that '<parameter>--enable-tests</parameter>' on its own is only
243 useful for profiling and might not give true results for all tests, but
244 adds its own NOTE that this should not be used in a production build.
245 </para>
246
247 </sect2>
248
249 <sect2 role="configuration">
250 <title>Configuring dbus</title>
251
252 <sect3 id="dbus-config">
253 <title>Config Files</title>
254
255 <para>
256 <filename>/etc/dbus-1/session.conf</filename>,
257 <filename>/etc/dbus-1/system.conf</filename> and
258 <filename>/etc/dbus-1/system.d/*</filename>
259 </para>
260
261 <indexterm zone="dbus dbus-config">
262 <primary sortas="e-etc-dbus-1-session.conf">/etc/dbus-1/session.conf</primary>
263 </indexterm>
264
265 <indexterm zone="dbus dbus-config">
266 <primary sortas="e-etc-dbus-1/system.conf">/etc/dbus-1/system.conf</primary>
267 </indexterm>
268
269 <indexterm zone="dbus dbus-config">
270 <primary sortas="e-etc-dbus-1-system.d-star">/etc/dbus-1/system.d/*</primary>
271 </indexterm>
272
273 </sect3>
274
275 <sect3 id="dbus-session-config" xreflabel="D-Bus custom services directory">
276 <title>Configuration Information</title>
277
278 <para>
279 The configuration files listed above should probably not be
280 modified. If changes are required, you should create
281 <filename>/etc/dbus-1/session-local.conf</filename> and/or
282 <filename>/etc/dbus-1/system-local.conf</filename> and make any
283 desired changes to these files.
284 </para>
285
286 <para>
287 If any packages install a
288 <application>D-Bus</application> <filename>.service</filename>
289 file outside of the standard <filename
290 class="directory">/usr/share/dbus-1/services</filename> directory,
291 that directory should be added to the local session configuration.
292 For instance, <filename
293 class="directory">/usr/local/share/dbus-1/services</filename> can
294 be added by performing the following commands as the
295 <systemitem class="username">root</systemitem> user:
296 </para>
297
298<screen role="root"><userinput>cat &gt; /etc/dbus-1/session-local.conf &lt;&lt; "EOF"
299<literal>&lt;!DOCTYPE busconfig PUBLIC
300 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
301 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
302&lt;busconfig&gt;
303
304 &lt;!-- Search for .service files in /usr/local --&gt;
305 &lt;servicedir&gt;/usr/local/share/dbus-1/services&lt;/servicedir&gt;
306
307&lt;/busconfig&gt;</literal>
308EOF</userinput></screen>
309
310 </sect3>
311
312 <sect3 id="dbus-init">
313 <title>Boot Script</title>
314
315 <para>
316 To automatically start <command>dbus-daemon</command> when the
317 system is rebooted, install the
318 <filename>/etc/rc.d/init.d/dbus</filename> bootscript from the
319 <xref linkend="bootscripts"/> package.
320 </para>
321
322 <indexterm zone="dbus dbus-init">
323 <primary sortas="f-dbus">dbus</primary>
324 </indexterm>
325
326<screen role="root"><userinput>make install-dbus</userinput></screen>
327
328 <para>
329 Note that this boot script only starts the system-wide
330 <application>D-Bus</application> daemon. Each user requiring access to
331 <application>D-Bus</application> services will also need to run a
332 session daemon as well. There are many methods you can use to start a
333 session daemon using the <command>dbus-launch</command> command. Review
334 the <command>dbus-launch</command> man page for details about the
335 available parameters and options. Here are some suggestions and
336 examples:
337 </para>
338
339 <itemizedlist spacing="compact">
340 <listitem>
341 <para>
342 Add <command>dbus-launch</command> to the line in the
343 <filename>~/.xinitrc</filename> file that starts your graphical
344 desktop environment.
345 </para>
346 </listitem>
347 <listitem>
348 <para>
349 If you use <command>xdm</command> or some other display manager
350 that calls the <filename>~/.xsession</filename> file, you can add
351 <command>dbus-launch</command> to the line in your
352 <filename>~/.xsession</filename> file that starts your graphical
353 desktop environment. The syntax would be similar to the example in
354 the <filename>~/.xinitrc</filename> file.
355 </para>
356 </listitem>
357 <listitem>
358 <para>
359 The examples shown previously use
360 <command>dbus-launch</command> to specify a program to be run. This
361 has the benefit (when also using the
362 <parameter>--exit-with-session</parameter> parameter) of stopping the
363 session daemon when the specified program is stopped. You can also
364 start the session daemon in your system or personal startup scripts
365 by adding the following lines:
366 </para>
367
368<screen><userinput><literal># Start the D-Bus session daemon
369eval `dbus-launch`
370export DBUS_SESSION_BUS_ADDRESS</literal></userinput></screen>
371
372 <para>
373 This method will not stop the session daemon when you exit
374 your shell, therefore you should add the following line to your
375 <filename>~/.bash_logout</filename> file:
376 </para>
377
378<screen><userinput><literal># Kill the D-Bus session daemon
379kill $DBUS_SESSION_BUS_PID</literal></userinput></screen>
380 </listitem>
381
382 <listitem>
383 <para>
384 A hint has been written that provides ways to start scripts
385 using the KDM session manager of KDE. The concepts in this hint could
386 possibly be used with other session managers as well. The hint is
387 located at <ulink
388 url="&hints-root;/downloads/files/execute-session-scripts-using-kdm.txt"/>.
389 </para>
390 </listitem>
391
392 </itemizedlist>
393
394 </sect3>
395
396 </sect2>
397
398 <sect2 role="content">
399 <title>Contents</title>
400
401 <segmentedlist>
402 <segtitle>Installed Programs</segtitle>
403 <segtitle>Installed Library</segtitle>
404 <segtitle>Installed Directories</segtitle>
405
406 <seglistitem>
407 <seg>
408 dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
409 dbus-run-session, dbus-send and dbus-uuidgen
410 </seg>
411 <seg>
412 libdbus-1.so
413 </seg>
414 <seg>
415 /etc/dbus-1,
416 /usr/include/dbus-1.0,
417 /usr/lib/dbus-1.0,
418 /usr/share/dbus-1,
419 /usr/share/doc/dbus-&dbus-version;,
420 /var/lib/dbus and
421 /var/run/dbus
422 </seg>
423 </seglistitem>
424 </segmentedlist>
425
426 <variablelist>
427 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
428 <?dbfo list-presentation="list"?>
429 <?dbhtml list-presentation="table"?>
430
431 <varlistentry id="dbus-cleanup-sockets">
432 <term><command>dbus-cleanup-sockets</command></term>
433 <listitem>
434 <para>
435 is used to clean up leftover sockets in a directory.
436 </para>
437 <indexterm zone="dbus dbus-cleanup-sockets">
438 <primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
439 </indexterm>
440 </listitem>
441 </varlistentry>
442
443 <varlistentry id="dbus-daemon">
444 <term><command>dbus-daemon</command></term>
445 <listitem>
446 <para>
447 is the <application>D-Bus</application> message bus daemon.
448 </para>
449 <indexterm zone="dbus dbus-daemon">
450 <primary sortas="b-dbus-daemon">dbus-daemon</primary>
451 </indexterm>
452 </listitem>
453 </varlistentry>
454
455 <varlistentry id="dbus-launch">
456 <term><command>dbus-launch</command></term>
457 <listitem>
458 <para>
459 is used to start <command>dbus-daemon</command> from a shell
460 script. It would normally be called from a user's login
461 scripts.
462 </para>
463 <indexterm zone="dbus dbus-launch">
464 <primary sortas="b-dbus-launch">dbus-launch</primary>
465 </indexterm>
466 </listitem>
467 </varlistentry>
468
469 <varlistentry id="dbus-monitor">
470 <term><command>dbus-monitor</command></term>
471 <listitem>
472 <para>
473 is used to monitor messages going through a
474 <application>D-Bus</application> message bus.
475 </para>
476 <indexterm zone="dbus dbus-monitor">
477 <primary sortas="b-dbus-monitor">dbus-monitor</primary>
478 </indexterm>
479 </listitem>
480 </varlistentry>
481
482 <varlistentry id="dbus-run-session">
483 <term><command>dbus-run-session</command></term>
484 <listitem>
485 <para>
486 start a process as a new <application>D-Bus</application> session.
487 </para>
488 <indexterm zone="dbus dbus-run-session">
489 <primary sortas="b-dbus-run-session">dbus-run-session</primary>
490 </indexterm>
491 </listitem>
492 </varlistentry>
493
494 <varlistentry id="dbus-send">
495 <term><command>dbus-send</command></term>
496 <listitem>
497 <para>
498 is used to send a message to a <application>D-Bus</application>
499 message bus.
500 </para>
501 <indexterm zone="dbus dbus-send">
502 <primary sortas="b-dbus-send">dbus-send</primary>
503 </indexterm>
504 </listitem>
505 </varlistentry>
506
507 <varlistentry id="dbus-uuidgen">
508 <term><command>dbus-uuidgen</command></term>
509 <listitem>
510 <para>
511 is used to generate a universally unique ID.
512 </para>
513 <indexterm zone="dbus dbus-uuidgen">
514 <primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
515 </indexterm>
516 </listitem>
517 </varlistentry>
518
519 <varlistentry id="libdbus-1">
520 <term><filename class="libraryfile">libdbus-1.so</filename></term>
521 <listitem>
522 <para>
523 contains the API functions used by the
524 <application>D-Bus</application> message daemon.
525 <application>D-Bus</application> is first a library that provides
526 one-to-one communication between any two applications;
527 <command>dbus-daemon</command> is an application that uses this
528 library to implement a message bus daemon.
529 </para>
530 <indexterm zone="dbus libdbus-1">
531 <primary sortas="c-libdbus-1">libdbus-1.so</primary>
532 </indexterm>
533 </listitem>
534 </varlistentry>
535
536 </variablelist>
537
538 </sect2>
539
540</sect1>
541
Note: See TracBrowser for help on using the repository browser.