Aus Linux-Magazin 07/2005

Aus dem Naehkaestchen geplaudert: Dokumentation unter Unix

Den professionellen Umgang mit Unix-Systemen lernen – das dauert seine Zeit. Einfache Benutzeroberflächen helfen dabei ebenso wie das Linux-Magazin. Admins orientieren sich eher anhand detaillierter Dokumentationen. Was Unix und Linux da zu bieten haben, zeigt dieser Artikel.

Die meisten Linux-Anwender (und Administratoren ohnehin) landen früher oder später auf der Konsole. Kommandozeilen-Programme sind meist flexibler und effizienter als ihre mausgesteuerten Kollegen. Dennoch haben sie auch Nachteile: Es gibt eine Unzahl an Optionen und Parametern, die sich niemand komplett merken kann. Eine ausführliche und einfach zugängliche Dokumentation der Programme ist für jeden Admin von unschätzbarem Wert.

Manual Pages

Dazu gehört auch, dass die Informationen nicht umständlich aufbereitet sind. Aufwändige Präsentationen sind denkbar ungeeignete Referenzen für Software, Entwickler wollen nicht Zeit damit vergeuden, ihre Doku aufzuhübschen. Aus diesen pragmatischen Anforderungen heraus haben sich mehrere Formen der Online-Dokumentation entwickelt und verbreitet, die unterschiedliche Kompromisse zwischen Lesbarkeit und zeitsparender Erstellung eingehen.

Das am häufigsten genutzte Medium sind die Handbuchseiten, so genannte Manual Pages oder kurz Manpages. Sie sind für den Software-Entwickler bequem und schnell zu erstellen und problemlos auf den neuesten Stand zu bringen. Spezielle Werkzeuge aktualisieren sie teilweise sogar automatisch aus Änderungen im Quelltext. Manpages lassen sich zudem unproblematisch installieren und sind sehr anwenderfreundlich.

Abbildung 1: Manpages sind ein schneller Weg, um Dokumentation zu den meisten installierten Programmen zu erhalten. Für fast jedes Kommandozeilenprogramm gibt es eine solche Handbuchseite.

Abbildung 1: Manpages sind ein schneller Weg, um Dokumentation zu den meisten installierten Programmen zu erhalten. Für fast jedes Kommandozeilenprogramm gibt es eine solche Handbuchseite.

Handbuchseiten wie in Abbildung 1 sind einzelne Dokumente zu je einem bestimmten Thema, in der Regel einem einzigen Befehl. Eigens zu diesem Zweck entwickelte Programme übernehmen die Suche und Anzeige einer Manpage, wahlweise auf der Kommandozeile, in einer grafischen Oberfläche oder übers Web. Das zugrunde liegende Dateiformat (siehe den Quellcode in Listing 1) stammt von Roff, einem Textsatzsystem aus den frühen 70er Jahren. Es unterstützt in den für Manpages verwendeten Betriebsarten nur grundlegende Formatierungen wie Überschriften, Hervorhebungen und Aufzählungen. Diese Einfachheit garantiert, dass jedermann eine Manpage erstellen kann. So entstehen keine unnötigen Hemmschwellen für die ohnehin manchmal lästige Dokumentation von Software.

Manpages sind in jeder aktuellen Linux-Distribution reichlich vorhanden und, da sie wenig Platz einnehmen, oft schon in der minimalen Konfiguration enthalten. Außerdem installieren viele Programmpakete ihre eigenen Handbuchseiten gleich mit. Das Linux Documentation Project [1] bietet ergänzende Seiten zu grundlegenden Themen wie der Libc und dem Kernel an.

Anwender rufen eine Manpage von der Konsole aus auf, indem sie den Namen – häufig den Namen des gewünschten Befehls – als Argument zum Programm »man« angeben: »man bash«. Der Kasten “Grafische Frontends” zeigt alternative Sichtweisen.

Ordnung im Man-Dschungel

Jede Seite ist in einer Sektion eingeordnet. Die wichtigsten acht Sektionen fasst Tabelle 1 zusammen. Zusätzlich zu den Nummern-Sektionen gibt es noch diverse weitere, mit Buchstaben versehene Abschnitte. Normalerweise sind das die Buchstaben n (für new), l (local), p (public) und o (old). Auf vielen Systemen landen etwa die Manpages zur Programmiersprache Tcl unter n.

Tabelle 1:
Man-Sektionen

 

Sektion

Beschreibung

1

Ausführbare Programme oder Shellbefehle

2

Systemaufrufe (Kernelfunktionen)

3

Bibliotheksaufrufe (Funktionen in System-Bibliotheken)

4

Spezielle Dateien (gewöhnlich in »/dev«)

5

Dateiformate und Konventionen, zum Beispiel
»/etc/passwd«

6

Spiele

7

Makropakete und Konventionen (etwa »XF86Config«,
»man«)

8

Sysadmin-Befehle (etwa »lsmod«,
»ifup«)

Alle Manuals tummeln sich in dedizierten Verzeichnissen [2] und sind damit leicht auffindbar. Für jede Sektion gibt es ein eigenes Unterverzeichnis »man1«, »man2« und so weiter. Wo »man« seine Dokus findet, legt zum einen die Datei »/etc/manpath.config« fest, zum anderen die Umgebungsvariable »MANPATH«. Jeder Benutzer ist dadurch in der Lage, eigene Manpages in anderen Verzeichnissen als den vom System vorgegebenen zu installieren.

Alle Handbuchseiten auf mehrere Verzeichnisse verteilen war zu frühen Unix-Zeiten noch eine willkommene Optimierung. Denn das damals verbreitete Dateisystem UFS arbeitete mit steigender Anzahl an Dateien in einem Ordner weniger performant.

Je nach Konfiguration speichert »man« in dafür vorgesehenen Verzeichnissen formatierte Manpages ab (so genannte Cat-Pages), sodass beim nächsten Abruf dieser Seiten keine Formatierung mehr nötig ist. Das spart Rechenzeit auf langsamen Computern. Die Verzeichnisse heißen analog zu den Man-Foldern »cat1«, »cat2« und so weiter.

Einige Systeme mounten die Partition von »/usr« read-only, um die Sicherheit zu erhöhen. Um dort trotzdem Cat-Pages zu verwenden, ist es möglich, sie unterhalb von »/var« zu speichern. Das legen Admins über die globale Konfigurationsdatei »/etc/manpath.config« fest.

Zusätzliche Ordner enthalten lokalisierte Manpages. Die englischsprachige Dokumentation zu dem Kommando »chmod« findet sich beispielsweise in der Datei »/usr/share/man/man1/chmod.1«, die deutsche Übersetzung in »/usr/share/man/de/man1/chmod.1«. Welche Seite das Man-Programm anzeigt, entscheiden Admins über die Umgebungsvariablen »LANG« und »LC_ALL«.

Apropos, was ist…?

Wer nun in dem Wust an Kommandos mal wieder genau das eine sucht, dessen Name ihm grade nicht einfällt, dem helfen »apropos« und »whatis«. »apropos« durchforstet die Titel aller gespeicherten Manpages nach dem angegebenen Argument. Dabei spielt es keine Rolle, ob das Argument als ganzes Wort oder als Bestandteil eines Wortes vorkommt. »whatis« arbeitet ähnlich, zeigt aber nur Treffer, bei denen das Argument als ganzes Wort im Titel enthalten ist.

Sowohl »apropos« als auch »whatis« benutzen zum schnellen Auffinden der gewünschten Informationen eine binäre Datenbank, die der Befehl »makewhatis« (oder »mandb«, je nach Distribution und Unix-Version) erstellt. Er wird in regelmäßigen Abständen von »cron« oder »anacron« [4] aufgerufen, damit die Datenbank immer auf dem aktuellen Stand ist.

Listing 1: Quelltext einer
Manpage

01 .TH man 1 "14 May 2001" "2.3.19" "Manual pager utils"
02 .SH NAME
03 man - an interface to the on-line reference manuals
04 .SH SYNOPSIS
05 ." The general command line
06 .B man
07 .RB [| -c ||| -w ||| -tZT
08 .IR device |]
09 ."
10 ...
11 .RI [|[| section |]
12 .IR page  .|.|.|] .|.|.
13 ."
14 ...
15 .SH DESCRIPTION
16 .B man
17 is the system's manual pager. Each
18 .I page
19 argument given to
20 .B man
21 is normally the name of a program, utility or function.
22 The
23 .I manual page
24 associated with each of these arguments is then found and displayed.
25 ."

Eigenkreationen

Intern benutzt »man« meist die Roff-Tools »nroff« beziehungsweise »groff«. Auf GNU-Systemen ruft »nroff« lediglich »groff« (GNU Roff) auf, um das Verhalten des traditionellen »nroff«-Kommandos zu emulieren. »nroff« dient der Ausgabe in einfachem Ascii-Text, das GNU-Tool beherrscht noch weitere Dateiformate wie Postscript und HTML.

Folgender Befehl wandelt den Quelltext einer Manpage nach Ascii (genauer Latin 1) und zeigt das Ergebnis in Less an: »nroff -man Manpage.1 | less«. Die Option »-m« gibt das Makropaket an, das »nroff« zum Interpretieren der Formatierung verwenden soll.

Makros für die Ausgabe

Das Makropaket »an« enthält die gebräuchlichen Befehle für Manpages. Viele Linux-Systeme bieten alternativ das etwas erweiterte Makropaket »andoc« (Aufruf mit »-mandoc«). Um eine Manpage nach Postscript umzuwandeln, genügt der Aufruf: »groff -Tps -man Manpage.1 > Manpage.ps«. Das Ausgabeformat bestimmt die Option »-T«.

Eine Manpage selber erstellen ist einfach. In Roff beginnen Befehle immer mit einem Punkt als erstem Zeichen einer Zeile; Optionen folgen dahinter in derselben Zeile. Die wichtigsten Formatierungsbefehle für Manpages lassen sich an einer Hand abzählen: ».TH« leitet eine Manpage ein und benötigt als Argumente Kurztitel, Abschnittsnummer, Datum, Version und ausführlichen Titel. Diese Daten landen bei der Ausgabe in der Kopf- und Fußzeile.

Grafische Frontends

Sowohl für Manpages als auch für Info-Systeme gibt es mehrere grafische Frontends, die eine Bedienung mit der Maus ermöglichen. »xman« etwa ist eine einfache, aber komfortable Oberfläche. [Strg]+[S] sucht nach der passenden Manpage. Alternativ lassen sich alle Handbücher einer Sektion anzeigen (Abbildung 2).

Wer lieber mit einem Browser die Dokumentation durchforstet, sollte »man2html« prüfen. Online sind unter [3] viele Handbuchseiten als Muster zu bewundern.

Infoseiten zeigt »tkinfo« auf dem Desktop an. Bedienung und Aussehen (siehe Abbildung 3) ähneln allerdings dem Original, welches zum Beispiel im Emacs auch mit der Maus bedienbar ist.

Weitere Format-Befehle: ».SH« (Subheading) markiert eine Überschrift, ».B« (Bold) formatiert eine Passage fett, ».I« (Italics) kursiv beziehungsweise unterstrichen, je nach Terminal. Eine Leerzeile beendet den Absatz und ».BR« (Break) erzwingt den Umbruch einer Zeile.

Beim Bauen einer Manpage ist zu beachten, dass die Zwischenüberschriften (».SH«) genormt sind. Besondere Bedeutung hat der Abschnitt »NAME«, denn sein Inhalt ist besonders für die »whatis«-Datenbanken wichtig.

Abbildung 2: »xman« präsentiert alle installierten Manpages über ein grafisches Frontend. »xman« zeigt auch eine Liste der Manpages innerhalb einer Sektion. Ein Klick darauf führt zur entsprechenden Doku.

Abbildung 2: »xman« präsentiert alle installierten Manpages über ein grafisches Frontend. »xman« zeigt auch eine Liste der Manpages innerhalb einer Sektion. Ein Klick darauf führt zur entsprechenden Doku.

Infos satt

Der größte Vorteil der Manpages liegt darin, dass sie klein und unkompliziert sind. Schwierig wird es allerdings, wenn größere Zusammenhänge oder komplexe Softwarepakete zu dokumentieren sind. Die Manpages zu den diversen Shells beispielsweise, die jeweils eine komplette Programmiersprache nebst Tools und Tipps beschreiben, geraten an die Grenze des Zumutbaren. Die Manpage zur Bash ist mit gut 4000 Zeilen (entsprechend etwa 60 Druckseiten) alles andere als übersichtlich.

Ein sinnvoller Ansatz ist es, die Manpage in kleine Teile zu zerlegen, wie es bei Perl der Fall ist. Benutzer holen sich damit gezielt nur den relevanten Teil der Doku auf den Bildschirm. Eine Einstiegsseite dient als Orientierungshilfe und Inhaltsverzeichnis.

Abbildung 3: Für das Info-System gibt es die grafische Oberfläche »tkinfo«. Die Navigation mit der Maus ist bei Info-Pages für viele Anwender bequemer als mit der Tastatur.

Abbildung 3: Für das Info-System gibt es die grafische Oberfläche »tkinfo«. Die Navigation mit der Maus ist bei Info-Pages für viele Anwender bequemer als mit der Tastatur.

Navigieren in Bäumen

Als Alternative bietet sich das Info-System an. Anstelle der linearen Form von Manpages benutzt Info eine Baumstruktur, die Texte durch Menüs und Untermenüs aufgliedert. Zusätzliche Querverweise erlauben ein rasches Hin- und Herspringen zwischen inhaltlich benachbarten Themen. Ein durchdachtes Navigationssystem erleichtert die Bewegung innerhalb des Baums.

Diese baumartige Verteilung der Informationen orientiert sich an der üblichen Praxis bei der Arbeit am Computer. Wer eine neue Skriptsprache verwendet, wünscht sich eine kurze Einführung und wird bei der Anwendung schnell querlesen, um die gerade benötigten Infos zusammenzusuchen. Dabei erweist sich eine ordentliche und gut überschaubare Gliederung der Referenzwerke als äußerst hilfreich.

Abbildung 4: Mit dem Editor Emacs browsen Anwender im Info-System. Unter X gestartet ist es sogar möglich, die Info-Menüs mit der Maus aufzurufen.

Abbildung 4: Mit dem Editor Emacs browsen Anwender im Info-System. Unter X gestartet ist es sogar möglich, die Info-Menüs mit der Maus aufzurufen.

Der Navigation im Info-System dient der Befehl »info«. Außerdem bieten die Editoren Emacs und XEmacs passende Modi zum Steuern durch das System (Abbildung 4). Im einfachsten Falle liest der Benutzer Info-Seiten von vorne nach hinten wie eine Manpage. Zum Blättern dienen dabei die [Leertaste] (vorwärts) und [Backspace] (rückwärts).

Tauchen Verzweigungen auf, funktionieren die beiden Tasten auch, jedoch sind alternative Schritte sinnvoller: Menüs sind durch »* Menu:« gekennzeichnet und geben eine Übersicht über die unmittelbar untergeordneten Knoten. Mit dem Tastenbefehl [M] springt der Anwender direkt zu einem der Menüpunkte. Dabei reicht es, die ersten paar Buchstaben in der Eingabeaufforderung einzugeben und den Rest mit [Tab] ergänzen zu lassen. Den Cursor auf den betreffenden Menüpunkt setzen und [Enter] drücken bewirkt das Gleiche.

Zur Navigation zwischen einzelnen Knoten dienen die Tasten [N] (Next, zur nächsten Seite), [P] (Previous, zur vorherigen Seite) und [U] (Up, zur übergeordneten Seite). Erwähnenswert sind auch die Querverweise, die durch »see« (siehe) gekennzeichnet sind. Ihnen folgt man mit [F] (Follow, folgen). Zurück zum vorher angezeigten Knoten geht es mit [L] (Last, letzte Seite).

Info-Dateien im Quelltext

Vor der Übersetzung in ein Format, das der Info-Reader versteht, sehen die Quelldateien (Erweiterung ».texi«) aus wie Tex-Dokumente mit einigen Zusatzbefehlen. Die Tex-Befehle beginnen dabei wie üblich mit einem Backslash »«, während die Info-Befehle mit einem Et-Zeichen (»@«) anfangen.

Um eine Info-Datei selbst zu erstellen, ist das Programmpaket »texinfo« nötig. Es enthält unter anderem eine ausführliche Dokumentation über das Texi-Format – wohlgemerkt als Info-Datei. ».texi«-Files lassen sich mit »makeinfo« in ».info«-Files übersetzen. Üblicherweise landen diese dann in »/usr/info« oder »/usr/share/info«. Dort befindet sich außerdem eine Datei »dir«, die einen Überblick über alle installierten Info-Files gibt. Der Info-Reader zeigt sie wie eine voreingestellte Homepage beim Start an.

Alternativ übersetzt Tex Texi-Dateien nach DVI für den Ausdruck oder die Konvertierung in andere Formate wie PDF und Postscript. Formal handelt es sich bei Texi-Files um für Tex verständliche Dokumente. Gleich in der ersten Zeile lesen die Dateien mit »input texinfo« nämlich ein Makro-Paket, das die nachfolgenden Klammeraffen-Befehle interpretiert. Tex liefert als Ausgabe eine DVI-Datei sowie diverse Indexfiles. »makeinfo« & Co. lesen die gleichen Klammeraffen-Befehle wie Tex, produzieren damit aber ein Info-Dokument für die interaktive Anzeige am Bildschirm.

Readmes, Howtos und FAQs

Bei all diesen speziellen Dokumentations-Tools sollten Admins aber die banalste Form von Dokumentation nicht vergessen: Reine Textdateien (meist mit dem Namen »README«) begleiten die meisten Programme und enthalten oft wertvolle Informationen. Linux-Distributionen verstecken diese Files unterhalb von »/usr/share/doc/«.

Unter [1] präsentiert das Linux Documentation Project eine große Doku-Sammlung. Dort sind unter anderem Howtos zu finden, mit deren Hilfe sich manche Aufgabe unter Linux lösen lässt (WLAN-Karten einrichten, DVDs brennen, LDAP konfigurieren). Diverse FAQs beantworten häufig gestellte Fragen.

Welches Tool Admins und Anwender schließlich benutzen, hängt stark von der eingesetzten Linux- und Unix-Variante ab. Die Bibliothek des Help Viewer unter Darwin (Mac OS X) oder die Answer Books von Solaris sind Beispiele aus anderen Unix-Welten. (mwe)

Infos

[1] Linux Documentation Project: [http://www.tldp.org]

[2] Filesystem Hierarchy Standard zu Manual Pages: [http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREMANMANUALPAGES]

[3] Manpages im Web: [http://linux.ctyme.com]

[4] Marc André Selig, “Cron, At, Anacron”: Linux-Magazin 11/04, S. 60

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben