source: chapter06/man-db.xml@ 0090db5

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 6.3 6.4 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 0090db5 was 0090db5, checked in by Manuel Canales Esparcia <manuel@…>, 18 years ago

Changed typography convections.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7516 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 14.9 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-system-man-db" role="wrap">
9 <?dbhtml filename="man-db.html"?>
10
11 <title>Man-DB-&man-db-version;</title>
12
13 <indexterm zone="ch-system-man-db">
14 <primary sortas="a-Man-DB">Man-DB</primary>
15 </indexterm>
16
17 <sect2 role="package">
18 <title/>
19
20 <para>The Man-DB package contains programs for finding and viewing man
21 pages.</para>
22
23 <segmentedlist>
24 <segtitle>&buildtime;</segtitle>
25 <segtitle>&diskspace;</segtitle>
26
27 <seglistitem>
28 <seg>0.2 SBU</seg>
29 <seg>9.0 MB</seg>
30 </seglistitem>
31 </segmentedlist>
32
33 <segmentedlist>
34 <segtitle>&dependencies;</segtitle>
35
36 <seglistitem>
37 <seg>Bash, Berkeley DB, Binutils, Coreutils, Gawk, GCC, Gettext,
38 Glibc, Grep, Make, and Sed</seg>
39 </seglistitem>
40 </segmentedlist>
41
42 </sect2>
43
44 <sect2 role="installation">
45 <title>Installation of Man-DB</title>
46
47 <para>Three adjustments need to be made to the sources of Man-DB.</para>
48
49 <para>The first one changes the location of translated manual pages that come
50 with Man-DB, in order for them to be accessible in both traditional and
51 UTF-8 locales:</para>
52
53<screen><userinput>mv man/de{_DE.88591,} &amp;&amp;
54mv man/es{_ES.88591,} &amp;&amp;
55mv man/it{_IT.88591,} &amp;&amp;
56mv man/ja{_JP.eucJP,} &amp;&amp;
57sed -i 's,\*_\*,??,' man/Makefile.in</userinput></screen>
58
59 <para>The second change is a <command>sed</command> substitution to delete
60 the <quote>/usr/man</quote> lines in the <filename>man_db.conf</filename>
61 file to prevent redundant results when using programs such as
62 <command>whatis</command>:</para>
63
64<screen><userinput>sed -i '/\t\/usr\/man/d' src/man_db.conf.in</userinput></screen>
65
66 <para>The third change accounts for programs that Man-DB should be able
67 to find at runtime, but that haven't been installed yet:</para>
68
69<screen><userinput>cat &gt;&gt;include/manconfig.h.in &lt;&lt;"EOF"
70<literal>#define WEB_BROWSER "exec /usr/bin/lynx"
71#define COL "/usr/bin/col"
72#define VGRIND "/usr/bin/vgrind"
73#define GRAP "/usr/bin/grap"</literal>
74EOF</userinput></screen>
75
76 <para>The <command>col</command> program is a part of the Util-linux
77 package, <command>lynx</command> is a text-based web browser (see BLFS
78 for installation instructions), <command>vgrind</command> converts
79 program sources to Groff input, and <command>grap</command> is useful
80 for typesetting graphs in Groff documents. The <command>vgrind</command>
81 and <command>grap</command> programs are not normally needed for viewing
82 manual pages. They are not part of LFS or BLFS, but you should be able
83 to install them yourself after finishing LFS if you wish to do so.</para>
84
85 <para>Prepare Man-DB for compilation:</para>
86
87<screen><userinput>./configure --prefix=/usr --enable-mb-groff --disable-setuid</userinput></screen>
88
89 <variablelist>
90 <title>The meaning of the configure options:</title>
91
92 <varlistentry>
93 <term><parameter>--enable-mb-groff</parameter></term>
94 <listitem>
95 <para>This tells the <command>man</command> program to use the
96 <quote>ascii8</quote> and <quote>nippon</quote> Groff devices for
97 formatting non-ISO-8859-1 manual pages.</para>
98 </listitem>
99 </varlistentry>
100
101 <varlistentry>
102 <term><parameter>--disable-setuid</parameter></term>
103 <listitem>
104 <para>This disables making the <command>man</command> program setuid
105 to user <systemitem class="username">man</systemitem>.</para>
106 </listitem>
107 </varlistentry>
108
109 </variablelist>
110
111 <para>Compile the package:</para>
112
113<screen><userinput>make</userinput></screen>
114
115 <para>Install the package:</para>
116
117<screen><userinput>make install</userinput></screen>
118
119 <para>Some packages provide UTF-8 man pages which this version of
120 <command>man</command> is unable to display. The following script will
121 allow some of these to be converted into the expected encodings shown in
122 the table below. Man-DB expects the manual pages to be in the encodings
123 in the table, and will convert them as necessary to the actual locale
124 encoding when it displays them, so that they will display in both UTF-8
125 and traditional locales. Because this script is intended for limited use
126 during the system build, for public data, we will not bother with error
127 checking, nor use a non-predictable temporary file name.</para>
128
129<screen><userinput>cat &gt;&gt;convert-mans &lt;&lt;"EOF"
130<literal>#!/bin/sh -e
131FROM="$1"
132TO="$2"
133shift ; shift
134while [ $# -gt 0 ]
135do
136 FILE="$1"
137 shift
138 iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv
139 mv .tmp.iconv "$FILE"
140done
141</literal>
142EOF
143install -m755 convert-mans /usr/bin</userinput></screen>
144
145 <para>Additional information regarding the compression of
146 man and info pages can be found in the BLFS book at
147 <ulink url="&blfs-root;view/cvs/postlfs/compressdoc.html"/>.</para>
148
149 </sect2>
150
151 <sect2>
152 <title>Non-English Manual Pages in LFS</title>
153
154 <para>Linux distributions have different policies concerning the character
155 encoding in which manual pages are stored in the filesystem. E.g., RedHat
156 stores all manual pages in UTF-8, while Debian uses language-specific
157 (mostly 8-bit) encodings. This leads to incompatibility of packages with
158 manual pages designed for different distributions.</para>
159
160 <para>LFS uses the same conventions as Debian. This was chosen because
161 Man-DB does not understand man pages stored in UTF-8. And, for our
162 purposes, Man-DB is preferable to Man as it works without extra
163 configuration in any locale. Lastly, as of now, there is no fully-working
164 implementation of the RedHat convention. RedHat's groff is known to
165 misformat text.</para>
166
167 <para>The relationship between language codes and the expected encoding
168 of manual pages is listed below. Man-DB automatically converts them to
169 the locale encoding while viewing.</para>
170
171 <!-- Origin: man-db-2.4.3/src/encodings.c -->
172 <table>
173 <title>Expected character encoding of manual pages</title>
174
175 <tgroup cols="2">
176
177 <thead>
178 <row>
179 <entry>Language (code)</entry>
180 <entry>Encoding</entry>
181 </row>
182 </thead>
183
184 <tbody>
185 <row>
186 <entry>Danish (da)</entry>
187 <entry>ISO-8859-1</entry>
188 </row>
189 <row>
190 <entry>German (de)</entry>
191 <entry>ISO-8859-1</entry>
192 </row>
193 <row>
194 <entry>English (en)</entry>
195 <entry>ISO-8859-1</entry>
196 </row>
197 <row>
198 <entry>Spanish (es)</entry>
199 <entry>ISO-8859-1</entry>
200 </row>
201 <row>
202 <entry>Finnish (fi)</entry>
203 <entry>ISO-8859-1</entry>
204 </row>
205 <row>
206 <entry>French (fr)</entry>
207 <entry>ISO-8859-1</entry>
208 </row>
209 <row>
210 <entry>Irish (ga)</entry>
211 <entry>ISO-8859-1</entry>
212 </row>
213 <row>
214 <entry>Galician (gl)</entry>
215 <entry>ISO-8859-1</entry>
216 </row>
217 <row>
218 <entry>Indonesian (id)</entry>
219 <entry>ISO-8859-1</entry>
220 </row>
221 <row>
222 <entry>Icelandic (is)</entry>
223 <entry>ISO-8859-1</entry>
224 </row>
225 <row>
226 <entry>Italian (it)</entry>
227 <entry>ISO-8859-1</entry>
228 </row>
229 <row>
230 <entry>Dutch (nl)</entry>
231 <entry>ISO-8859-1</entry>
232 </row>
233 <!-- BUG: "no" is deprecated, should use "nb" or "nn" and symlinks -->
234 <row>
235 <entry>Norwegian (no)</entry>
236 <entry>ISO-8859-1</entry>
237 </row>
238 <!-- END BUG -->
239 <row>
240 <entry>Portuguese (pt)</entry>
241 <entry>ISO-8859-1</entry>
242 </row>
243 <row>
244 <entry>Swedish (sv)</entry>
245 <entry>ISO-8859-1</entry>
246 </row>
247 <!-- Languages below require patched groff -->
248 <row>
249 <entry>Czech (cs)</entry>
250 <entry>ISO-8859-2</entry>
251 </row>
252 <row>
253 <entry>Croatian (hr)</entry>
254 <entry>ISO-8859-2</entry>
255 </row>
256 <row>
257 <entry>Hungarian (hu)</entry>
258 <entry>ISO-8859-2</entry>
259 </row>
260 <row>
261 <entry>Japanese (ja)</entry>
262 <entry>EUC-JP</entry>
263 </row>
264 <row>
265 <entry>Korean (ko)</entry>
266 <entry>EUC-KR</entry>
267 </row>
268 <row>
269 <entry>Polish (pl)</entry>
270 <entry>ISO-8859-2</entry>
271 </row>
272 <row>
273 <entry>Russian (ru)</entry>
274 <entry>KOI8-R</entry>
275 </row>
276 <row>
277 <entry>Slovak (sk)</entry>
278 <entry>ISO-8859-2</entry>
279 </row>
280 <row>
281 <entry>Turkish (tr)</entry>
282 <entry>ISO-8859-9</entry>
283 </row>
284 </tbody>
285
286 </tgroup>
287
288 </table>
289
290 <note>
291 <para>Manual pages in languages not in the list are not supported.
292 Norwegian doesn't work now because of the transition from no_NO to
293 nb_NO locale, and Korean is non-functional because of the incomplete
294 Groff patch.</para>
295 </note>
296
297 <para>If upstream distributes the manual pages in the same encoding
298 as Man-DB expects, the manual pages can be copied to
299 <filename class="directory">/usr/share/man/<replaceable>&lt;language
300 code&gt;</replaceable></filename>. E.g., French manual pages
301 (<ulink url="http://ccb.club.fr/man/man-fr-1.58.0.tar.bz2"/>) can be
302 installed with the following command:</para>
303
304<screen role="nodump"><userinput>mkdir -p /usr/share/man/fr &amp;&amp;
305cp -rv man? /usr/share/man/fr</userinput></screen>
306
307 <para>If upstream distributes manual pages in UTF-8 (i.e., <quote>for
308 RedHat</quote>) instead of the encoding listed in the table above, they
309 have to be converted from UTF-8 to the encoding listed in the table before
310 installation. This can be achieved with convert-mans, e.g., Spanish manual
311 pages (<ulink url="http://ditec.um.es/~piernas/manpages-es/man-pages-es-1.55.tar.bz2"/>)
312 can be installed with the following commands:</para>
313
314<screen role="nodump"><userinput>mv man7/iso_8859-7.7{,X}
315convert-mans UTF-8 ISO-8859-1 man?/*.?
316mv man7/iso_8859-7.7{X,}
317make install</userinput></screen>
318
319 <note>
320 <para>The need to exclude the <filename>man7/iso_8859-7.7</filename> file
321 from the conversion process because it is already in ISO-8859-1 is a
322 packaging bug in man-pages-es-1.55. Future versions should not require
323 this workaround.</para>
324 </note>
325
326 </sect2>
327
328 <sect2 id="contents-man-db" role="content">
329 <title>Contents of Man-DB</title>
330
331 <segmentedlist>
332 <segtitle>Installed programs</segtitle>
333
334 <seglistitem>
335 <seg>accessdb, apropos, catman, convert-mans,lexgrog, man, mandb,
336 manpath, whatis, and zsoelim</seg>
337 </seglistitem>
338 </segmentedlist>
339
340 <variablelist>
341 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
342 <?dbfo list-presentation="list"?>
343 <?dbhtml list-presentation="table"?>
344
345 <varlistentry id="accessdb">
346 <term><command>accessdb</command></term>
347 <listitem>
348 <para>Dumps the <command>whatis</command> database contents in
349 human-readable form</para>
350 <indexterm zone="ch-system-man-db accessdb">
351 <primary sortas="b-accessdb">accessdb</primary>
352 </indexterm>
353 </listitem>
354 </varlistentry>
355
356 <varlistentry id="apropos">
357 <term><command>apropos</command></term>
358 <listitem>
359 <para>Searches the <command>whatis</command> database and displays
360 the short descriptions of system commands that contain a given
361 string</para>
362 <indexterm zone="ch-system-man-db apropos">
363 <primary sortas="b-apropos">apropos</primary>
364 </indexterm>
365 </listitem>
366 </varlistentry>
367
368 <varlistentry id="catman">
369 <term><command>catman</command></term>
370 <listitem>
371 <para>Creates or updates the pre-formatted manual pages</para>
372 <indexterm zone="ch-system-man-db catman">
373 <primary sortas="b-catman">catman</primary>
374 </indexterm>
375 </listitem>
376 </varlistentry>
377
378 <varlistentry id="convert-mans">
379 <term><command>convert-mans</command></term>
380 <listitem>
381 <para>Reformat man pages so that Man-DB can display them</para>
382 <indexterm zone="ch-system-man-db convert-mans">
383 <primary sortas="b-convert-mans">convert-mans</primary>
384 </indexterm>
385 </listitem>
386 </varlistentry>
387
388 <varlistentry id="lexgrog">
389 <term><command>lexgrog</command></term>
390 <listitem>
391 <para>Displays one-line summary information about a given manual
392 page</para>
393 <indexterm zone="ch-system-man-db lexgrog">
394 <primary sortas="b-lexgrog">lexgrog</primary>
395 </indexterm>
396 </listitem>
397 </varlistentry>
398
399 <varlistentry id="man">
400 <term><command>man</command></term>
401 <listitem>
402 <para>Formats and displays the requested manual page</para>
403 <indexterm zone="ch-system-man-db man">
404 <primary sortas="b-man">man</primary>
405 </indexterm>
406 </listitem>
407 </varlistentry>
408
409 <varlistentry id="mandb">
410 <term><command>mandb</command></term>
411 <listitem>
412 <para>Creates or updates the <command>whatis</command> database</para>
413 <indexterm zone="ch-system-man-db mandb">
414 <primary sortas="b-mandb">mandb</primary>
415 </indexterm>
416 </listitem>
417 </varlistentry>
418
419 <varlistentry id="whatis">
420 <term><command>whatis</command></term>
421 <listitem>
422 <para>Searches the <command>whatis</command> database and displays
423 the short descriptions of system commands that contain the given
424 keyword as a separate word</para>
425 <indexterm zone="ch-system-man-db whatis">
426 <primary sortas="b-whatis">whatis</primary>
427 </indexterm>
428 </listitem>
429 </varlistentry>
430
431 <varlistentry id="zsoelim">
432 <term><command>zsoelim</command></term>
433 <listitem>
434 <para>Reads files and replaces lines of the form <emphasis>.so
435 file</emphasis> by the contents of the mentioned
436 <emphasis>file</emphasis></para>
437 <indexterm zone="ch-system-man-db zsoelim">
438 <primary sortas="b-zsoelim">zsoelim</primary>
439 </indexterm>
440 </listitem>
441 </varlistentry>
442
443 </variablelist>
444
445 </sect2>
446
447</sect1>
Note: See TracBrowser for help on using the repository browser.