source: general/sysutils/dbus.xml@ 201fca3d

gnome
Last change on this file since 201fca3d was a998e97, checked in by Christopher Gregory <cjg@…>, 10 years ago

Added systemd notes to acpid at autofs bluez colord and dbus pages

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/branches/gnome@13394 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 19.9 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 "6a08ba555d340e9dfe2d623b83c0eea8">
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>./configure --prefix=/usr \
133 --sysconfdir=/etc \
134 --localstatedir=/var \
135 --with-console-auth-dir=/run/console/ \
136 --without-systemdsystemunitdir \
137 --disable-systemd \
138 --disable-static &amp;&amp;
139make</userinput></screen>
140
141 <para>
142 See below for test instructions.
143 </para>
144
145 <para>
146 Now, as the <systemitem class="username">root</systemitem> user:
147 </para>
148
149<screen role="root"><userinput>make install &amp;&amp;
150mv -v /usr/share/doc/dbus /usr/share/doc/dbus-&dbus-version;</userinput></screen>
151
152 <para>
153 If you are still building your system in chroot or you did not start the
154 daemon yet, but you want to compile some packages that require
155 <application>D-Bus</application>, generate
156 <application>D-Bus</application> UUID to avoid warnings when compiling
157 some packages with the following command as the
158 <systemitem class="username">root</systemitem> user:
159 </para>
160
161<screen role="root"><userinput>dbus-uuidgen --ensure</userinput></screen>
162
163 <para>
164 The dbus tests cannot be run until after <xref linkend="dbus-glib"/>
165 has been installed. They must be run as an unprivileged user from a
166 local session. Tests fail through ssh. If you want to run only the unit
167 tests, replace, below, <parameter>--enable-tests</parameter> by
168 <parameter>--enable-embedded-tests</parameter>, otherwise,
169 <xref linkend="dbus-python"/> has to be installed, before.
170 The tests require passing additional parameters to
171 <command>configure</command> and exposing additional functionality in
172 the binaries. These interfaces are not intended to be used in a
173 production build of <application>D-Bus</application>. If you would
174 like to run the tests, issue the following commands:
175 </para>
176
177<screen><userinput>make distclean &amp;&amp;
178./configure --enable-tests --enable-asserts &amp;&amp;
179make &amp;&amp;
180make check &amp;&amp;
181make distclean</userinput></screen>
182
183 <para>
184 If <command>run-test.sh</command> fails, it can be disabled with the
185 following sed, before running the commands for the tests:
186 </para>
187
188<screen><userinput>sed -i -e 's:run-test.sh:$(NULL):g' test/name-test/Makefile.in</userinput></screen>
189
190 <para>
191 Note there has been a report that the tests may fail if running
192 inside a Midnight Commander shell.
193 You may get out-of-memory error messages when running the tests.
194 These are normal and can be safely ignored.
195 </para>
196
197 </sect2>
198
199 <sect2 role="commands">
200 <title>Command Explanations</title>
201
202 <para>
203 <parameter>--with-console-auth-dir=/run/console/</parameter>: This
204 parameter specifies location of the
205 <application>ConsoleKit</application> auth dir.
206 </para>
207
208 <para>
209 <parameter>--without-systemdsystemunitdir</parameter>: This switch
210 prevents installation of systemd unit files.
211 </para>
212
213 <para>
214 <parameter>--disable-systemd</parameter>: This switch disables systemd
215 support in <application>D-Bus</application>
216 </para>
217
218 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
219 href="../../xincludes/static-libraries.xml"/>
220
221 <para>
222 <parameter>--enable-tests</parameter>: Build extra parts of the code to
223 support all tests. Configure will end with a NOTE warning about increased
224 size of libraries and decreased security.
225 </para>
226
227 <para>
228 <parameter>--enable-embedded-tests</parameter>: Build extra parts of the
229 code to support only unit tests. Configure will end with a NOTE warning
230 about increased size of libraries and decreased security.
231 </para>
232
233 <para>
234 <parameter>--enable-asserts</parameter>: Enable debugging code to run
235 assertions for statements normally assumed to be true. This prevents a
236 warning that '<parameter>--enable-tests</parameter>' on its own is only
237 useful for profiling and might not give true results for all tests, but
238 adds its own NOTE that this should not be used in a production build.
239 </para>
240
241 </sect2>
242
243 <sect2 role="configuration">
244 <title>Configuring dbus</title>
245
246 <sect3 id="dbus-config">
247 <title>Config Files</title>
248
249 <para>
250 <filename>/etc/dbus-1/session.conf</filename>,
251 <filename>/etc/dbus-1/system.conf</filename> and
252 <filename>/etc/dbus-1/system.d/*</filename>
253 </para>
254
255 <indexterm zone="dbus dbus-config">
256 <primary sortas="e-etc-dbus-1-session.conf">/etc/dbus-1/session.conf</primary>
257 </indexterm>
258
259 <indexterm zone="dbus dbus-config">
260 <primary sortas="e-etc-dbus-1/system.conf">/etc/dbus-1/system.conf</primary>
261 </indexterm>
262
263 <indexterm zone="dbus dbus-config">
264 <primary sortas="e-etc-dbus-1-system.d-star">/etc/dbus-1/system.d/*</primary>
265 </indexterm>
266
267 </sect3>
268
269 <sect3 id="dbus-session-config" xreflabel="D-Bus custom services directory">
270 <title>Configuration Information</title>
271
272 <para>
273 The configuration files listed above should probably not be
274 modified. If changes are required, you should create
275 <filename>/etc/dbus-1/session-local.conf</filename> and/or
276 <filename>/etc/dbus-1/system-local.conf</filename> and make any
277 desired changes to these files.
278 </para>
279
280 <para>
281 If any packages install a
282 <application>D-Bus</application> <filename>.service</filename>
283 file outside of the standard <filename
284 class="directory">/usr/share/dbus-1/services</filename> directory,
285 that directory should be added to the local session configuration.
286 For instance, <filename
287 class="directory">/usr/local/share/dbus-1/services</filename> can
288 be added by performing the following commands as the
289 <systemitem class="username">root</systemitem> user:
290 </para>
291
292<screen role="root"><userinput>cat &gt; /etc/dbus-1/session-local.conf &lt;&lt; "EOF"
293<literal>&lt;!DOCTYPE busconfig PUBLIC
294 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
295 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
296&lt;busconfig&gt;
297
298 &lt;!-- Search for .service files in /usr/local --&gt;
299 &lt;servicedir&gt;/usr/local/share/dbus-1/services&lt;/servicedir&gt;
300
301&lt;/busconfig&gt;</literal>
302EOF</userinput></screen>
303
304 </sect3>
305
306 <sect3 id="dbus-init">
307 <title>Boot Script</title>
308
309 <para>
310 To automatically start <command>dbus-daemon</command> when the
311 system is rebooted, install the
312 <filename>/etc/rc.d/init.d/dbus</filename> bootscript from the
313 <xref linkend="bootscripts"/> package.
314 </para>
315
316 <indexterm zone="dbus dbus-init">
317 <primary sortas="f-dbus">dbus</primary>
318 </indexterm>
319
320<screen role="root"><userinput>make install-dbus</userinput></screen>
321
322 <para>
323 Note that this boot script only starts the system-wide
324 <application>D-Bus</application> daemon. Each user requiring access to
325 <application>D-Bus</application> services will also need to run a
326 session daemon as well. There are many methods you can use to start a
327 session daemon using the <command>dbus-launch</command> command. Review
328 the <command>dbus-launch</command> man page for details about the
329 available parameters and options. Here are some suggestions and
330 examples:
331 </para>
332
333 <itemizedlist spacing="compact">
334 <listitem>
335 <para>
336 Add <command>dbus-launch</command> to the line in the
337 <filename>~/.xinitrc</filename> file that starts your graphical
338 desktop environment.
339 </para>
340 </listitem>
341 <listitem>
342 <para>
343 If you use <command>xdm</command> or some other display manager
344 that calls the <filename>~/.xsession</filename> file, you can add
345 <command>dbus-launch</command> to the line in your
346 <filename>~/.xsession</filename> file that starts your graphical
347 desktop environment. The syntax would be similar to the example in
348 the <filename>~/.xinitrc</filename> file.
349 </para>
350 </listitem>
351 <listitem>
352 <para>
353 The examples shown previously use
354 <command>dbus-launch</command> to specify a program to be run. This
355 has the benefit (when also using the
356 <parameter>--exit-with-session</parameter> parameter) of stopping the
357 session daemon when the specified program is stopped. You can also
358 start the session daemon in your system or personal startup scripts
359 by adding the following lines:
360 </para>
361
362<screen><userinput><literal># Start the D-Bus session daemon
363eval `dbus-launch`
364export DBUS_SESSION_BUS_ADDRESS</literal></userinput></screen>
365
366 <para>
367 This method will not stop the session daemon when you exit
368 your shell, therefore you should add the following line to your
369 <filename>~/.bash_logout</filename> file:
370 </para>
371
372<screen><userinput><literal># Kill the D-Bus session daemon
373kill $DBUS_SESSION_BUS_PID</literal></userinput></screen>
374 </listitem>
375
376 <listitem>
377 <para>
378 A hint has been written that provides ways to start scripts
379 using the KDM session manager of KDE. The concepts in this hint could
380 possibly be used with other session managers as well. The hint is
381 located at <ulink
382 url="&hints-root;/downloads/files/execute-session-scripts-using-kdm.txt"/>.
383 </para>
384 </listitem>
385
386 </itemizedlist>
387
388 </sect3>
389
390 <sect3 id="dbus-init-systemd">
391 <title>Systemd Unit File</title>
392
393 <para>
394 Systemd users don't need to install this package since it has already been
395 installed as part of LFS.
396
397 But some packages might require "dbus-launch" utility to be built with X11 support.
398 To build "dbus-launch" utility with X11 support, Xorg Libraries
399 must be installed first, then D-Bus needs to be reconfigured and built
400 using the same instructions as in LFS issue the following commands:
401 </para>
402
403 <indexterm zone="dbus dbus-init-systemd">
404 <primary sortas="f-dbus">dbus</primary>
405 </indexterm>
406
407<screen role="root">
408<userinput>
409
410./configure --prefix=/usr \
411 --sysconfdir=/etc \
412 --localstatedir=/var \
413 --docdir=/usr/share/doc/dbus-1.8.0 \
414 --with-console-auth-dir=/run/console/ &amp;&amp;
415make
416
417</userinput></screen>
418
419 <para>
420 And then just install the "dbus-launch" utility as the
421 <systemitem class="username">root</systemitem> user:
422 </para>
423
424<screen role="root">
425<userinput>
426install -m755 tools/dbus-launch /usr/bin
427</userinput></screen>
428
429 <para>
430 If you had xmlto installed during the build, you can also install manual pages
431 which were not installed in LFS. Issue the following command as the
432 <systemitem class="username">root</systemitem> user:
433 </para>
434
435<screen role="root">
436<userinput>
437
438make -C doc install-man
439
440</userinput></screen>
441 </sect3>
442
443 </sect2>
444
445 <sect2 role="content">
446 <title>Contents</title>
447
448 <segmentedlist>
449 <segtitle>Installed Programs</segtitle>
450 <segtitle>Installed Library</segtitle>
451 <segtitle>Installed Directories</segtitle>
452
453 <seglistitem>
454 <seg>
455 dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
456 dbus-run-session, dbus-send and dbus-uuidgen
457 </seg>
458 <seg>
459 libdbus-1.so
460 </seg>
461 <seg>
462 /etc/dbus-1,
463 /usr/include/dbus-1.0,
464 /usr/lib/dbus-1.0,
465 /usr/share/dbus-1,
466 /usr/share/doc/dbus-&dbus-version;,
467 /var/lib/dbus and
468 /var/run/dbus
469 </seg>
470 </seglistitem>
471 </segmentedlist>
472
473 <variablelist>
474 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
475 <?dbfo list-presentation="list"?>
476 <?dbhtml list-presentation="table"?>
477
478 <varlistentry id="dbus-cleanup-sockets">
479 <term><command>dbus-cleanup-sockets</command></term>
480 <listitem>
481 <para>
482 is used to clean up leftover sockets in a directory.
483 </para>
484 <indexterm zone="dbus dbus-cleanup-sockets">
485 <primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
486 </indexterm>
487 </listitem>
488 </varlistentry>
489
490 <varlistentry id="dbus-daemon">
491 <term><command>dbus-daemon</command></term>
492 <listitem>
493 <para>
494 is the <application>D-Bus</application> message bus daemon.
495 </para>
496 <indexterm zone="dbus dbus-daemon">
497 <primary sortas="b-dbus-daemon">dbus-daemon</primary>
498 </indexterm>
499 </listitem>
500 </varlistentry>
501
502 <varlistentry id="dbus-launch">
503 <term><command>dbus-launch</command></term>
504 <listitem>
505 <para>
506 is used to start <command>dbus-daemon</command> from a shell
507 script. It would normally be called from a user's login
508 scripts.
509 </para>
510 <indexterm zone="dbus dbus-launch">
511 <primary sortas="b-dbus-launch">dbus-launch</primary>
512 </indexterm>
513 </listitem>
514 </varlistentry>
515
516 <varlistentry id="dbus-monitor">
517 <term><command>dbus-monitor</command></term>
518 <listitem>
519 <para>
520 is used to monitor messages going through a
521 <application>D-Bus</application> message bus.
522 </para>
523 <indexterm zone="dbus dbus-monitor">
524 <primary sortas="b-dbus-monitor">dbus-monitor</primary>
525 </indexterm>
526 </listitem>
527 </varlistentry>
528
529 <varlistentry id="dbus-run-session">
530 <term><command>dbus-run-session</command></term>
531 <listitem>
532 <para>
533 start a process as a new <application>D-Bus</application> session.
534 </para>
535 <indexterm zone="dbus dbus-run-session">
536 <primary sortas="b-dbus-run-session">dbus-run-session</primary>
537 </indexterm>
538 </listitem>
539 </varlistentry>
540
541 <varlistentry id="dbus-send">
542 <term><command>dbus-send</command></term>
543 <listitem>
544 <para>
545 is used to send a message to a <application>D-Bus</application>
546 message bus.
547 </para>
548 <indexterm zone="dbus dbus-send">
549 <primary sortas="b-dbus-send">dbus-send</primary>
550 </indexterm>
551 </listitem>
552 </varlistentry>
553
554 <varlistentry id="dbus-uuidgen">
555 <term><command>dbus-uuidgen</command></term>
556 <listitem>
557 <para>
558 is used to generate a universally unique ID.
559 </para>
560 <indexterm zone="dbus dbus-uuidgen">
561 <primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
562 </indexterm>
563 </listitem>
564 </varlistentry>
565
566 <varlistentry id="libdbus-1">
567 <term><filename class="libraryfile">libdbus-1.so</filename></term>
568 <listitem>
569 <para>
570 contains the API functions used by the
571 <application>D-Bus</application> message daemon.
572 <application>D-Bus</application> is first a library that provides
573 one-to-one communication between any two applications;
574 <command>dbus-daemon</command> is an application that uses this
575 library to implement a message bus daemon.
576 </para>
577 <indexterm zone="dbus libdbus-1">
578 <primary sortas="c-libdbus-1">libdbus-1.so</primary>
579 </indexterm>
580 </listitem>
581 </varlistentry>
582
583 </variablelist>
584
585 </sect2>
586
587</sect1>
588
Note: See TracBrowser for help on using the repository browser.