source: general/sysutils/dbus.xml@ 95837548

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 95837548 was 95837548, checked in by Randy McMurchy <randy@…>, 13 years ago

Updates to D-Bus components (D-Bus-1.2.24, D-Bus GLIB-0.88, D-Bus Python-0.83.2, and D-Bus GObject (EggDBus)-0.6

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

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