6.45. Man-DB-2.4.4

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

Temps de construction estimé : 0.2 SBU
Espace disque requis : 9 MB

6.45.1. Installation de Man-DB

Vous devez faire quatre ajustements aux sources de Man-DB.

Le premier modifie la place des pages de manuel traduites fournies avec Man-DB, afin qu'elles soient accessibles avec les locales traditionnelle et UTF-8 :

mv man/de{_DE.88591,}
mv man/es{_ES.88591,}
mv man/it{_IT.88591,}
mv man/ja{_JP.eucJP,}
sed -i 's,\*_\*,??,' man/Makefile.in

Le second changement est une substitution sed pour effacer les lignes « /usr/man » et « /usr/local/man » dans le fichier man_db.conf pour empêcher les résultats redondants lors de l'utilisation des programmes comme whatis :

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

Le troisième changement précise les programmes que Man-DB doit pouvoir trouver lors de l'exécution, mais qui n'ont pas encore été installés :

cat >> include/manconfig.h.in << "EOF"
#define WEB_BROWSER "exec /usr/bin/lynx"
#define COL "/usr/bin/col"
#define VGRIND "/usr/bin/vgrind"
#define GRAP "/usr/bin/grap"
EOF

Le programme col fait partie du paquet Util-linux, lynx est un navigateur web en mode texte (voir BLFS pour les instructions d'installation), vgrind convertit des sources de programme en entrée Groff, et grap est utile pour présenter des graphes dans des documents Groff. Les programmes vgrind et grap ne sont normalement pas nécessaires pour visualiser les pages de manuel. Ils ne font pas partie de LFS ou de BLFS, mais vous devriez pouvoir les installer vous-même après avoir fini LFS si vous le souhaitez.

Finalement, appliquez un correctif aux sources pour corriger des erreurs de sortie si la page de man est prématurément annulée en tapant la touche 'q'.

patch -Np1 -i ../man-db-2.4.4-fixes-1.patch

Préparez la compilation de man-DB :

./configure --prefix=/usr --enable-mb-groff --disable-setuid

Voici la signification des options de configuration :

--enable-mb-groff

Ceci dit au programme man d'utiliser les périphériques Groff « ascii8 » et « nippon » pour formater des pages de manuel non ISO-8859-1.

--disable-setuid

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

Compilez le paquet :

make

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

Installez le paquet :

make install

Certains paquets fournissent des pages de man UTF-8 que cette version de man n'est pas capable d'afficher. Le script suivant permettra à certaines d'entre elles d'être converties dans les codages attendus montrés dans la table ci-dessous. Man-DB s'attend à ce que les pages de manuel soit dans les codages de la table, et les convertira au besoin dans l'encodage de la locale actuelle quand ils les affichera, afin qu'elles s'affichent en locales UTF-8 et traditionelle. Ce script étant conçu ici pour une utilisation limitée pendant la compilation du système, pour des données publiques, nous n'allons pas nous ennuyer à vérifier les erreurs, ni utiliser un nom de fichier temporaire imprévisible :

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

Vous pouvez trouver des informations supplémentaires sur la compression des pages de man et d'info dans le livre BLFS sur http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/compressdoc.html.

6.45.2. Pages de manuel non anglaises dans LFS

Les distributions Linux ont différentes politiques sur l'encodage des caractères dans lequel les pages de man sont stockées dans le système de fichiers. Par exemple, RedHat conserve toutes les pages de manuel en UTF-8, tandis que Debian utilise des encodages spécifiques à chaque langue (la plupart du temps 8-bit). Ceci est lié à l'incompatibilité des paquets avec les pages de manuel adaptées à différentes distributions.

LFS utilise les mêmes conventions que Debian. On a choisi cela car Man-DB ne comprend pas les pages de manuel stockées en UTF-8. Or, pour nos objectifs, Man-DB est préférable à Man car il fonctionne sans configuration complémentaire quelque soit la locale. Enfin, jusqu'à maintenant, il n'y a pas d'implémentation de la convention RedHat qui fonctionne entièrement. groff de RedHat est connu pour ne pas formater le texte.

La relation entre les codes de langue et l'encodage attendu des pages de manuel est référencée ci-dessous. Man-DB les convertit automatiquement vers l'encodage de la locale lors de leur visualisation.

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
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
Turc (tr) ISO-8859-9

[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 le coréen n'est pas fonctionnel à cause d'un correctif de Groff incomplet.

Si dès l'origine les pages de manuel sont distribuées dans le même encodage que celui attendu par Man-DB, les pages de manuel peuvent être copiées dans /usr/share/man/<langue code>. Par exemple, vous pouvez installer les pages de manuel en français (http://ccb.club.fr/man/man-fr-1.58.0.tar.bz2) par la commande suivante :

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

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, elles doivent être converties de l'UTF-8 vers le codage listé dans la table avant d'être installées. Cela peut se faire avec convert-mans. Par exemple, vous pouvez installer les pages de manuel en espagnol (http://ditec.um.es/~piernas/manpages-es/man-pages-es-1.55.tar.bz2) avec les commandes suivantes :

mv man7/iso_8859-7.7{,X}
convert-mans UTF-8 ISO-8859-1 man?/*.?
mv man7/iso_8859-7.7{X,}
make install
[Note]

Note

Le besoin d'exclure le fichier man7/iso_8859-7.7 du processus de conversion qui est déjà en ISO-8859-1 est un bogue de mise en paquet dans man-pages-es-1.55. Les futures versions ne devraient pas nécessiter cette tâche supplémentaire.

6.45.3. Contenu de Man-DB

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

Descriptions courtes

accessdb

Transforme le contenu de la base de données whatis en format lisible par un humain

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é