6.47. Man-DB-2.5.2

Le paquet Man-DB contient des programmes pour trouver et voir des pages de manuel.

Temps de construction estimé : 0.3 SBU
Espace disque requis : 20 Mio

6.47.1. Installation de Man-DB

LFS crée /usr/man et /usr/local/man en tant que liens symboliques. Supprimez-les du fichier man_db.conf pour empêcher les résultats redondants lors de l'utilisation de programmes tels whatis :

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

Préparez la compilation de 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

Voici la signification des options de configuration :

--disable-setuid

Ceci empêche que le programme man se voit attribué l'ID de l'utilisateur man.

--enable-mb-groff

Ce paramètre dit à man-db de s'attendre à la version corrigée de Debian multibits de groff.

--with-...

Ces quatre paramètres sont utilises pour initialiser quelques programmes par défaut. Le programme col fait partie du paquet Util-linux-ng, lynx est un navigateur Web en console (voir BLFS pour les instructions d'installation), vgrind convertit du code source de programme en entrée Groff et grap est utile pour la composition de texte de graphes dans les documents Groff. Les programmes vgrind et grap ne sont normalement pas nécessaires pour la visualisation des pages de manuel. Ils ne font pas partie de LFS ou de BLFS mais vous devriez être capable de les installer vous-même après avoir fini LFS si vous souhaitez faire cela.

Compilez le paquet :

make

Ce paquet n'est pas fourni avec une suite de tests.

Installez le paquet :

make install

6.47.2. Pages de manuel non anglaises dans LFS

Certains paquets fournissent des pages de man UTF-8. Elles ne sont affichées correctement que si leur emplacement et leur encodage correspond à ce qu'attend le programme "man". Cependant, diverses distributions Linux ont des politiques différentes (exprimées dans le choix du programme man, sa configuration et les correctifs qui lui sont appliqués) concernant l'encodage de caractères dans lequel les pages de manuel sont conservées sur le système de fichiers.

Par exemple, Debian exigeait auparavant que les pages de man russes soient encodées en KOI8-R et situées dans /usr/share/man/ru. Maintenant, en plus, leur programme man (Man-DB) cherche les pages de manuel en russe encodées en UTF-8 dans /usr/share/man/ru.UTF-8. Au contraire, Fedora utilise exclusivement celles encodées en UTF-8. On trouve les pages de man en russe dans /usr/share/man/ru et leur programme man n'admet que /usr/share/man/ru.UTF-8. Beaucoup d'autres distributions ignorent totalement les encodages présents sur le disque, laissant l'utilisajeur final face à un mélange de pages de manuel mal encodées pour leur configuration. Lorsque man traite la page demandée, il affichera le contenu tel que configuré, donnant un résultat complètement illisible si l'encodage sur le disque n'est pas celui attendu pour cette configuration.

Le désaccord entre les fabricants de distribution sur l'encodage attendu des pages de manuel a conduit a une confusion pour les mainteneurs originels des paquets. Il se peut qu'un paquet contienne des pages de manuel en UTF-8 tandis qu'un autre est livré avec des pages de manuel en encodages finaux. man cherche les pages de manuel basées sur les paramètres de la locale de l'utilisateur. Man-DB utilise une table intégrée (voir ci-dessous) pour déterminer l'encodage sur le disque des pages de manuel trouvées pour la locale d'un utilisateur, du moins si les répertoires n'ont pas d'extension qui décrit l'encodage. Par exemple, avec un ".UTF-8" dans le nom d'un répertoire, Man-DB sait que toutes les pages de manuel se trouvant dans /usr/share/man/fr.UTF-8 sont encodées en UTF-8 et, selon la table intégrée, s'attend à ce que toutes les pages de manuel se trouvant dans /usr/share/man/ru soient encodées en utilisant KOI8-R.

Tableau 6.1. Encodage de caractère attendu des pages de manuel

Langue (code) Encodage
Danois (da) ISO-8859-1
Allemand (de) ISO-8859-1
Anglais (en) ISO-8859-1
Espagnol (es) ISO-8859-1
Finnois (fi) ISO-8859-1
Français (fr) ISO-8859-1
Irlandais (ga) ISO-8859-1
Galicien (gl) ISO-8859-1
Indonésien (id) ISO-8859-1
Islandais (is) ISO-8859-1
Italien (it) ISO-8859-1
Néerlandais (nl) ISO-8859-1
Norvégien (no) ISO-8859-1
Portugais (pt) ISO-8859-1
Suédois (sv) ISO-8859-1
Bulgare (bg) CP1251
Tchèque (cs) ISO-8859-2
Croate (hr) ISO-8859-2
Hongrois (hu) ISO-8859-2
Japonais (ja) EUC-JP
Coréen (ko) EUC-KR
Polonais (pl) ISO-8859-2
Russe (ru) KOI8-R
Slovaque (sk) ISO-8859-2
Serbe (sr) ISO-8859-5
Turc (tr) ISO-8859-9
Chinese simplifié (zh_CN) GBK
Chinese simplifié, Singapour (zh_SG) GBK
Chinois traditionnel (zh_TW) BIG5
Chinois traditionnel, Hong Kong (zh_HK) BIG5HKSCS

[Note]

Note

Les pages de manuel dont la langue ne figure pas dans la liste ne sont pas supportées. Le norvégien ne fonctionne pas maintenant à cause du passage de la locale no_NO à nb_NO, et sera corrigé dans la prochaine version de Man-DB. Le Coréen n'est pas actuellement fonctionnel à cause d'un correctif de Groff incomplet.

Il se peut que des paquets installent des pages de manuel dans un répertoire mal nommé, selon les distributions pour laquelle l'auteur développe le paquet. Pour aider la conversion des pages de manuel dans le bon encodage dans le répertoire o elles sont installées, on a écrit le script convert-mans. Il va convertir les pages de manuel dans un autre encodage avant (ou après) l'installation. Installez le script convert-mans avec les instructions suivantes :

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

Si dès l'origine les pages de manuel sont distribuées dans l'encodage final, les pages de manuel peuvent simplement être copiées vers /usr/share/man/<code de langue>. Par exemple, les pages de manuel en allemand peuvent être installées avec les commandes suivantes :

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

Si à l'origine les pages de manuel sont distribuées en UTF-8 (par exemple, « pour RedHat ») au lieu du codage indiqué dans la table ci-dessus, soit elles peuvent être converties de l'UTF-8 vers le codage listé dans la table ci-dessus avant d'être installées, soit elles peuvent être installées directement dans /usr/share/man/<code langue>.UTF-8.

Par exemple, pour installer les pages de manuel en français dans l'encodage final, utilisez les commandes suivantes :

convert-mans UTF-8 ISO-8859-1 man?/*.?
mkdir -p /usr/share/man/fr
cp -rv man? /usr/share/man/fr
[Note]

Note

Bes pages de manuel en français sont livrées avec des scripts tout prêts pour faire la même conversion. Les idstructions ci-dessus sont utilisées seulement pour exemple d'utilisation du script convert-mans script.

Finalement, pour un exemple d'installation de pages de manuel en UTF-8, de nouveau vous pourriez installer les pages de manuel en français avec les commandes suivantes :

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

6.47.3. Contenu de Man-DB

Programmes installés: apropos, catman, convert-mans, lexgrog, man, mandb, manpath, whatis et zsoelim

Descriptions courtes

apropos

Recherche la base de données whatis et affiche les descriptions courtes des commandes système qui contiennent une chaîne donnée

catman

Crée ou met à jour les pages de manuel préformatées

convert-mans

Reformate des pages de manuel afin que Man-DB puisse les afficher

lexgrog

Affiche des informations en résumé d'une ligne à propos d'une page de manuel donnée

man

Formate et affiche les pages de manuel demandées

mandb

Crée ou met à jour la base de données whatis

manpath

Affiche le contenu de $MANPATH ou (si $MANPATH n'est pas paramé!ré) d'un chemin de recherche convenable basé sur les paramètres de l'environnement de l'utilisateur

whatis

Recherche la base de données whatis et affiche les descriptions courtes des commandes système qui contiennent le mot-clé donné sous la forme d'un mot séparé

zsoelim

Lit des fichiers et remplace les lignes de la forme fichier .so par le contenu du fichier mentionné