source: general/sysutils/dbus.xml@ 3b28b3e

elogind
Last change on this file since 3b28b3e was 3b28b3e, checked in by DJ Lucas <dj@…>, 3 years ago

Added machine-id symlink for elogind.

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

  • Property mode set to 100644
File size: 24.5 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 "https://dbus.freedesktop.org/releases/dbus/dbus-&dbus-version;.tar.gz">
8 <!ENTITY dbus-download-ftp " ">
9 <!ENTITY dbus-md5sum "ea11069521beeee4e47f0086596a43c8">
10 <!ENTITY dbus-size "2.0 MB">
11 <!ENTITY dbus-buildsize "21 MB (add 8 MB for the tests)">
12 <!ENTITY dbus-time "0.3 SBU (add 0.8 SBU for the tests)">
13]>
14
15<sect1 id="dbus" xreflabel="dbus-&dbus-version;">
16 <?dbhtml filename="dbus.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>dbus-&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 revision="sysv">
33 <application>D-Bus</application> is a message bus system, a simple way
34 for applications to talk to one another.
35 <application>D-Bus</application> supplies both a system daemon (for
36 events such as <quote>new hardware device added</quote> or <quote>printer
37 queue changed</quote>) and a per-user-login-session daemon (for general
38 IPC needs among user applications). Also, the message bus is built on top
39 of a general one-to-one message passing framework, which can be used by
40 any two applications to communicate directly (without going through the
41 message bus daemon).
42 </para>
43
44 <para revision="systemd">
45 Even though <application>D-Bus</application> was built in LFS, there are
46 some features provided by the package that other BLFS packages need, but
47 their dependencies didn't fit into LFS.
48 </para>
49
50 &lfs83_checked;
51
52 <bridgehead renderas="sect3">Package Information</bridgehead>
53 <itemizedlist spacing="compact">
54 <listitem>
55 <para>
56 Download (HTTP): <ulink url="&dbus-download-http;"/>
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download (FTP): <ulink url="&dbus-download-ftp;"/>
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Download MD5 sum: &dbus-md5sum;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Download size: &dbus-size;
72 </para>
73 </listitem>
74 <listitem>
75 <para>
76 Estimated disk space required: &dbus-buildsize;
77 </para>
78 </listitem>
79 <listitem>
80 <para>
81 Estimated build time: &dbus-time;
82 </para>
83 </listitem>
84 </itemizedlist>
85
86 <bridgehead renderas="sect3" revision="sysv">Additional Downloads</bridgehead>
87 <itemizedlist spacing="compact" revision="sysv">
88 <listitem>
89 <para>
90 Recommended patch:
91 <ulink url="&patch-root;/dbus-&dbus-version;-elogind-2.patch"/>
92 </para>
93 </listitem>
94 </itemizedlist>
95
96 <bridgehead renderas="sect3">D-Bus Dependencies</bridgehead>
97
98 <bridgehead renderas="sect4" revision="systemd">Required</bridgehead>
99 <para role="required" revision="systemd">
100 <xref linkend="systemd"/>
101 </para>
102
103
104 <bridgehead renderas="sect4">Recommended</bridgehead>
105 <para role="recommended">
106 <xref linkend="xorg7-lib"/> (for <command>dbus-launch</command> program)
107 <phrase revision="sysv"><xref linkend="elogind"/> (first build
108 without, and then again after elogind is installed) and
109 <xref linkend="autoconf-archive"/></phrase>
110 </para>
111
112 <bridgehead renderas="sect4">Optional</bridgehead>
113 <para role="optional">
114 For the tests:
115 <xref linkend="dbus-glib"/>,
116 <xref linkend="dbus-python"/>,
117 <xref linkend="pygobject3"/>,
118 and <xref linkend="valgrind"/>;
119
120 for documentation:
121 <xref linkend="doxygen"/>,
122 <xref linkend="xmlto"/>,
123 <ulink url="https://pypi.python.org/pypi/mallard-ducktype">Ducktype</ulink>,
124 and
125 <ulink url="http://ftp.gnome.org/pub/gnome/sources/yelp-tools/">Yelp Tools</ulink>
126 </para>
127
128 <para condition="html" role="usernotes">User Notes:
129 <ulink url="&blfs-wiki;/dbus"/>
130 </para>
131 </sect2>
132
133 <sect2 role="installation">
134 <title>Installation of D-Bus</title>
135
136 <para revision="sysv">
137 If they do not already exist,
138 as the <systemitem class="username">root</systemitem> user, create a
139 system user and group to handle the system message bus activity:
140 </para>
141
142<screen role="root" revision="sysv"><userinput>groupadd -g 18 messagebus &amp;&amp;
143useradd -c "D-Bus Message Daemon User" -d /var/run/dbus \
144 -u 18 -g messagebus -s /bin/false messagebus</userinput></screen>
145
146 <para revision="sysv">
147 Apply a patch to fix detection of <application>elogind</application>:
148 </para>
149
150<screen revision="sysv"><userinput>patch -Np1 -i ../dbus-&dbus-version;-elogind-2.patch &amp;&amp;
151autoreconf -fi</userinput></screen>
152
153 <para>
154 Install <application>D-Bus</application> by running the following
155 commands (you may wish to review the output from <command>./configure
156 --help</command> first and add any desired parameters to the
157 <command>configure</command> command shown below):
158 </para>
159
160<screen><userinput>./configure --prefix=/usr \
161 --sysconfdir=/etc \
162 --localstatedir=/var \
163 --enable-user-session \
164 --disable-doxygen-docs \
165 --disable-xml-docs \
166 --disable-static \
167 --docdir=/usr/share/doc/dbus-&dbus-version; \
168 --with-console-auth-dir=/run/console \
169 --with-system-pid-file=/run/dbus/pid \
170 --with-system-socket=/run/dbus/system_bus_socket &amp;&amp;
171make</userinput></screen>
172
173 <para>
174 See below for test instructions.
175 </para>
176
177 <warning revision="systemd">
178 <para>
179 Installing the package will override all files installed by
180 <application>D-Bus</application> in LFS. It is critical that
181 nothing uses <application>D-Bus</application> libraries or
182 programs during the installation. The best way to ensure that these
183 libraries are not being used is to run the installation in rescue mode.
184 To switch to rescue mode, run the following command as the
185 <systemitem class="username">root</systemitem> user (from a TTY):
186 </para>
187
188<screen role="root"><userinput>systemctl start rescue.target</userinput></screen>
189
190 </warning>
191
192 <para>
193 Now, as the <systemitem class="username">root</systemitem> user:
194 </para>
195
196<screen role="root"><userinput>make install</userinput></screen>
197
198 <para>
199 The shared library needs to be moved to
200 <filename class="directory">/lib</filename>, and as a result the
201 <filename class="extension">.so</filename> file in
202 <filename class="directory">/usr/lib</filename> will need to be
203 recreated. Run the following command as the
204 <systemitem class="username">root</systemitem> user:
205 </para>
206
207<screen role="root"><userinput>mv -v /usr/lib/libdbus-1.so.* /lib &amp;&amp;
208ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so</userinput></screen>
209
210 <para>
211 If you are using a DESTDIR install,
212 <command>dbus-daemon-launch-helper</command> needs to be fixed
213 afterwards. Issue, as <systemitem class="username">root</systemitem>
214 user:
215 </para>
216
217<screen role="root"><userinput>chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &amp;&amp;
218chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper</userinput></screen>
219
220 <para revision="sysv">
221 If you are still building your system in chroot or you did not start the
222 daemon yet, but you want to compile some packages that require
223 <application>D-Bus</application>, generate
224 <application>D-Bus</application> UUID to avoid warnings when compiling
225 some packages with the following command as the
226 <systemitem class="username">root</systemitem> user:
227 </para>
228
229<screen role="root" revision="sysv"><userinput>dbus-uuidgen --ensure</userinput></screen>
230
231 <para revision="sysv">
232 If using <xref linkend="elogind"/>, create a symlink to the
233 <filename>/var/lib/dbus/machine-id</filename> file:
234 </para>
235
236<screen role="root" revision="sysv"><userinput>ln -sv /var/lib/dbus/machine-id /etc</userinput></screen>
237
238 <para revision="systemd">
239 If not in chroot, at this point, you should reload the systemd daemon,
240 and reenter multi-user mode with the following commands (as the
241 <systemitem class="username">root</systemitem> user):
242 </para>
243
244<screen role="root" revision="systemd"><userinput>systemctl daemon-reload
245systemctl start multi-user.target</userinput></screen>
246
247 <para>
248 The dbus tests cannot be run until after <xref linkend="dbus-glib"/> has
249 been installed. They must be run as an unprivileged user from a local
250 session with bus address. To run the standard tests issue
251 <command>make check</command>.
252 </para>
253
254 <para>
255 If you want to run the unit regression tests, configure requires
256 additional parameters which expose additional functionality in the
257 binaries that are not intended to be used in a production build of
258 <application>D-Bus</application>. If you would like to run the tests,
259 issue the following commands (for the tests, you don't need to build the
260 docs):
261 </para>
262
263<screen><userinput>make distclean &amp;&amp;
264./configure --enable-tests \
265 --enable-asserts \
266 --disable-doxygen-docs \
267 --disable-xml-docs &amp;&amp;
268make &amp;&amp;
269make check</userinput></screen>
270
271 <para>
272 The test <command>test-bus.sh</command> is known to fail. There has also
273 been reports that the tests may fail if running inside a Midnight
274 Commander shell. You may get out-of-memory error messages when running
275 the tests. These are normal and can be safely ignored.
276 </para>
277
278 </sect2>
279
280 <sect2 role="commands">
281 <title>Command Explanations</title>
282
283 <para>
284 <parameter>--disable-doxygen-docs</parameter>: This switch disables
285 doxygen documentation build and install, if you have
286 <application>doxygen</application> installed. If
287 <application>doxygen</application> is installed, and you wish to build
288 them, remove this parameter.
289 </para>
290
291 <para>
292 <parameter>--disable-xml-docs</parameter>: This switch disables html
293 documentation build and install, if you have
294 <application>xmlto</application> installed. If
295 <application>xmlto</application> is installed, and you wish to build
296 them, remove this parameter.
297 </para>
298
299 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
300 href="../../xincludes/static-libraries.xml"/>
301
302 <para>
303 <parameter>--enable-user-session</parameter>: This parameter enables
304 per-user DBus sessions with
305 <phrase revision="sysv"><application>elogind</application>.</phrase>
306 <phrase revision="systemd"><application>systemd</application>.</phrase>
307 </para>
308
309 <para>
310 <parameter>--with-console-auth-dir=/run/console/</parameter>: This
311 parameter specifies the location of the
312 <application>ConsoleKit</application> auth dir.
313 </para>
314
315 <para>
316 <parameter>--with-system-pid-file=/run/dbus/pid</parameter>: This
317 parameter specifies the location of the PID file.
318 </para>
319
320 <para>
321 <parameter>--with-system-socket=/run/dbus/system_bus_socket</parameter>:
322 This parameter specifies the location of the system bus socket.
323 </para>
324
325 <para>
326 <parameter>--enable-tests</parameter>: Build extra parts of the code to
327 support all tests. Do not use on a production build.
328 </para>
329
330 <para>
331 <option>--enable-embedded-tests</option>: Build extra parts of the
332 code to support only unit tests. Do not use on a production build.
333 </para>
334
335 <para>
336 <parameter>--enable-asserts</parameter>: Enable debugging code to run
337 assertions for statements normally assumed to be true. This prevents a
338 warning that '<parameter>--enable-tests</parameter>' on its own is only
339 useful for profiling and might not give true results for all tests, but
340 adds its own NOTE that this should not be used in a production build.
341 </para>
342
343 </sect2>
344
345 <sect2 role="configuration">
346 <title>Configuring D-Bus</title>
347
348 <sect3 id="dbus-config">
349 <title>Config Files</title>
350
351 <para>
352 <filename>/etc/dbus-1/session.conf</filename>,
353 <filename>/etc/dbus-1/system.conf</filename> and
354 <filename>/etc/dbus-1/system.d/*</filename>
355 </para>
356
357 <indexterm zone="dbus dbus-config">
358 <primary sortas="e-etc-dbus-1-session.conf">/etc/dbus-1/session.conf</primary>
359 </indexterm>
360
361 <indexterm zone="dbus dbus-config">
362 <primary sortas="e-etc-dbus-1/system.conf">/etc/dbus-1/system.conf</primary>
363 </indexterm>
364
365 <indexterm zone="dbus dbus-config">
366 <primary sortas="e-etc-dbus-1-system.d-star">/etc/dbus-1/system.d/*</primary>
367 </indexterm>
368
369 </sect3>
370
371 <sect3 id="dbus-session-config" xreflabel="D-Bus custom services directory">
372 <title>Configuration Information</title>
373
374 <para>
375 The configuration files listed above should probably not be
376 modified. If changes are required, you should create
377 <filename>/etc/dbus-1/session-local.conf</filename> and/or
378 <filename>/etc/dbus-1/system-local.conf</filename> and make any
379 desired changes to these files.
380 </para>
381
382 <para>
383 If any packages install a
384 <application>D-Bus</application> <filename>.service</filename>
385 file outside of the standard <filename
386 class="directory">/usr/share/dbus-1/services</filename> directory,
387 that directory should be added to the local session configuration.
388 For instance, <filename
389 class="directory">/usr/local/share/dbus-1/services</filename> can
390 be added by performing the following commands as the
391 <systemitem class="username">root</systemitem> user:
392 </para>
393
394<screen role="root"><userinput>cat &gt; /etc/dbus-1/session-local.conf &lt;&lt; "EOF"
395<literal>&lt;!DOCTYPE busconfig PUBLIC
396 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
397 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
398&lt;busconfig&gt;
399
400 &lt;!-- Search for .service files in /usr/local --&gt;
401 &lt;servicedir&gt;/usr/local/share/dbus-1/services&lt;/servicedir&gt;
402
403&lt;/busconfig&gt;</literal>
404EOF</userinput></screen>
405
406 </sect3>
407
408 <sect3 id="dbus-session">
409 <title>D-Bus Session Daemon</title>
410
411 <para revision="sysv">
412 To automatically start <command>dbus-daemon</command> when the
413 system is rebooted, install the
414 <filename>/etc/rc.d/init.d/dbus</filename> bootscript from the
415 <xref linkend="bootscripts"/> package.
416 </para>
417
418 <indexterm zone="dbus dbus-session" revision="sysv">
419 <primary sortas="f-dbus">dbus</primary>
420 </indexterm>
421
422<screen role="root" revision="sysv"><userinput>make install-dbus</userinput></screen>
423
424 <para revision="sysv">
425 Note that this boot script only starts the system-wide
426 <application>D-Bus</application> daemon. Each user requiring access to
427 <application>D-Bus</application> services will also need to run a
428 session daemon as well. There are many methods you can use to start a
429 session daemon using the <command>dbus-launch</command> command. Review
430 the <command>dbus-launch</command> man page for details about the
431 available parameters and options. Here are some suggestions and
432 examples:
433 </para>
434
435 <para revision="systemd">
436 There are many methods you can use to start a session daemon
437 using the <command>dbus-launch</command> command. Review the
438 <command>dbus-launch</command> man page for details about the
439 available parameters and options. Here are some suggestions and
440 examples:
441 </para>
442
443
444 <itemizedlist spacing="compact">
445 <listitem>
446 <para>
447 Add <command>dbus-launch</command> to the line in the
448 <filename>~/.xinitrc</filename> file that starts your graphical
449 desktop environment.
450 </para>
451 </listitem>
452 <listitem>
453 <para>
454 If you use <command>xdm</command> or some other display manager
455 that calls the <filename>~/.xsession</filename> file, you can add
456 <command>dbus-launch</command> to the line in your
457 <filename>~/.xsession</filename> file that starts your graphical
458 desktop environment. The syntax would be similar to the example in
459 the <filename>~/.xinitrc</filename> file.
460 </para>
461 </listitem>
462 <listitem>
463 <para>
464 The examples shown previously use
465 <command>dbus-launch</command> to specify a program to be run. This
466 has the benefit (when also using the
467 <parameter>--exit-with-session</parameter> parameter) of stopping the
468 session daemon when the specified program is stopped. You can also
469 start the session daemon in your system or personal startup scripts
470 by adding the following lines:
471 </para>
472
473<screen role="nodump"><userinput><literal># Start the D-Bus session daemon
474eval `dbus-launch`
475export DBUS_SESSION_BUS_ADDRESS</literal></userinput></screen>
476
477 <para>
478 This method will not stop the session daemon when you exit
479 your shell, therefore you should add the following line to your
480 <filename>~/.bash_logout</filename> file:
481 </para>
482
483<screen role="nodump"><userinput><literal># Kill the D-Bus session daemon
484kill $DBUS_SESSION_BUS_PID</literal></userinput></screen>
485 </listitem>
486
487 <listitem>
488 <para>
489 A hint has been written that provides ways to start scripts
490 using the KDM session manager of KDE. The concepts in this hint could
491 possibly be used with other session managers as well. The hint is
492 located at <ulink
493 url="&hints-root;/downloads/files/execute-session-scripts-using-kdm.txt"/>.
494 </para>
495 </listitem>
496
497 </itemizedlist>
498
499 </sect3>
500
501 </sect2>
502
503 <sect2 role="content" revision="sysv">
504 <title>Contents</title>
505
506 <segmentedlist>
507 <segtitle>Installed Programs</segtitle>
508 <segtitle>Installed Library</segtitle>
509 <segtitle>Installed Directories</segtitle>
510
511 <seglistitem>
512 <seg>
513 dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
514 dbus-run-session, dbus-send, dbus-test-tool,
515 dbus-update-activation-environment, and dbus-uuidgen
516 </seg>
517 <seg>
518 libdbus-1.so
519 </seg>
520 <seg>
521 /etc/dbus-1,
522 /usr/{include,lib}/dbus-1.0,
523 /usr/share/dbus-1,
524 /usr/share/doc/dbus-&dbus-version;, and
525 /var/{lib,run}/dbus
526 </seg>
527 </seglistitem>
528 </segmentedlist>
529
530 <variablelist>
531 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
532 <?dbfo list-presentation="list"?>
533 <?dbhtml list-presentation="table"?>
534
535 <varlistentry id="dbus-cleanup-sockets">
536 <term><command>dbus-cleanup-sockets</command></term>
537 <listitem>
538 <para>
539 is used to clean up leftover sockets in a directory.
540 </para>
541 <indexterm zone="dbus dbus-cleanup-sockets">
542 <primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
543 </indexterm>
544 </listitem>
545 </varlistentry>
546
547 <varlistentry id="dbus-daemon">
548 <term><command>dbus-daemon</command></term>
549 <listitem>
550 <para>
551 is the <application>D-Bus</application> message bus daemon.
552 </para>
553 <indexterm zone="dbus dbus-daemon">
554 <primary sortas="b-dbus-daemon">dbus-daemon</primary>
555 </indexterm>
556 </listitem>
557 </varlistentry>
558
559 <varlistentry id="dbus-launch">
560 <term><command>dbus-launch</command></term>
561 <listitem>
562 <para>
563 is used to start <command>dbus-daemon</command> from a shell
564 script. It would normally be called from a user's login
565 scripts.
566 </para>
567 <indexterm zone="dbus dbus-launch">
568 <primary sortas="b-dbus-launch">dbus-launch</primary>
569 </indexterm>
570 </listitem>
571 </varlistentry>
572
573 <varlistentry id="dbus-monitor">
574 <term><command>dbus-monitor</command></term>
575 <listitem>
576 <para>
577 is used to monitor messages going through a
578 <application>D-Bus</application> message bus.
579 </para>
580 <indexterm zone="dbus dbus-monitor">
581 <primary sortas="b-dbus-monitor">dbus-monitor</primary>
582 </indexterm>
583 </listitem>
584 </varlistentry>
585
586 <varlistentry id="dbus-run-session">
587 <term><command>dbus-run-session</command></term>
588 <listitem>
589 <para>
590 start a process as a new <application>D-Bus</application> session.
591 </para>
592 <indexterm zone="dbus dbus-run-session">
593 <primary sortas="b-dbus-run-session">dbus-run-session</primary>
594 </indexterm>
595 </listitem>
596 </varlistentry>
597
598 <varlistentry id="dbus-send">
599 <term><command>dbus-send</command></term>
600 <listitem>
601 <para>
602 is used to send a message to a <application>D-Bus</application>
603 message bus.
604 </para>
605 <indexterm zone="dbus dbus-send">
606 <primary sortas="b-dbus-send">dbus-send</primary>
607 </indexterm>
608 </listitem>
609 </varlistentry>
610
611 <varlistentry id="dbus-test-tool">
612 <term><command>dbus-test-tool</command></term>
613 <listitem>
614 <para>
615 is a <application>D-Bus</application> traffic generator and test
616 tool; it is a multi-purpose tool for debugging and profiling
617 <application>D-Bus</application>.
618 </para>
619 <indexterm zone="dbus dbus-test-tool">
620 <primary sortas="b-dbus-test-tool">dbus-test-tool</primary>
621 </indexterm>
622 </listitem>
623 </varlistentry>
624
625 <varlistentry id="dbus-update-activation-environment">
626 <term><command>dbus-update-activation-environment</command></term>
627 <listitem>
628 <para>
629 is used to update the environment used for
630 <application>D-Bus</application> session services;
631 it updates the list of environment variables used by
632 <command>dbus-daemon --session</command> when it activates session
633 services without using systemd.
634 </para>
635 <indexterm zone="dbus dbus-update-activation-environment">
636 <primary sortas="b-dbus-update-activation-environment">
637 dbus-update-activation-environment</primary>
638 </indexterm>
639 </listitem>
640 </varlistentry>
641
642 <varlistentry id="dbus-uuidgen">
643 <term><command>dbus-uuidgen</command></term>
644 <listitem>
645 <para>
646 is used to generate a universally unique ID.
647 </para>
648 <indexterm zone="dbus dbus-uuidgen">
649 <primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
650 </indexterm>
651 </listitem>
652 </varlistentry>
653
654 <varlistentry id="libdbus-1">
655 <term><filename class="libraryfile">libdbus-1.so</filename></term>
656 <listitem>
657 <para>
658 contains the API functions used by the
659 <application>D-Bus</application> message daemon.
660 <application>D-Bus</application> is first a library that provides
661 one-to-one communication between any two applications;
662 <command>dbus-daemon</command> is an application that uses this
663 library to implement a message bus daemon.
664 </para>
665 <indexterm zone="dbus libdbus-1">
666 <primary sortas="c-libdbus-1">libdbus-1.so</primary>
667 </indexterm>
668 </listitem>
669 </varlistentry>
670
671 </variablelist>
672
673 </sect2>
674
675 <sect2 role="content" revision="systemd">
676 <title>Contents</title>
677
678 <para>
679 A list of the installed files, along with their short
680 descriptions can be found at
681 <ulink url="&lfs-rootd;/chapter06/dbus.html#contents-dbus"/>.
682 </para>
683
684 </sect2>
685
686
687</sect1>
688
Note: See TracBrowser for help on using the repository browser.