Aus Linux-Magazin 12/2007

LPIC-1-Vorbereitung - Teil 17: Dokumentation

© fotolia.com, Dietmar Wieser

Auch Profis kennen nicht alle Kommando-Optionen – sie wissen aber, wo sie suchen müssen. Das LPI erwartet viele Detailkenntnisse, setzt aber auch voraus, dass Prüflinge die Standardmethoden kennen, um Hilfe in der Programmdokumentation zu finden.

Fast alle Tools, die Administratoren für die LPI-Prüfung kennen müssen, sind Programme, die in der Shell laufen – wo es grafisch wird, geht es nur um die Konfiguration des X-Window-Systems. Die klassischen Kommandozeilen-Tools, von denen es viele schon in älteren Unix-Versionen gab, bringen meist eigene Dokumentation in einem von zwei Standardformaten mit: Manpages (Manual Pages, Handbuchseiten) sind dabei Standard auf allen Unix-Systemen, während die etwas neuere Alternative der Info-Seiten aus der GNU-Welt stammt. Daneben gibt es oft noch zusätzliche Dokumente in Form von einfachen Ascii- oder formatierten HTML-Texten.

Manual Pages

Die wichtigste Informationsquelle rund um die Kommandozeilen-Tools sind die Manual Pages. Software-Entwickler erstellen sie bequem und schnell und bringen sie nach Änderungen problemlos auf den neuesten Stand. Spezielle Tools erledigen das sogar automatisch, indem sie Änderungen im Quelltext analysieren. Gleichzeitig ist es leicht, Manpages zu installieren und sie zu lesen.

Handbuchseiten wie die in Abbildung 1behandeln ein bestimmtes Thema, oft einen einzigen Befehl. Spezielle Programme übernehmen die Suche und Anzeige einer Manpage, wahlweise auf der Kommandozeile, mit einer grafischen Oberfläche oder auch übers Web.

Abbildung 1: Manpages gibt es zu den meisten installierten Kommandozeilen-Programmen. Dank ihres einheitlichen Aufbaus ist die Orientierung leicht, am Anfang stehen Syntax und Beschreibung.

Abbildung 1: Manpages gibt es zu den meisten installierten Kommandozeilen-Programmen. Dank ihres einheitlichen Aufbaus ist die Orientierung leicht, am Anfang stehen Syntax und Beschreibung.

Das Dateiformat der Manpages 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 jeder Programmierer Manpages erstellen und jeder Anwender sie lesen 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 Bibliothek 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” stellt alternative Tools für die Anzeige vor.

Grafische Frontends

Für Manpages und für das Info-System gibt es mehrere grafische Frontends. »xman« etwa ist eine schlichte, aber brauchbare Oberfläche: [Strg]+[S] sucht nach einer Manpage. Alternativ zeigt das Tool alle Handbücher eines Abschnitts an (Abbildung 2).

Wer lieber mit einem Browser die Dokumentation durchforstet, der verwendet den Konverter »man2html«. Auch im Internet sind die meisten Manpages zu finden, wobei schon eine Suche nach “man” und dem Programmnamen oft zum Ziel führt. Ansonsten gibt es viele Manpage-Sammlungen, zum Beispiel die unter [3].

Abbildung 2: Die klassischen Man- und Info-Seiten-Betrachter »xman« und »tkinfo« (oben) sowie eine moderne Alternative: KDEs Konqueror (unten) beherrscht beide Standards.

Abbildung 2: Die klassischen Man- und Info-Seiten-Betrachter »xman« und »tkinfo« (oben) sowie eine moderne Alternative: KDEs Konqueror (unten) beherrscht beide Standards.

Info-Seiten zeigt »tkinfo« auf dem Desktop an. Bedienung und Aussehen ähneln dabei dem Original-Info-Betrachter, der zum Beispiel im Emacs auch mit der Maus bedienbar ist. Einige Distributionen liefern das Programm nicht mehr mit, es ist aber unter [4] noch erhältlich, unter anderem als RPM- und Debian-Paket.

Wer ohnehin KDEs Dateimanager Konqueror verwendet, muss gar nicht nach Spezialprogrammen suchen, denn der Konqueror versteht URLs der Form »man:Programmname« und »info:Programmname«.

Ordnung im Man-Dschungel

Jede Manpage gehört zu einem Abschnitt (Englisch: section). Acht klassische Abschnitte stellt Tabelle 1 vor. Zusätzlich zu diesen mit Nummern benannten gibt es noch 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-Abschnitt

 

Abschnitt

Beschreibung

1

Ausführbare Programme und Shellbefehle

2

Systemaufrufe (Kernelfunktionen)

3

Bibliotheksaufrufe (Funktionen in Systembibliotheken)

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

Administrationsbefehle, etwa »lsmod«,
»ifup«

Die Manualdateien, deren Namen abhängig vom Abschnitt auf ».1«, ».2« und so weiter enden, liegen in Verzeichnissen, die der Filesystem Hierarchy Standard [2] festlegt, und sind damit leicht auffindbar. Für jeden Abschnitt gibt es ein eigenes Unterverzeichnis, etwa »man1«. Wo »man« die Handbuchseiten findet, legen zum einen die Datei »/etc/manpath.config« und zum anderen die Umgebungsvariable »MANPATH« fest. Jeder Benutzer hat so die Möglichkeit, Manpages in anderen als den Standardverzeichnissen zu installieren.

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

Einige Systeme mounten die Partition von »/usr« read-only, um die Sicherheit zu erhöhen. Um auf solchen Systemen trotzdem Cat Pages zu verwenden, ist es möglich, sie unterhalb von »/var« zu speichern. Das legt der Administrator über die globale Konfigurationsdatei »/etc/manpath.config« fest. Debian und Open Suse verwenden etwa das Verzeichnis »/var/cache/man«.

Zusätzliche Ordner enthalten lokalisierte Manpages. Die englischsprachige Dokumentation zum 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 »man« anzeigt, entscheiden die Umgebungsvariablen »LANG« und »LC_ALL«. Viele Linux-Distributionen speichern die Manpages übrigens komprimiert, meist im Gzip-Format, sehr selten aber auch als Bzip2-Datei.

LPI-Aufgabengruppen

Das Linux Professional Institute gliedert die Prüfungsfragen in Aufgabengruppen. Dieser Artikel erklärt die folgenden Abschnitte:

  • 1.108.1 Nutzung und Verwaltung lokaler Systemdokumentation
  • 1.108.2 Finden von Linux-Dokumentation im Internet
  • 1.108.5 Benachrichtigen von Benutzern über systembezogene
    Ereignisse

Apropos, was ist …?

Wer nun in dem Wust an Kommandos genau das eine sucht, dessen Name ihm gerade nicht einfällt, dem helfen zwei Tools aus dem Man-Paket: »apropos« durchforstet die Titel aller gespeicherten Manpages nach dem angegebenen Argument. Dabei spielt es keine Rolle, ob der Suchbegriff 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 vorkommt.

Beide Kommandos benutzen zum schnellen Auffinden der gewünschten Informationen eine binäre Datenbank, die der Befehl »makewhatis« (oder »mandb«, je nach Distribution) erstellt. Ein Cronjob [5] startet regelmäßig diesen Vorgang, damit die Datenbank immer auf dem aktuellen Stand ist.

Eigenkreationen

Intern benutzt »man« meist die Roff-Tools (»nroff« oder »groff«). Auf GNU-Systemen ruft »nroff« lediglich »groff« (GNU Roff) auf, welches das Verhalten des traditionellen »nroff«-Kommandos emuliert. »nroff« erzeugt aus der Manpage einfachen Ascii-Text, das GNU-Tool beherrscht noch weitere Dateiformate wie Postscript und HTML.

Der folgende Befehl wandelt den Quelltext einer Manpage ins Ascii-Format (genauer: nach ISO-Latin oder UTF) um und zeigt das Ergebnis in »less« an:

nroff -man Manpage-Datei | less

Die Option »-m« gibt das Makropaket an, das »nroff« zum Interpretieren der Formatierung verwenden soll (hier »an«), sodass sich die leicht merkbare Schreibweise »-man« ergibt.

Makros für die Ausgabe

Das Makropaket »an« enthält die gebräuchlichen Befehle für Manpages. Auf vielen Linux-Systemen gibt es zusätzlich noch das etwas erweiterte Makropaket »andoc« (Aufruf mit »-mandoc«). Um eine Manpage ins Postscript-Format zu konvertieren, genügt der Aufruf »groff -Tps -man Manpage-Datei > ausgabe.ps«. Das Ausgabeformat legt hier die Option »-T« fest.

Mehr Übersicht

Der größte Vorteil der Manpages ist, dass sie klein sind und jedes Unix-System sie versteht. Schwierig wird es, 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 rund 4500 Zeilen (entsprechend etwa 70 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 Dokumentation auf den Bildschirm. Eine Einstiegsseite dient als Orientierungshilfe und Inhaltsverzeichnis.

Navigieren in Bäumen

Als Alternative bietet sich das Info-System an. Anstelle der linearen Form von Manpages kommt eine Baumstruktur zum Einsatz, die Texte durch hierarchische Menüs gliedert. Zusätzliche Querverweise erlauben ein rasches Hin-und-her-Springen zwischen inhaltlich verwandten Themen. Ein durchdachtes Navigationssystem erleichtert die Bewegung innerhalb des Baums.

Die 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 Informationen zusammenzusuchen. Dabei ist eine ordentliche und gut überschaubare Gliederung der Referenz sehr hilfreich.

Für die Navigation im Info-System gibt es den Befehl »info«. Außerdem zeigen die Editoren Emacs und Xemacs Info-Seiten an (Abbildung 3). Im einfachsten Fall liest der Benutzer Info-Seiten von vorne nach hinten wie eine Manpage. Zum Blättern dienen 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 [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] automatisch zu ergänzen. Den Cursor auf den betreffenden Menüpunkt zu setzen und [Enter] zu drücken bewirkt das Gleiche.

Der Navigation zwischen einzelnen Knoten dienen die folgenden 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 zuvor angezeigten Knoten geht es mit [L] (last, letzte Seite).

Viele Anwendungen, die das GNU-Projekt entwickelt hat, bieten nur in den Info-Seiten die vollständige Dokumentation, denn »info« ist das bevorzugte Dokumentationsformat in der GNU-Welt. Häufig gibt es dann zusätzlich eine minimalistische Manpage, die nur die wichtigsten Optionen nennt und auf die Info-Seiten verweist.

Abbildung 3: 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 3: 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.

Readmes, Howtos und FAQs

Bei all diesen speziellen Dokumentations-Tools sollten Administratoren die banalste Form von Dokumentation nicht vergessen: Reine Textdateien (oft mit dem Namen »README«) begleiten die meisten Programme und enthalten häufig wertvolle Informationen. Linux-Distributionen verstecken diese Dateien unterhalb von »/usr/share/doc/«, sehr alte Versionen arbeiten mit »/usr/doc/«.

Unter [1] präsentiert das Linux Documentation Project eine große Dokumentensammlung. Dort gibt es unter anderem Howtos, die manches schwierige Problem unter Linux lösen helfen (etwa WLAN-Karten einrichten, DVDs brennen, LDAP konfigurieren). Diverse FAQs (Frequently Asked Questions) beantworten häufig gestellte Fragen.

Auch in den Programmen selbst findet sich in vielen Fällen eine eingebaute Hilfe, die das Tool beim Aufruf mit dem Parameter »-h« oder »–help« preisgibt. Die so abrufbaren Informationen sind aber meist nur als Gedächtnisstütze nutzbar und selten so umfangreich wie Man- oder Info-Seiten.

Botschaften des
Administrators

Anwender suchen nicht nur in den Programm-Dokumentationen, sondern lesen auch Botschaften des Systemverwalters – allerdings nur, wenn sie sich an einer Textkonsole anmelden oder via SSH auf dem Rechner einloggen. Der Administrator schreibt solche Botschaften in drei Dateien, die das System in verschiedenen Situationen anzeigt:

  • Die Datei »/etc/issue« enthält den Text, den
    das System bei der Anmeldung im Textmodus vor dem Login ausgibt.
    Hier findet sich meist die Information, mit welcher Kernelversion
    das installierte Linux-System arbeitet. Für Übersicht
    sorgt auch der Hinweis auf den Terminalnamen (»tty1«,
    »tty2« und so weiter). Auf einem Open-Suse-System
    enthält die Datei die Zeile »Welcome to openSUSE 10.2
    (i586) – Kernel r (l)«, wobei der Login-Prozess
    »r« durch die Versionsnummer (Release) und
    »l« durch den Terminal-Namen ersetzt: »Kernel
    2.6.18.2-34-default (tty1)«.
  • »/etc/issue.net« hat die gleiche Funktion wie
    »/etc/issue«, ist aber für Anmeldungen von
    entfernten Rechnern aus zuständig. Da SSH keinen klassischen
    Login-Prompt verwendet, geht es hier nur um Logins via Telnet, die
    heute aus Sicherheitsgründen nicht mehr üblich sind. (Die
    Anzeige von »issue.net« beim SSH-Login aktiviert der
    Eintrag »Banner /etc/issue.net« in
    »/etc/ssh/sshd_config«.)
  • »/etc/motd« enthält die Message of the day,
    also die Nachricht des Tages. Diese Meldung erscheint erst nach
    erfolgreicher Anmeldung am System und informiert zum Beispiel
    über geplante Systemwartungszeiten, in denen der Rechner also
    nicht verfügbar sein wird, oder über kürzlich
    erfolgte Software-Updates.

Hauptsache gefunden

Bei der Suche nach Dokumentation führen viele Wege zum Ziel. Geht es nur um eine Liste der Aufrufparameter, reicht meist der Programmaufruf mit »-h« oder ein kurzer Blick in die Manpage. Wie ein Programm funktioniert, ist oft in der Manpage, den Info-Seiten oder der Programm-Dokumentation zu erfahren. Bleiben alle hier aufgezeigten Wege und auch eine Internetsuche erfolglos, haben Linux-Profis zuletzt noch die Option, im Quelltext des jeweiligen Programms nach Hinweisen zu suchen. Nach diesem Ansatz fragt das LPI in der Prüfung jedoch nicht.

Infos

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

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

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

[4] »tkinfo«: [http://math-www.uni-paderborn.de/~axel/tkinfo/]

[5] Peer Heinlein, “Admins Vollprogramm – LPIC-1-Kurs, Teil 10”: Linux-Magazin 05/07, S. 84

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