6.47. Man-DB-2.5.2

Man-DB enthält Programme zum Finden und Anzeigen von Hilfeseiten (Man-pages).

Geschätzte Kompilierzeit: 0.3 SBU
Etwa Benötigter Speicherplatz: 20 MB

6.47.1. Installation von Man-DB

LFS erzeugt /usr/man und /usr/local/man als symbolische Verknüpfungen. Entfernen Sie diese Einträge aus man_db.conf; dadurch werden redundante Ergebnisse vermieden, wenn Programme wie z. B. whatis verwendet werden:

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

Bereiten Sie Man-DB zum Kompilieren vor:

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

Die Bedeutung der configure-Parameter:

--disable-setuid

Dadurch wird das Setuid-Bit auf dem Programm man für den Benutzer man deaktiviert.

--enable-mb-groff

Dieses Parameter teilt man-db mit, dass die von Debian gepatchte Version von groff vorliegt.

--with-...

Diese vier Parameter legen einige Standard-Programme fest. Das Programm col ist ein Teil von Util-Linux-ng, lynx ist ein textbasierter Web-Browser (siehe BLFS Installationsanleitung), vgrind wandelt Programmquellen in Groff-Eingaben um und grap ist nützlich für Typographiezeichen in Groff-Dokumenten. Normalerweise werden vgrind und grap zum Anzeigen von Handbuchseiten nicht benötigt. Sie sind weder Teil von LFS noch von BLFS, jedoch sollten Sie in der Lage sein, diese nach der Installation von LFS selbst zu installieren.

Kompilieren Sie das Paket:

make

Dieses Paket enthält keine Testsuite.

Installieren Sie das Paket:

make install

6.47.2. Nicht-Englische Hilfeseiten in LFS

Einige Pakete enthalten nicht-englische Man-pages. Diese werden nur dann korrekt angezeigt, wenn sie im richtigen Ordner gespeichert sind und die Kodierung verwenden, wie „man“ sie erwartet. Die verschiedenen Linux-Distributionen verwenden diesbezüglich allerdings unterschiedliche Richtlinien in Bezug auf die Kodierung, in der die Man-pages gespeichert werden (d. h. unterschiedliche Versionen von man in verschiedenen Konfigurationen und mit unterschiedlichen Patchen).

Debian beispielsweise erwartete früher die russischen Man-pages in der Kodierung KOI8-R im Ordner /usr/share/man/ru. Mittlerweile sucht deren man-Programm (Man-DB) zusätzlich nach UTF-8-kodierten russischen Man-pages im Ordner /usr/share/man/ru.UTF-8. Andererseits verwendet Fedora ausschließlich UTF-8-kodierte Man-pages. Russische Man-pages finden sich unter /usr/share/man/ru und Fedoras man-Programm ignoriert /usr/share/man/ru.UTF-8. Viele andere Distributionen ignorieren die Kodierung der Man-pages vollständig, wodurch der Anwender eine Mischung aus unterschiedlich kodierten Man-pages erhält. Wenn man nun die angeforderte Man-page zur Darstellung verarbeitet, stellt es die Inhalte wie eingerichtet dar, wodurch sie vollkommen unleserlich werden, weil die Kodierung nicht dem entspricht, was für die verwendete Lokalisierung erwartet wird.

Die Uneinigkeit bezüglich der erwarteten Kodierungen von Man-pages bei den Distributionen hat bei den Paket-Betreuern zu Verwirrung geführt. So enthalten einige Pakete Man-pages in UTF-8, andere wiederum in anderen, zum Teil veralteten Kodierungen. man sucht nach Man-pages in der Lokalisierung des Anwenders. Man-DB verwendet eine eingebaute Hilfstabelle (siehe unten), um die Kodierung der Man-pages zu bestimmen, die für die Lokalisierung des Benutzers gefunden wurden, falls die Speicherorte den Namen der Kodierung nicht über ihren Namen preisgeben. Beispielsweise weiß Man-DB aufgrund des Ordnernamens „.UTF-8“, dass alle Man-pages in diesem Ordner (/usr/share/man/fr.UTF-8) in UTF-8-Kodierung vorliegen. Basierend auf der eingebauten Tabelle wiederum ist bekannt, dass die Man-pages in /usr/share/man/ru in KOI8-R vorliegen sollten.

Tabelle 6.1. Erwartete Zeichenkodierung für 8-Bit-Hilfeseiten

Sprache (Code) Kodierung
Dänisch (da) ISO-8859-1
Deutsch (de) ISO-8859-1
Englisch (de) ISO-8859-1
Spanisch (es) ISO-8859-1
Finnisch (fi) ISO-8859-1
Französisch (fr) ISO-8859-1
Irisch (ga) ISO-8859-1
Galician (gl) ISO-8859-1
Indonesisch (id) ISO-8859-1
Isländisch (is) ISO-8859-1
Italienisch (it) ISO-8859-1
Niederländisch (nl) ISO-8859-1
Norwegisch (no) ISO-8859-1
Portugiesisch (pt) ISO-8859-1
Schwedisch (sv) ISO-8859-1
Bulgarisch (bg) CP1251
Tchechisch (cs) ISO-8859-2
Kroatisch (hr) ISO-8859-2
Ungarisch (hu) ISO-8859-2
Japanisch (ja) EUC-JP
Koreanisch (ko) EUC-KR
Polnisch (pl) ISO-8859-2
Russisch (ru) KOI8-R
Slovakisch (sk) ISO-8859-2
Serbisch (sr) ISO-8859-5
Türkisch (tr) ISO-8859-9
Chinesisch, vereinfacht (zh_CN) GBK
Chinesisch, vereinfacht, Singapur (zh_SG) GBK
Chinesisch, traditionell (zh_TW) BIG5
Chinesisch, traditionell, Hong Kong (zh_HK) BIG5HKSCS

[Anmerkung]

Anmerkung

Hilfeseiten in Sprachen, die sich nicht in der Tabelle befinden, werden nicht unterstützt. Norwegisch funktioniert aufgrund der Umwandlung von no_NO zu nb_NO nicht, wird aber in der nächsten Version von Man-DB funktionieren. Koreanisch funktioniert aufgrund des unvollständigen Groff-Patches von Debian nicht, der in LFS verwendet wird.

Abhängig von der Linux-Distribution, für die ein Paket-Betreuer seine Pakete entwickelt, könnten Man-pages in falsche Ordner installiert werden. Es wurde ein Skript namens convert-mans entwickelt, das bei der Umwandlung von Man-pages in die für einen Ordner korrekte Kodierung behilflich sein kann. Dieses Skript wandelt Man-pages vor oder nach der Installation in einen Ordner um. Installieren Sie convert-mans mit den folgenden Befehlen:

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

Wenn ein Quellpaket die Hilfeseiten in einer länderbezogenen Kodierung mitliefert, so können diese einfach nach /usr/share/man/<Sprachcode> kopiert werden. Beispielsweise können deutsche Hilfeseiten (http://www.infodrom.org/projects/manpages-de/download/manpages-de-0.5.tar.gz) mit den folgenden Kommandos installiert werden:

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

Falls die Programm-Entwickler die Hilfeseiten in UTF-8 ausliefern (z. B. „RedHat“) anstatt der oben aufgelisteten Kodierung, dann können sie entweder vor der Installation von UTF-8 in die aufgelistete Kodierung umgewandelt werden, oder sie können direkt in den Ordner /usr/share/man<Sprachcode>.UTF-8 installiert werden.

Die Französischen Man-pages in länderbezogener Kodierung können Sie z. B. mit den folgenden Kommandos installieren:

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

Anmerkung

Die französischen Man-pages werden allerdings in Wirklichkeit schon mit fertigen Skripten ausgeliefert, die die Umwandlung bei Bedarf übernehmen. Die vorigen Kommandos sollen nur als Beispiel für die Verwendung des Skripts convert-mans dienen.

Mit den folgenden Kommandos soll nun noch gezeigt werden, wie beispielsweise die französischen Man-pages installiert werden könnten:

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

6.47.3. Inhalt von Man-DB

Installierte Programme: apropos, catman, convert-mans, lexgrog, man, mandb, manpath, whatis und zsoelim

Kurze Beschreibungen

apropos

Durchsucht die whatis-Datenbank und gibt kurze Beschreibungen zu den Kommandos aus, die die angegebene Zeichenkette enthalten.

catman

Erzeugt oder aktualisiert die vorformatierten Hilfeseiten.

convert-mans

Wandelt Man-pages in die angegebene Kodierung um.

lexgrog

Zeigt eine einzeilige Zusammenfassung über eine Hilfeseite an.

man

Formatiert die angeforderte Hilfeseite und zeigt sie an.

mandb

Erzeugt und aktualisiert whatis-Datenbanken.

manpath

Zeigt den Inhalt von $MANPATH oder (falls $MANPATH nicht festgelegt ist) einen passenden Suchpfad basierend auf den Einstellungen in man.conf und der Umgebung des Benutzers an.

whatis

Durchsucht die whatis-Datenbank und zeigt eine kurze Beschreibung zu den Systemkommandos an, die das übergebene Stichwort als separates Wort enthalten.

zsoelim

Liest Dateien und ersetzt Zeilen der Form .so <Datei> > mit dem tatsächlichen Inhalt von <Datei>.