6.47. Man-DB-2.5.2

Man-DB 包含查找和显示 man 手册页的程序。

预计编译时间: 0.3 SBU
所需磁盘空间: 20 MB

6.47.1. 安装 Man-DB

LFS 创建了 /usr/man/usr/local/man 作为符号连接。把它们从 man_db.conf 文件中删除,以防当使用如 whatis 之类的程序时会出现多余的结果:


sed -i -e '\%\t/usr/man%d' -e '\%\t/usr/local/man%d' src/man_db.conf.in

为编译 Man-DB 作准备:


./configure --prefix=/usr --libexecdir=/usr/lib \

    --sysconfdir=/etc --disable-setuid \

    --enable-mb-groff --with-browser=/usr/bin/lynx \

    --with-col=/usr/bin/col --with-vgrind=/usr/bin/vgrind \

    --with-grap=/usr/bin/grap

配置选项的含义:

--disable-setuid

使 man 不能给用户 man 设置 uid 位。

--enable-mb-groff

通知 man-db 使用 Debian 打过补丁的多字节版本的 groff

--with-...

这四个参数是用来设定某些默认程序的。col 程序是 Util-linux-ng 包的一部分,lynx 是基于文本的网络浏览器(参考 BLFS 获得安装指导),vgrind 把源代码转换成 Groff 输入格式,grap 对于在 Groff 文件中图表排版很有用。vgrindgrap 对于浏览手册页的一般需求不是必须的。它们不是 LFS 或 BLFS 的必要步骤,但是如果你在安装完 LFS 后想要安装它们,你应该要能够做到。

编译软件包:


make

这个软件包没有附带测试套件。

安装软件包:


make install

6.47.2. LFS 中的非英文手册页

有一些包提供非英语的手册页。只有在它们的位置和编码匹配 "man" 程序的时候,才能用其他语言正常显示。但是不同的 Linux 发行版本关于在文件系统中手册页用何种字符编码存储有不同的政策(man 程序的相关选择,如它的编译方式和所运用的补丁等)。

例如,Debian 先前要求俄罗斯语的手册页应该用 KOI8-R 字符编码并放置在 /usr/share/man/ru 中。现在,他们的 man 程序(Man-DB)还可以在 /usr/share/man/ru.UTF-8 查找用 UTF-8 编码的俄罗斯语手册页。而 Fedora 只允许使用用 UTF-8 编码的手册页。俄罗斯于的手册页被放在 /usr/share/man/ru 中,他们的 man 程序不承认 /usr/share/man/ru.UTF-8。许多发行版本完全忽略磁盘上的编码,使最终的用户在编译时会尽可能少地遇到不正确的编码手册页。当 man 运行所需页的时候,如果磁盘编码与它所需的编译形式不符的话,它将在编译的时候显示出完全不可读的内容。

不同版本发行商关于手册页编码的分歧导致了维护 upstream 包的混乱。一个包可能包含 UTF-8 手册页,而另一个包可能包含以前其他编码形式的手册页。man 查找手册页的方式是基于用户 locale 的设置。Man-DB 使用内置的表(如下所示)来决定基于用户 locale 设置的手册页在磁盘上的编码形式,但是这只在所找到的目录的拓展名中没有关于编码描述的情况下。例如,如果目录名中有 ".UTF-8",那么 Man-DB 就会知道所有存在于 /usr/share/man/fr.UTF-8 中的手册页都是用 UTF-8 编码的,并根据内置表,应将所有放置在 /usr/share/man/ru 中的手册页用 KOI8-R 编码。

表 6.1. manual 页的字符编码表

Language (code) Encoding
Danish (da) ISO-8859-1
German (de) ISO-8859-1
English (en) ISO-8859-1
Spanish (es) ISO-8859-1
Finnish (fi) ISO-8859-1
French (fr) ISO-8859-1
Irish (ga) ISO-8859-1
Galician (gl) ISO-8859-1
Indonesian (id) ISO-8859-1
Icelandic (is) ISO-8859-1
Italian (it) ISO-8859-1
Dutch (nl) ISO-8859-1
Norwegian (no) ISO-8859-1
Portuguese (pt) ISO-8859-1
Swedish (sv) ISO-8859-1
Bulgarian (bg) CP1251
Czech (cs) ISO-8859-2
Croatian (hr) ISO-8859-2
Hungarian (hu) ISO-8859-2
Japanese (ja) EUC-JP
Korean (ko) EUC-KR
Polish (pl) ISO-8859-2
Russian (ru) KOI8-R
Slovak (sk) ISO-8859-2
Serbian (sr) ISO-8859-5
Turkish (tr) ISO-8859-9
Simplified Chinese (zh_CN) GBK
Simplified Chinese, Singapore (zh_SG) GBK
Traditional Chinese (zh_TW) BIG5
Traditional Chinese, Hong Kong (zh_HK) BIG5HKSCS

[注意]

注意

不在上面列表中的语言的 Manual 页是不支持的。由于 no_NO 到 nb_NO 的转变,挪威语无法使用,并且在 Man-DB 的后续版本中,nb_NO locale 将固定不变。韩语目前也是不具功能的,因为 LFS 中运用的是不完整的 Debian 的 Groff 补丁。

软件包可能会被安装一个没有正确命名的目录下,这取决于包的开发者是为那个发行版本设计的软件包。为了支持手册页能在它被安装在的目录下转变成正确的编码,运用 convert-mans 脚本。它会使手册页在安装之前(或之后)转变成另一种编码。用下面的脚本安装 convert-mans


cat >> convert-mans << "EOF"

#!/bin/sh -e

FROM="$1"

TO="$2"

shift ; shift

while [ $# -gt 0 ]

do

        FILE="$1"

        shift

        iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv

        mv .tmp.iconv "$FILE"

done

EOF

install -m755 convert-mans  /usr/bin

如果 upstream 分散了以前编码的手册也,手册页会被拷贝到/usr/share/man/<language code>。例如德语的网页( German manual pages)可以用下面的命令安装:


mkdir -p /usr/share/man/de

cp -rv man? /usr/share/man/de

如果manual 页是 UTF-8 编码的(例如,针对 "RedHat" 的),而不是上面列表中的,他们可能从 UTF-8 转变为列表中的编码,或者他们会被之后安装在 /usr/share/man/<language code>.UTF-8

例如,法语的 manual 页( French manual pages )可以使用下面的命令安装:


convert-mans UTF-8 ISO-8859-1 man?/*.?

mkdir -p /usr/share/man/fr

cp -rv man? /usr/share/man/fr

[注意]

注意

法语手册页已经包含转换的脚本。上面的介绍仅仅是作为例子来说明 convert-mans 脚本的使用方法。

最后作为举例说明 UTF-8 编码的手册页的安装,法语手册页可以用下面的命令安装:


mkdir -p /usr/share/man/fr.UTF-8

cp -rv man? /usr/share/man/fr.UTF-8

6.47.3. Man-DB 的内容

安装的程序: apropos, catman, convert-mans, lexgrog, man, mandb, manpath, whatis, and zsoelim

简要描述

apropos

搜索 whatis 数据库,显示包含给定字符串的系统命令的简短描述

catman

创建或更新预格式化的 manual 页

convert-mans

用选定的编码重新格式化手册页。

lexgrog

显示一行给定 manual 页的摘要信息

man

格式化并显示请求的 manual 页

mandb

创建或更新 whatis 数据库

manpath

显示 $MANPATH 的内容或在man.conf中设置的搜索路径(如果 $MANPATH 没有设置),以及用户的环境变量

whatis

搜索 whatis 数据库,显示包含给定关键字的系统命令的简短描述

zsoelim

读取文件并用提到的 file 的内容来替换 .so file 格式的行


Host by Alair