source: general/sysutils/dbus.xml@ da167e4

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 da167e4 was da167e4, checked in by Ken Moffat <ken@…>, 15 years ago

Add missing libexecdir to dbus instructions, thanks to kratz00, fixes ticket #2676.

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

  • Property mode set to 100644
File size: 17.1 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 ----libexecdir=/usr/lib/dbus-1.0 \
127 --localstatedir=/var &amp;&amp;
128make</userinput></screen>
129
130 <para>The <option>--enable-doxygen-docs</option> parameter does not work
131 properly. If you have <application>Doxygen</application> installed and you
132 wish to build the API documentation, issue
133 <command>doxygen Doxyfile</command>.</para>
134
135 <para>Now, as the <systemitem class="username">root</systemitem> user:</para>
136
137<screen role="root"><userinput>make install &amp;&amp;
138install -v -m755 -d /usr/share/doc/dbus-&dbus-version; &amp;&amp;
139install -v -m644 doc/{TODO,*.{dtd,html,xml,xsl,txt,c}} \
140 /usr/share/doc/dbus-&dbus-version; &amp;&amp;</userinput></screen>
141
142 <para>If you built the API documentation, install it by issuing the
143 following commands as the <systemitem class="username">root</systemitem> user:</para>
144
145<screen role="root"><userinput>install -v -m755 -d /usr/share/doc/dbus-&dbus-version;/api \
146 /usr/share/man/man3dbus &amp;&amp;
147install -v -m644 doc/api/html/* \
148 /usr/share/doc/dbus-&dbus-version;/api &amp;&amp;
149install -v -m644 doc/api/man/man3dbus/* \
150 /usr/share/man/man3dbus</userinput></screen>
151
152 </sect2>
153
154 <sect2 role="commands">
155 <title>Command Explanations</title>
156
157 <para><parameter>--libexecdir=/usr/lib/dbus-1.0 </parameter>: This will
158 install the file <filename>dbus-daemon-launch-helper</filename> and the
159 directory <filename class="directory">dbus-1</filename> into
160 <filename class="directory">/usr/lib/dbus-1.0</filename> instead of
161 into <filename class="directory">/usr/libexec</filename>.</para>
162
163 <para><parameter>--localstatedir=/var</parameter>: This parameter causes
164 the daemon PID file, system bus socket and machine uuid file to be
165 created in the <filename class="directory">/var</filename> directory
166 instead of the <filename class="directory">/usr/var</filename>
167 directory.</para>
168
169 <para><parameter>--enable-tests</parameter>: Build extra parts of the code
170 to support testing. Configure will end with a NOTE warning about this.</para>
171
172 <para><parameter>--enable-asserts</parameter>: Enable debugging code to run
173 assertions for statements normally assumed to be true. This prevents a
174 warning that '<parameter>--enable-tests</parameter>' on its own is only useful
175 for profiling and might not give true results for all tests, but adds its own
176 NOTE that this should not be used in a production build.
177 </para>
178
179 <para><parameter>--disable-static</parameter>: Prevent the static libraries
180 being built.</para>
181
182 </sect2>
183
184 <sect2 role="configuration">
185 <title>Configuring dbus</title>
186
187 <sect3 id="dbus-config">
188 <title>Config Files</title>
189 <para><filename>/etc/dbus-1/session.conf</filename>,
190 <filename>/etc/dbus-1/system.conf</filename> and
191 <filename>/etc/dbus-1/system.d/*</filename></para>
192
193 <indexterm zone="dbus dbus-config">
194 <primary sortas="e-etc-dbus-1-session.conf">/etc/dbus-1/session.conf</primary>
195 </indexterm>
196
197 <indexterm zone="dbus dbus-config">
198 <primary sortas="e-etc-dbus-1/system.conf">/etc/dbus-1/system.conf</primary>
199 </indexterm>
200
201 <indexterm zone="dbus dbus-config">
202 <primary sortas="e-etc-dbus-1-system.d-star">/etc/dbus-1/system.d/*</primary>
203 </indexterm>
204
205 </sect3>
206
207 <sect3 id="dbus-session-config" xreflabel="D-Bus custom services directory">
208 <title>Configuration Information</title>
209
210 <para>The configuration files listed above should probably not be
211 modified. If changes are required, you should create
212 <filename>/etc/dbus-1/session-local.conf</filename> and/or
213 <filename>/etc/dbus-1/system-local.conf</filename> and make any
214 desired changes to these files.</para>
215
216 <para>If any packages install a
217 <application>D-Bus</application> <filename>.service</filename>
218 file outside of the standard <filename
219 class="directory">/usr/share/dbus-1/services</filename> directory,
220 that directory should be added to the local session configuration.
221 For instance, <filename
222 class="directory">/usr/local/share/dbus-1/services</filename> can
223 be added by performing the following commands as the
224 <systemitem class="username">root</systemitem> user:</para>
225
226<screen role="root"><userinput>cat &gt; /etc/dbus-1/session-local.conf &lt;&lt; "EOF"
227<literal>&lt;!DOCTYPE busconfig PUBLIC
228 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
229 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
230&lt;busconfig&gt;
231
232 &lt;!-- Search for .service files in /usr/local --&gt;
233 &lt;servicedir&gt;/usr/local/share/dbus-1/services&lt;/servicedir&gt;
234
235&lt;/busconfig&gt;</literal>
236EOF</userinput></screen>
237
238 <para>Many packages will refuse to run if the file
239 <literal>/var/lib/dbus/machine-id</literal> does not exist, and
240 complain that <application>dbus</application> has not been properly
241 installed. To prevent this, run the following command as the
242 <systemitem class="username">root</systemitem> user:</para>
243
244<screen><userinput>dbus-uuidgen --ensure</userinput></screen>
245
246 <para>This will create a unique identifier for the machine.</para>
247
248 </sect3>
249
250 <sect3 id="dbus-init">
251 <title>Boot Script</title>
252
253 <para>To automatically start <command>dbus-daemon</command> when the
254 system is rebooted, install the
255 <filename>/etc/rc.d/init.d/dbus</filename> bootscript from the
256 <xref linkend="bootscripts"/> package.</para>
257
258 <indexterm zone="dbus dbus-init">
259 <primary sortas="f-dbus">dbus</primary>
260 </indexterm>
261
262<screen role="root"><userinput>make install-dbus</userinput></screen>
263
264 <para>Note that this boot script only starts the system-wide
265 <application>D-BUS</application> daemon. Each user requiring access to
266 <application>D-BUS</application> services will also need to run a
267 session daemon as well. There are many methods you can use to start a
268 session daemon using the <command>dbus-launch</command> command. Review
269 the <command>dbus-launch</command> man page for details about the
270 available parameters and options. Here are some suggestions and
271 examples:</para>
272
273 <itemizedlist spacing="compact">
274 <listitem>
275 <para>Add <command>dbus-launch</command> to the line in the
276 <filename>~/.xinitrc</filename> file that starts your graphical
277 desktop environment as shown in <xref linkend="gnome-config"/>.</para>
278 </listitem>
279 <listitem>
280 <para>If you use <command>xdm</command> or some other display manager
281 that calls the <filename>~/.xsession</filename> file, you can add
282 <command>dbus-launch</command> to the line in your
283 <filename>~/.xsession</filename> file that starts your graphical
284 desktop environment. The syntax would be similar to the example in
285 the <filename>~/.xinitrc</filename> file.</para>
286 </listitem>
287 <listitem>
288 <para>If you use <command>gdm</command> or some other display manager
289 that utilizes custom files to initiate sessions, use the example in
290 <xref linkend="gdm-config-dbus"/> of the
291 <application>GDM</application> instructions to create a file
292 containing <command>dbus-launch</command>.</para>
293 </listitem>
294 <listitem>
295 <para>The examples shown previously use
296 <command>dbus-launch</command> to specify a program to be run. This
297 has the benefit (when also using the
298 <parameter>--exit-with-session</parameter> parameter) of stopping the
299 session daemon when the specified program is stopped. You can also
300 start the session daemon in your system or personal startup scripts
301 by adding the following lines:</para>
302
303<screen><userinput><literal># Start the D-BUS session daemon
304eval `dbus-launch`
305export DBUS_SESSION_BUS_ADDRESS</literal></userinput></screen>
306
307 <para>This method will not stop the session daemon when you exit
308 your shell, therefore you should add the following line to your
309 <filename>~/.bash_logout</filename> file:</para>
310
311<screen><userinput><literal># Kill the D-BUS session daemon
312kill $DBUS_SESSION_BUS_PID</literal></userinput></screen>
313 </listitem>
314
315 <listitem>
316 <para>A hint has been written that provides ways to start scripts
317 using the KDM session manager of KDE. The concepts in this hint could
318 possibly used with other session managers as well. The hint is
319 located at <ulink
320 url="&hints-root;/downloads/files/execute-session-scripts-using-kdm.txt"/>.
321 </para>
322 </listitem>
323
324 </itemizedlist>
325
326 </sect3>
327
328 </sect2>
329
330 <sect2 role="content">
331 <title>Contents</title>
332
333 <segmentedlist>
334 <segtitle>Installed Programs</segtitle>
335 <segtitle>Installed Library</segtitle>
336 <segtitle>Installed Directories</segtitle>
337
338 <seglistitem>
339 <seg>dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
340 dbus-send, dbus-uuidgen</seg>
341 <seg>libdbus-1.{so,a}</seg>
342 <seg>/etc/dbus-1, /usr/include/dbus-1.0, /usr/lib/dbus-1.0,
343 /usr/share/dbus-1, /usr/share/doc/dbus-&dbus-version;,
344 /usr/share/man/man3dbus, /var/lib/dbus and /var/run/dbus</seg>
345 </seglistitem>
346 </segmentedlist>
347
348 <variablelist>
349 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
350 <?dbfo list-presentation="list"?>
351 <?dbhtml list-presentation="table"?>
352
353 <varlistentry id="dbus-cleanup-sockets">
354 <term><command>dbus-cleanup-sockets</command></term>
355 <listitem>
356 <para>is used to clean up leftover sockets in a directory.</para>
357 <indexterm zone="dbus dbus-cleanup-sockets">
358 <primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
359 </indexterm>
360 </listitem>
361 </varlistentry>
362
363 <varlistentry id="dbus-daemon">
364 <term><command>dbus-daemon</command></term>
365 <listitem>
366 <para>is the <application>D-BUS</application> message bus
367 daemon.</para>
368 <indexterm zone="dbus dbus-daemon">
369 <primary sortas="b-dbus-daemon">dbus-daemon</primary>
370 </indexterm>
371 </listitem>
372 </varlistentry>
373
374 <varlistentry id="dbus-launch">
375 <term><command>dbus-launch</command></term>
376 <listitem>
377 <para>is used to start <command>dbus-daemon</command> from a shell
378 script. It would normally be called from a user's login
379 scripts.</para>
380 <indexterm zone="dbus dbus-launch">
381 <primary sortas="b-dbus-launch">dbus-launch</primary>
382 </indexterm>
383 </listitem>
384 </varlistentry>
385
386 <varlistentry id="dbus-monitor">
387 <term><command>dbus-monitor</command></term>
388 <listitem>
389 <para>is used to monitor messages going through a
390 <application>D-BUS</application> message bus.</para>
391 <indexterm zone="dbus dbus-monitor">
392 <primary sortas="b-dbus-monitor">dbus-monitor</primary>
393 </indexterm>
394 </listitem>
395 </varlistentry>
396
397 <varlistentry id="dbus-send">
398 <term><command>dbus-send</command></term>
399 <listitem>
400 <para>is used to send a message to a <application>D-BUS</application>
401 message bus.</para>
402 <indexterm zone="dbus dbus-send">
403 <primary sortas="b-dbus-send">dbus-send</primary>
404 </indexterm>
405 </listitem>
406 </varlistentry>
407
408 <varlistentry id="dbus-uuidgen">
409 <term><command>dbus-uuidgen</command></term>
410 <listitem>
411 <para>is used to generate or read a universally unique ID.</para>
412 <indexterm zone="dbus dbus-uuidgen">
413 <primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
414 </indexterm>
415 </listitem>
416 </varlistentry>
417
418 <varlistentry id="libdbus-1">
419 <term><filename class='libraryfile'>libdbus-1.{so,a}</filename></term>
420 <listitem>
421 <para>contains the API functions used by the
422 <application>D-BUS</application> message daemon.
423 <application>D-BUS</application> is first a library that provides
424 one-to-one communication between any two applications;
425 <command>dbus-daemon</command> is an application that uses this
426 library to implement a message bus daemon.</para>
427 <indexterm zone="dbus libdbus-1">
428 <primary sortas="c-libdbus-1">libdbus-1.{so,a}</primary>
429 </indexterm>
430 </listitem>
431 </varlistentry>
432
433 </variablelist>
434
435 </sect2>
436
437</sect1>
Note: See TracBrowser for help on using the repository browser.