6.45. Man-DB-2.4.4

El paquete Man-DB contiene programas para encontrar y visualizar páginas de manual.

Tiempo estimado de construcción: 0.2 SBU
Espacio requerido en disco: 9 MB

6.45.1. Instalación de Man-DB

Es necesario hacer cuatro ajustes a las fuentes de Man-DB.

El primero cambia la localización de las páginas de manual traducidas que vienen con Man-DB, para poder acceder a ellas tanto con locales tradicionales como 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

El segundo cambio es una sustitución sed para borrar las líneas “/usr/man” y “/usr/local/man” del fichero man_db.conf para evitar resultados duplicados cuando se utilizan programas como whatis:

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

El tercer cambio tiene en cuenta programas que Man-DB debería ser capaz de encontrar en tiempo de ejecución, pero que no han sido instalados aún:

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

El programa col es parte del paquete Util-linux, lynx es un navegador web en modo texto (mira en BLFS las instrucciones de instalación), vgrind convierte fuentes de programas a entrada Groff, y grap es útil para la inclusión de gráficos en documentos Groff. Los programas vgrind y grap no son necesarios normalmente para ver páginas de manual. No son parte de LFS o BLFS, pero deberías ser capaz de instalarlos por ti mismo tras finalizar el LFS si así lo deseas.

Por último, parchea las fuentes para corregir errores en la salida si la página de manual es abortada prematuramente mediante la pulsación de la tecla 'q':

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

Prepara Man-DB para su compilación:

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

Significado de las opciones de configure:

--enable-mb-groff

Esto le indica al programa man que utilice los dispositivos “ascii8” y “nippon” de Groff para formatear páginas de manual que no estén en ISO-8859-1.

--disable-setuid

Esto desactiva que el programa man se instale con setuid al usuario man.

Compila el paquete:

make

Este paquete no incluye un banco de pruebas.

Instala el paquete:

make install

Algunos paquetes proporcionan páginas de manual en UTF-8 que esta versión de man no puede mostrar. El siguiente guión permitirá que algunas de ellas sean convertidas a las codificaciones esperadas que se listan abajo. Man-DB espera que las páginas de manual estén en las codificaciones de la tabla, y las convertirá según sea necesario a la codificación real de la locale cuando las muestre, por lo que las mostrará tanto en ocales UTF-8 como en locales tradicionales. Debido a que este guión está pensado para un uso limitado durante la construcción del sistema, para datos públicos, no nos precupamos por la comprobación de errores ni usamos ficheros temporales con nombres no predecibles:

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

Información adicional sobre la compresión de páginas de manual e info se puede encontrar en el libro BLFS en http://www.linuxfromscratch.org/blfs/view/stable/postlfs/compressdoc.html.

6.45.2. Páginas de manual no inglesas en LFS

Las distribuciones Linux tienen diferentes políticas en cuanto a la codificación de caractéres en los que las páginas de manual se almacenan en el sistema de ficheros. Por ejemplo, RedHat almacena todas las páginas de manual en UTF-8, mientras que Debian utiliza la codificación específica del idioma (generalmente en 8 bits). Esto produce incompatibilidad entre los paquetes con paginas de manual diseñadas por diferentes distribuciones.

LFS utiliza la misma política que Debian. Esta fué elegida porque Man-DB no entiende las páginas almacenadas en UTF-8. Y, para nuestros propósitos, Man-DB es preferible a Man pues funciona sin configuraciones adicionales para ninguna locale. Por último, y a día de hoy, no existe una implementación con funcionalidad completa de la política de RedHat. Se sabe que el groff the RedHat formatea mal el texto.

Tabla 6.1. Codificación asumida de caracteres de las páginas de manual

Idioma (código) Codificación
Danés (da) ISO-8859-1
Alemán (de) ISO-8859-1
Inglés (en) ISO-8859-1
Español (es) ISO-8859-1
Finlandés (fi) ISO-8859-1
Francés (fr) ISO-8859-1
Irlandés (ga) ISO-8859-1
Gallego (gl) ISO-8859-1
Indonesio (id) ISO-8859-1
Islandés (is) ISO-8859-1
Italiano (it) ISO-8859-1
Holandés (nl) ISO-8859-1
Noruego (no) ISO-8859-1
Portugés (pt) ISO-8859-1
Sueco (sv) ISO-8859-1
Checo (cs) ISO-8859-2
Croata (hr) ISO-8859-2
Húngaro (hu) ISO-8859-2
Japonés (ja) EUC-JP
Coreano (ko) EUC-KR
Polaco (pl) ISO-8859-2
Ruso (ru) KOI8-R
Slovaco (sk) ISO-8859-2
Turko (tr) ISO-8859-9

[Nota]

Nota

Las páginas de manual en idiomas que no se encuentren en la lista no estás soportadas. Noruego no funciona ahora debido a la transición de la locale no_NO a nb_NO, y el Coreano no es funcional debido a que el parche de Groff es incompleto.

Si el desarrollador distribuye las páginas de manual con la misma codificación que Man-DB espera, estas pueden copiarse a /usr/share/man/<código del idioma>. Por ejemplo, las páginas de manual en Francés (http://ccb.club.fr/man/man-fr-1.58.0.tar.bz2) pueden instalarse con el siguiente comando:

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

Si el desarrollador distribuye las páginas de manual en UTF-8 (por ejemplo, “para RedHat”) en vez de en la codificación listada en la tabla anterior, tendrán que convertirse de UTF-8 a la codificación listada antes de instalarlas. Esto puede hacerse con convert-mans, por ejemplo, las páginas de manual en Español (http://ditec.um.es/~piernas/manpages-es/man-pages-es-1.55.tar.bz2) pueden instalarse con los siguientes comandos:

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

Nota

La necesidad de excluir el fichero man7/iso_8859-7.7 del proceso de conversión debido a que ya está en ISO-8859-1es por un error en el empaquetado de man-pages-es-1.55. Futuras versiones no deberían necesitar este apaño.

6.45.3. Contenido de Man-DB

Programas instalados: accessdb, apropos, catman, convert-mans, lexgrog, man, mandb, manpath, whatis y zsoelim

Descripciones cortas

accessdb

Vuelca el contenido de la base de datos de whatis a formato legible.

apropos

Búsca en la base de datos de whatis y muestra las descripciones cortas de los comandos del sistema que contienen la cadena dada.

catman

Crea o actualiza las páginas de manual preformateadas

convert-mans

Reformatea páginas de manual para que Man-DB pueda leerlas.

lexgrog

Muestra información sumarizada en una línea sobre la página de manual dada.

man

Formatea y muestra la página de manual solicitada.

mandb

Crea o actualiza la base de datos de whatis.

manpath

Muestra el contenido de $MANPATH o (si $MANPATH no está definido) la ruta de búsqueda disponible basada en los ajuste de man.conf y el entorno del usuario.

whatis

Búsca en la base de datos de whatis y muestra las descripciones cortas de los comandos del sistema que contienen la palabra clave dada como palabra separada.

zsoelim

Lee ficheros y reemplaza líneas del tipo .so fichero por el contenido del file citado.