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
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
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.