1.108.2 – Linux-Dokumentation im Internet

zurück zu Linux Zertifizierungen LPIC
1.108.2 – Finden von Linux-Dokumentation im Internet
Prüfungskandidaten sollten in der Lage sein, Linux-Dokumentation zu finden und zu verwenden. Dieses Lernziel beinhaltet die Verwendung von Linux-Dokumentation bei Quellen wie dem Linux Documentation Project (LDP), auf den Webseiten von Distributoren und Drittanbietern, Newsgruppen, Newsgruppen-Archiven und Mailing-Listen.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

Nicht verfügbar

Hier geht es im Wesentlichen darum, die wichtigsten Dokumentationsquellen im Internet zu finden und benutzen zu können. Die Bewertung dieses Abschnitts ist nicht sehr hoch, es gibt jedoch tatsächlich Fragen, die einzelne Newsgroups oder Webseiten zur Auswahl stellen und fragen, in welchen Informationen zu einem bestimmten Thema zu finden sind. Hier finden Sie eine Auflistung wichtiger Informationsquellen in englischer Sprache. Schauen Sie sich um, lesen Sie etwas nach, kurz gewöhnen Sie sich an den Umgang mit solchen Dokumentationen. Es gibt keine wichtigeren Hilfsmittel unter Linux…

Es gibt natürlich auch diverse Newsgroups und Mailinglisten auf deutsch, aber Sie tun gut daran, sich auch bei den englischsprachigen etwas auszukennen, in der LPI101-Prüfung werden sicher keine deutschen nachgefragt…

Webseiten

* www.linuxdoc.org
Die Seiten des Linux Documentation Projects. Handbuchseiten, Bücher, HOWTOs, FAQs und vieles mehr.
* rute.sourceforge.net
Ein kompletter Kurs und Nachschlagwerk für Linux.
* www.linux.org/docs/
Eine weitere Sammlung von Dokumentationen auf der offiziellen Linux Webseite

Newsgruppen

* comp.os.linux.advocacy
Generelle Diskussion über die Vorteile von Linux gegenüber anderen Betriebssystemen.
* comp.os.linux.announce
Moderierte Nachrichten über Ankündigungen bezüglich Linux
* comp.os.linux.answers
Moderierte Versendung von Linux FAQ’s. HOWTO’s, und README’s.
* comp.os.linux.apps
Generelle Diskussion über Linux Anwendungssoftware.
* comp.os.linux.development.apps
Diskussion über Anwendungsprogrammierung und -portierung für Linux.
* comp.os.linux.development.system
Diskussion über den Linux-Kernel, Gerätetreiber und ladbare Module.
* comp.os.linux.hardware
Generelle Diskussion über Linux Hardware-Kompatibilitätsfragen.
* comp.os.linux.misc
Vermischte Themen, die in keiner anderen Newsgruppe Platz fanden.
* comp.os.linux.networking
Generelle Diskussion über Netzwerk- und Kommunikationsfragen.
* comp.os.linux.setup
Generelle Diskussion über Linux-Installation und Systemverwaltung.
* comp.os.linux.x
Diskussion zum Thema X Window System unter Linux.
* alt.os.linux
Generelle Diskussion zum Thema Linux.

Newsgroup-Archive

* www.dejanews.com
Archiv aller Newsgroups. Ist inzwischen von Google übernommen worden.

Mailinglists
Die folgenden Mailinglisten laufen alle auf einem zentralen Majordimo-Server. Um eine Liste zu abonieren, muß eine Mail an majordomo@vger.kernel.org geschickt werden, die im Text der Mail die Zeile

subscribe Listenname

stehen hat. Als Listenname muß einer der unten aufgeführten Namen angegeben werden. Kommandos in der Überschrift (im Subjekt) werden nicht bearbeitet.

* linux-8086 – für 8086 Systeme
* linux-admin – Linux Administration
* linux-alpha – Linux auf dem DEC Alpha
* linux-apps – Software Anwendungen
* linux-arm
* linux-bbs – Für Mailbox-Systeme (Bulletin Board Systems)
* linux-c-programming – Progammieren und Entwickeln mit C
* linux-config – System Konfiguration
* linux-console
* linux-diald
* linux-doc – Dokumentationsprojekte
* linux-fido
* linux-fsf
* linux-ftp
* linux-gcc – Wichtige Punkte für die, die unter Linux entwickeln
* linux-gcc-digest – Digest der linux-gcc Liste
* linux-hams – Amateurfunk und Linux
* linux-hppa
* linux-ibcs2
* linux-ipx
* linux-isdn
* linux-japanese – Japanische User
* linux-kernel – Generelle Kerneldiskussion
* linux-kernel-announce – Kernel Ankündigungen
* linux-kernel-digest – Digest der linux-kernel Liste
* linux-kernel-patch
* linux-laptop – Linux auf dem Laptop Diskussion
* linux-linuxss – Linux Mach Single Sever Entwicklung
* linux-lugnuts
* linux-mca
* linux-mips
* linux-msdos
* linux-msdos-digest
* linux-msdow-devel
* linux-net
* linux-new-lists
* linux-newbie – Grundlegende Einführung in Linux
* linux-newbiew
* linux-nys
* linux-oasg
* linux-oi – Gebrauch des Object Interface Toolkit
* linux-opengl
* linux-pkg – Diskussion über Paketmanager
* linux-ppp – PPP Netzwerke unter Linux
* linux-pro – DisKussion über die Linux PRO Distribution
* linux-qag – Linux Quality Assurance Group
* linux-raid
* linux-scsi – Scsi Laufwerke Entwicklung und Gebrauch
* linux-serial – Serielle Geräte unter Linux nutzen
* linux-seyon
* linux-smp – Linux auf Symetrischen Multiprozessor Systemen
* linux-sound – Soundcards und Utilities unter Linux
* linux-standards – Standardisierung verschiedener Aspekte von Linux
* linux-svgalib – SVGA Library Diskussion
* linux-tape – Bandlaufwerke unter Linux nutzen
* linux-term
* linux-training@lists.iphil.net – Linux Training
* linux-userfs
* linux-word
* linux-x11 – Gebrauch des X-Window System unter Linux
* linux-x25
* sparclinux – Linux auf der Sparc
* ultralinux

Auf der Linux Mailing Lists-Seite kann man sich auf all den oben genannten und weiteren Mailinglisten direkt eintragen lassen.

(181)

1.108.1 – Systemdokumentation

zurück zu Linux Zertifizierungen LPIC
1.108.1 – Benutzung und Verwaltung lokaler Systemdokumentation
Prüfungskandidaten sollten in der Lage sein, man und die Materialien in /usr/share/doc/ zu benutzen und zu verwalten. Dieses Lernziel beinhaltet das Auffinden relevanter man Pages, das Durchsuchen von man Page-Abschnitten, das Auffinden von Kommandos und dazugehöriger man Pages und die Konfiguration des Zugangs zu man Sourcen und dem man System. Ebenfalls enthalten ist die Verwendung der Systemdokumentation in /usr/share/doc/ und das Bestimmen, welche Dokumentation in /usr/share/doc/ zu behalten ist.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

* man
* apropos
* whatis
* MANPATH

Alleine das Lernen für die LPI101 Prüfung hat sicherlich jedem schon gezeigt, daß eine Online-Hilfe, die zudem für jedes einzelne Programm alle denkbaren Parameter aufführt und erklärt, von größter Wichtigkeit ist. Zu diesem Zweck stellt Linux (wie jedes andere Unix auch) ein Handbuchsystem zur Verfügung, das im Folgenden dargestellt werden soll.

Zu den reinen Handbuchseiten kommen noch weitere Dokumentationen hinzu, die entweder von den Autoren der jeweiligen Programme geschrieben wurden, oder von Gruppen, die sich zum Ziel gesetzt haben, Linux für viele Anwender durchschaubarer zu machen. Eine der wichtisten solchen Gruppen ist das Linux Documentation Project (LDP), das verschiedene Dokumentationen erstellt hat, die viele Fragen beantworten. Zu nennen sind hier im Wesentlichen die sogenannten HOWTOs (wie geht was) und die FAQs (frequently asked questions – häufig gestellte Fragen).

Diese Dokumentationen wurden bisher meist unterhalb des Verzeichnisses /usr/doc gespeichert, seit der neuen Version 2.0 des Filesystem Hierachy Standard wurde daraus /usr/share/doc.

Das Handbuchsystem von Linux
Linux bietet ein Handbuchsystem an, das offen für zusätzliche Seiten ist. Im Prinzip sollte jedes zu installierende Programm seine Handbuchseite gleich mitbringen. Der Begriff Handbuchseite mag etwas verwirren, eine Handbuchseite besteht gewöhnlich aus vielen einzelnen Seiten, die des Befehls mount(8) hat auf meinem System z.B. 18 physikalische Seiten.

Die Handbuchseiten sind in logische Sektionen aufgeteilt, deren Bezeichnung bei der Referenz eines Befehl dem Befehl in runden Klammern nachgestellt wird. So bedeutet das obige Beispiel mount(8) eben, daß die Handbuchseite für den Befehl mount aus Sektion 8 gemeint ist.

Folgende Handbuchsektionen werden traditionell unterstützt:

1 – Kommandos (User Commands)
Die Kommandos, die vom Benutzer aus einer Shell heraus ausgeführt werden können.
2 – Systemaufrufe (System Calls)
Funktionen, die vom Kernel selbst für den Aufrufenden ausgeführt werden.
3 – C-Bibliotheksfunktionen (Subroutines)
Der Großteil der Funktionen der Library libc, so wie sort(3))
4 – Gerätedateien (Devices)
Dateien, die in /dev zu finden sind.
5 – Dateiformate und Konventionen (File Formats)
Formate von menschenlesbaren Dateien wie /etc/passwd, /etc/inittab, usw.
6 – Spiele (Games)
Spiele und Unterhaltung
7 – Makropakete und Konventionen
Eine Beschreibung des standardmäßigen Layouts des Dateisystems, Formatbeschreibungen für GROFF Makropakete und ähnliche Dinge.
8 – Kommandos für die Systemverwaltung (Sys. Administration)
Kommandos wie mount(8), die nur durch den Superuser ausführbar sind.
9 – Kernelroutinen (Kernel)
Dies ist kein standardisiertes Kapitel und wird geführt, da der Quellcode des Linux Kernels frei verfügbar ist und viele Leute an Änderungen des Kernels parallel arbeiten.

Jede einzelne Handbuchseite ist in einer Datei abgelegt, die aber nicht etwa die formatierte ASCII Ausgabe der Handbuchseite enthält, sondern einen Quelltext für das groff-Textformatiersystem. Damit ist gewährleistet, daß die verschiedenen Handbuchprogramme, die diese Seiten darstellen wollen, das jeweils führ ihre Darstellungsform optimale Ausgabeformat erhalten. So können die Seiten auf graphischen Systemen korrekt dargestellt werden, mit verschiedenen Schriften oder Darstellungsattributen, während sie auf textbasierten Systemen einfacher, aber eben auch korrekt formatiert dargestellt werden.

Die Dateien, die diese Handbuchseiten im Quelltext beinhalten liegen sektionsweise in Verzeichnissen, die jeweils den Namen der Sektion tragen (wie etwa man1, man2, man3, …). In der Regel werden die Dateien in diesen Verzeichnissen komprimiert abgelegt um Festplattenplatz zu sparen. Daher tragen sie normalerweise die Endung .gz

Um Handbuchseiten schneller darstellen zu können, besteht die Möglichkeit, die Formatierung von GROFF nach ASCII schon vorher vorzunehmen. Dann werden die Handbuchseiten im sogenannten CAT-Format (weil sie mit cat anzeigbar sind) gespeichert. Der Nachteil dieser Technik ist der erhöhte Bedarf an Speicherplatz auf den Platten, der Vorteil die schnellere Darstellung der Seiten mit dem man-Kommando. In diesem Fall werden die vorformatierten Seiten in Unterverzeichnissen gespeichert, die statt man jetzt cat heißen, also cat1, cat2, cat3, …

Damit das Handbuchsystem nicht immer alle denkbaren Verzeichnisse mit Handbuchseiten durchsuchen muß, bevor eine Seite angezeigt werden kann, existiert eine Indexdatenbank, die die Namen der Handbuchseiten, ihre Kurzbeschreibung und den Platz, wo die eigentliche Seite zu finden ist. Das Programm mandb zur Verwaltung dieser Datenbank wird weiter unten noch genauer beschrieben.

Programme zum Umgang mit den Handbuchseiten
Es existieren verschiedene Programme, um sich Handbuchseiten anzeigen zu lassen. Die Palette dieser Programme reicht vom Standard-Handbuchprogramm man über Filterprogramme wie rman bis zu graphischen Programmen wie xman oder tkman.

Das wichtigste dieser Programme ist das Programm man. Es ist ein sehr komplexes Dienstprogramm, das hier nur kurz dargestellt werden soll, Details sind der Handbuchseite zu entnehmen…

man zeigt Handbuchseiten in einem Textformat an, das auf jeder Konsole darstellbar ist. Es hat sehr viele Parameter, von denen hier nur die wichtigsten erklärt werden, die für die LPI-101 Prüfung notwendig sind.

Die Aufrufform von man ist:

man [Optionen] [Sektion] Name

Im einfachsten Fall wird also nur der Name der gesuchten Seite angegeben, genauer gesagt der Name des Programms, dessen Handbuchseite Sie lesen wollen. Um also Informationen über den Befehl fdisk zu bekommen, wird einfach der Befehl

man fdisk

eingegeben. Dieser Befehl sucht jetzt nach dem ersten Vorkommen einer Handbuchseite mit Namen fdisk und stellt sie mittels less dar. Dabei ist es unerheblich, in welcher Sektion des Handbuchsystems diese Seite liegt. Da aber die Sektionen der Reihe nach durchsucht werden, wird immer die Handbuchseite der 1. Sektion dargestellt, wenn sie existiert.

Das kann zu Problemen führen, wenn es mehrere Handbuchseiten gleichen Namens gibt. In diesem Fall kann der Parameter -a angegeben werden. Jetzt zeigt man alle gefundenen Handbuchseiten dieses Namens hintereinander an.

Um ganz gezielt nach einer Handbuchseite in einer bestimmten Sektion zu suchen, kann aber auch die gewünschte Sektion mit angegeben werden. Ein Beispiel:

Linux kennt sowohl ein Programm mit Namen passwd (zum Ändern von Passwörtern), als auch eine Datei /etc/passwd (in der die Userinformationen gespeichert sind). Die Handbuchseite für das Programm passwd liegt in der Sektion 1 (User Kommandos), die Beschreibung der Datei passwd finden wir in der Sektion 5 (Dateiformate).

Wenn wir jetzt die Handbuchseite für passwd aufrufen, indem wir schreiben

man passwd

so bekommen wir zwangsläufig die Seite über das Programm und nicht über die Datei. Wie oben schon erwähnt, werden die Sektionen ja der Reihe nach (1-9) durchsucht und die erste gefundene Seite wird angezeigt. Um also direkt die Handbuchseite der Datei passwd anzuzeigen müssen wir die gewünschte Sektion (hier 5) mit angeben. Wir schreiben also

man 5 passwd

und bekommen so die Handbuchseite, die uns das Format der Datei /etc/passwd anzeigt.

Es existieren noch zwei weitere kleine Dienstprogramme, die mit den Handbuchseiten arbeiten, whatis und apropos. Beide bedienen sich ursprünglich einer kleinen Textdatenbank, die jeweils nur den Namen einer Handbuchseite und die Kurzbeschreibung des Befehls enthält. Die sogenannte whatis-Datenbank. Nachdem heute das Linux-Handbuchseitensystem sowieso eine Indexdatenbank aufrechterhält, die auch die Namen und Kurzbeschreibungen speichert, arbeiten whatis und apropos heute mit dieser Indexdatenbank. Nur wenn diese Indexdatenbank nicht gefunden wird, wird die alte whatis-Datenbank durchsucht.

Die Kurzbeschreibungen haben immer das Format:

Name (Handbuchsektion) – Beschreibung

Das Programm whatis wird zusammen mit einem Suchbegriff eingegeben. Es durchsucht jetzt die Kurzbeschreibungen, allerdings nur die linke Spalte dieser Beschreibungen, also die Spalte mit dem Namen. Als Ausgabe werden alle Zeilen dargestellt, die den Suchbegriff in dieser linken Spalte der Kurzbeschreibung haben. Der Programmaufruf

whatis passwd

könnte also (wenn auch die deutschen Handbuchseiten installiert sind) die folgende Ausgabe haben:

passwd (1) – ändert das Paßwort zum System
passwd (5) – Paßwort-Datei
passwd (5) – The password file
passwd (1) – change user password

Wie der Name schon andeutet, zeigt whatis also einfach, was ein Programm oder eine Datei ist. Das hilft uns natürlich nur weiter, wenn wir den Namen des Programms schon kennen. Wenn wir aber nicht mehr wissen, mit welchem Programm ein Passwort geändert wird, dann kann uns das Programm apropos weiterhelfen. Wie bei whatis, so geben wir auch dem Programm apropos einen Suchbegriff mit. Wie whatis durchsucht apropos auch wieder die Indexdatenbank bzw. die whatis-Datenbank. Nur durchsucht apropos nicht nur die linke spalte, sondern die ganze Zeile dieser Kurzbeschreibung. Wir suchen also nach dem Begriff Paßwort und schreiben

apropos paßwort

und bekommen als Ausgabe alle Zeilen der Indexdatenbank, die diesen Suchbegiff enthalten:

getpwuid (3) – arbeite mit Paßworteintrag
passwd (1) – ändert das Paßwort zum System
fgetpwent (3) – arbeite mit Paßworteintrag
endpwent (3) – arbeite mit Paßworteintrag
chsh (1) – ändert den Loginshell Eintrag in der Paßwortdatei
getpwnam (3) – arbeite mit Paßworteintrag
setpwent (3) – arbeite mit Paßworteintrag
passwd (5) – Paßwort-Datei
getpwent (3) – arbeite mit Paßworteintrag
getpw (3) – Re-konstruiere eine Paßwortdateieintrag

Jetzt können wir uns aus dieser Liste das Programm aussuchen, das unseren Ansprüchen gerecht wird…

Die Verwaltungsarbeiten für die Handbuchseiten
Physikalisch liegen die Handbuchseiten in verschiedenen Teilen der Dateisystem-Hierarchie. So kann jede wichtige Unterhierarchie des Dateisystems ein eigenes Handbuchverzeichnis besitzen, das in der Regel dann den Namen man trägt. Typische Orte für Handbuchseiten waren früher also:

/usr/man
/usr/local/man
/usr/X11R6/man
/usr/openwin/man
/usr/share/man

Nach der Version 2 des Linux Dateisystemstandards sollten Handbuchseiten heute grundsätzlich unter /usr/share/man liegen. Auch dort können aber wiederum mehrere Verzeichnisse mit Handbuchseiten abgelegt sein, beispielsweise für unterschiedliche Sprachen. Also etwa

/usr/share/man
/usr/share/man/de

Jedes dieser Verzeichnisse enthält wiederum Unterverzeichnisse für jede Sektion des Handbuchs. Enthalten diese Verzeichnisse GROFF-Quelltext (unformatierte Handbuchseiten), so tragen sie die Namen man1, man2, man3, …, enthalten sie aber bereits vorformatierten ASCII-Text, so werden sie cat1, cat2, cat3, … genannt.

Weil die Handbuchseiten praktisch alle im /usr/share-Dateisystem oder darunter zu finden sind, und dieses Dateisystem ja oftmals ReadOnly gemountet ist, wird meist im /var-Verzeichnis noch eine Handbuchhierarchie gehalten, die für die Speicherung der Index-Datenbank, der whatis-Datenbank und der cat-manpages dient. Diese Hierarchie liegt oft unter /var/cache/man oder /var/catman

Damit die Indexdatenbank aktualisiert werden kann (wenn z.B. neue Programmpakete installiert wurden), existiert das Programm mandb. Dieses Programm aktualisiert oder erstellt die Indexdatenbank für alle Handbuchseiten.

Damit dieses Programm tatsächlich alle Verzeichnisse findet, die Handbuchseiten enthalten, bzw. damit auch das man-Kommando die Reihenfolge der Durchsuchung weiß, werden alle Verzeichnisse, die Handbuchseiten enthalten, in einer Variable mit Namen MANPATH gespeichert. Sie ist aufgabaut wie der Suchpfad, also werden die Namen der Verzeichnisse mit Doppelpunkt voneinander getrennt.

Ein Aufruf von

echo $MANPATH

zeigt also den Suchpfad für die Handbuchseiten und hauptsächlich dadurch auch die Reihenfolge, in der diese Verzeichnisse durchsucht werden. Das ist wichtig, da ja das man-Kommando beispielsweise nur die erste gefundene Handbuchseite zeigt, wenn nicht die Option -a mitgegeben wurde.

Diese Handbuchpfadvariable wird entweder in einer Startdatei wie /etc/profile angelegt, oder – seltener – durch ein Programm namens manpath gesetzt. Dieses Programm wird auch dann automatisch von man aufgerufen, wenn die Variable MANPATH nicht existiert. Das kann in einem System ohne mehrsprachige Handbuchseiten ganz praktisch sein, sobald aber mehrere Sprachen benutzt werden zeigt es Schwächen.

Da das Programm manpath sich den Handbuchpfad einfach dadurch erstellt, daß es alle Verzeichnisse durchscannt und Unterverzeichnisse namens MAN oder man sucht, kann die Reihenfolge der gefundenen Verzeichnisse nicht manipuliert werden. Sind aber z.B. deutsche und englische Handbuchseiten installiert, so wird man es wahrscheinlich vorziehen, dem Pfad der deutschen Seiten vor dem der englischen anzugeben. Das führt dann dazu, daß – wenn eine deutsche Handbuchseite zu einem Programm existiert – die deutsche Seite aufgerufen wird, ansonsten die englische. In diesem Fall bleibt es notwendig, die MANPATH-Variable zu setzen, um diese Reihenfolge festzulegen.

Wenn es gewünscht wird, daß alle (oder bestimmte) Handbuchseiten als ASCII Dateien vorformatiert werden sollen, dann kann diese Aufgabe durch das Programm catman erledigt werden. Dieses Programm legt – meist im /var-Verzeichnis – die entsprechenden cat-Verzeichnisse an und speichert die Handbuchseiten in reinem Textformat lesbar dort hinein. Da heute Festplattenplatz kein großes Kriterium ist, kann man davon durchaus Gebrauch machen, es ersetzt aber nicht die GROFF-Dateien. Denn für alle anderen Handbuchprogramme wie xman, tkman oder rman benötigen wir diese GROFF-Quellen.
Info und seine Seiten
Die Free Software Foundation hat ein weiteres Prinzip ins Leben gerufen, um Informationen über Programmpakete dem User bereitzustellen, das info-System. Dieses System ist gedacht, um größere Informationsmengen als die Handbuchseiten zu transportieren und funktioniert ein bischen ähnlich wie HTML. Es gibt Hypertext-Verweise auf andere Seiten und ein Thema hat oftmals mehrere Dateien, die Informationen darüber bereitstellen. Das Programm, mit dem diese Info-Dokumentationen dargestellt werden können heißt info

Dieses Programm ist etwas spartanisch in der Benutzung, trotzdem kann es in vielen Fällen Informationen vermitteln, die wesentlich weitergehen, als die der Handbuchseiten. Nebenbei kann info heute auch Handbuchseiten darstellen, falls also im Verzeichnis der Info-Dateien (meist /usr/info, /usr/share/info) keine Informationen zu finden sind, durchsucht info auch noch den MANPATH und zeigt Handbuchseiten an.

Wird info ohne Parameter aufgerufen, so startet es in einem globalen Menü, sozusagen dem Hauptmenü, in dem dann alle vorhandenen Nodes angezeigt sind. Eine solche Node wird angewählt, indem der Cursor auf den entsprechenden Text plaziert wird und dann die Enter-Taste gedrückt wird.

Wird info mit einem Parameter aufgerufen, so zeigt es gleich die Informationen über diesen Parameter, sozusagen die Hauptseite zum angegebenen Thema. Ein Aufruf von

info emacs

bringt uns also auf die Hauptseite der Info-Dateien über Emacs. Dort finden wir wiederum Nodes, auf die wir weiterspringen können. Diese Unternodes sind aber auch direkt anwählbar z.B. mit

info emacs buffers

kommen wir sofort auf die Node Buffers der Datei Emacs des Info-Systems.

Um genauere Informationen über info zu erhalten bietet das info-System eine Art Selbsthilfe, die durch den Aufruf

info info

gestartet wird. Dort werden dann Schritt für Schritt der Umgang mit info erklärt.

HOWTOs und FAQs
Neben den bisher geschilderten Informationsquellen gibt es natürlich noch weitere Formen, deren Existenz bekannt sein muß. Im Wesentlichen handelt es sich dabei um die sogenannten HOWTOs und FAQs. Im Gegensatz zu den bisher besprochenen Dokumentationen enthalten diese Quellen nicht Online-Hilfen, die als schnelle Nachschlagmöglichkeiten gedacht sind, sondern die HOWTOs bieten fundierte Anleitungen, wie bestimmte Probleme zu lösen sind, wie bestimmte Dienste zu konfigurieren sind oder ähnliches. Die FAQs (Frequently Asked Questions – Häufig gestellte Fragen) dagegen zeigen häufig gestellte Fragen zu bestimmten Themen und natürlich deren Antworten.

Typischerweise finden sich diese Dokumente im Verzeichnis /usr/doc oder /usr/share/doc. Sie sind aber nicht grundsätzlich installiert, die neuesten Versionen finden sich im Internet. Um zu vermeiden, daß es zu einem unübersichtlichen Chaos bei dieser Form der Dokumentation kommt, werden die HOWTOs und FAQs zentral vom Linux Documentation Project (LDP) verwaltet. Das LDP stellt all seine Dokumentationen unter der Adresse https://www.linuxdoc.org zur Verfügung.

Welche dieser Dokumentationen auf dem System installiert sein sollen, hängt von mehreren Faktoren ab. Neben der Frage des Plattenplatzes stellt sich die der Brauchbarkeit. Wenn ein System keinerlei ISDN-Anbindung hat muß wohl kaum ein ISDN-HOWTO installiert werden. Andererseits schaden diese Dokumente nicht, wenn genug Platz zur Verfügung steht. Die meisten dieser Dokumente stehen inzwischen in einem HTML-Format zur Verfügung, so daß man auch einen zentralen Dokumentationsserver im lokalen Netz aufbauen kann, von dem aus alle Dokumente gelesen werden können.

Andere Dokumentationen
Neben den zentral verwalteten Dokumentationen der HOWTOs und FAQs bringt jedes größere (manchmal auch kleinere) Paket noch Dokumentationen mit. Es hat sich inzwischen durchgesetzt, daß solche Dokumentationen unter /usr/share/doc/packages/Paketname oder /usr/share/doc/Paketname abgelegt werden. Hier sollten sich zumindest eine Datei mit Namen README befinden, die eine erste Beschreibung des Paketes beinhaltet. Oft sind in diesen Verzeichnissen aber ganze Dokumentationen zu finden, die jeden Schritt, von der Installation über die Benutzung bis zur Administration beschreiben.

(165)

1.108 – Dokumentation

zurück zu Linux Zertifizierungen LPIC
Linux ist ein sehr komplexes System, das noch dazu nicht aus einer Hand stammt. Ein Umgang mit den verschiedenen Dokumentationen für System und Anwendungen ist daher eine fundamentale Notwendigkeit. In der Frühzeit von Linux wurde es einmal als größtes Textadventure der Welt bezeichnet, was in mancherlei Hinsicht noch immer den Nagel auf den Kopf trifft. In der Regel sind aber tatsächlich alle notwendigen Dokumentationen entweder lokal oder über das Internet erreichbar. Um den Umgang mit den verschiedenen Dokumentationsarten drehen sich die folgenden drei Kapitel dieses Abschnitts.

1.108.1 Benutzung und Verwaltung lokaler Systemdokumentation
1.108.2 Finden von Linux-Dokumentation im Internet
1.108.3 Benachrichtigen von Benutzern über systemrelevante Ereignisse

(240)

1.107.4 – Lokale und Netzwerkdrucker

zurück zu Linux Zertifizierungen LPIC

1.107.4 – Installation und Konfiguration von lokalen und Netzwerkdruckern
Prüfungskandidaten sollten in der Lage sein, einen Printerdämon zu installieren und einen Druckerfilter (z.B. apsfilter oder magicfilter) zu installieren und zu konfigurieren. Dieses Lernziel beinhaltet das Konfigurieren von lokalen und Netzwerkdruckern für ein Linux-System, inklusive PostScript-, Non-PostScript- und Samba-Druckern.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

* lpd
* /etc/printcap
* /etc/apsfilter/*
* /var/lib/apsfilter/*/
* /etc/magicfilter/*/
* /var/spool/lpd/*/

Die Datei /etc/printcap
Der Standard-Weg zur Installation eines Druckers unter Linux läuft über die Datei /etc/printcap. In dieser Datei hat jeder Drucker, der an das System angeschlossen ist, aber auch alle Drucker, die über das Netz erreichbar sein sollen, einen eigenen Eintrag. Jeder dieser Einträge ist eigentlich nur eine Zeile lang, wird aber (durch Verwendung eines Backslash vor dem Zeilentrenner) zur leichteren Lesbarkeit auf mehrere Zeilen verteilt.

Ein Eintrag für einen Drucker beginnt immer mit dem oder den Namen des Druckers. Danach folgen verschiedene Angaben, die jeweils durch Doppelpunkte voneinander getrennt sind und meist die Form

Einstellung=Wert

besitzen. Typische Beispiele für die möglichen Einstellungen sind:

af=Dateiname
Name der Account-Datei, für diesen Drucker
if=Dateiname
Name des Input-Filters, den dieser Drucker benutzen soll. Input-Filter sind Programme, die die zu druckende Datei in ein dem Drucker verständliches Format bringen, siehe weiter unten.
lf=Dateiname
Name der Logdatei, in die Fehlermeldungen aufgenommen werden sollen.
lp=Dateiname
Name der Gerätedatei des Gerätes, an dem der Drucker angeschlossen ist.
mx#Zahl
Maximale Dateigröße in Blöcken. Die Angabe 0 bedeutet, daß es keine maximale Dateigröße gibt.
rm=Hostname
Name der entfernten Maschine (remote machine), die einen Netzwerkdrucker zur Verfügung stellt.
rp=Druckername
Name des Druckers auf der entfernten Maschine.
sd=Verzeichnis
Das Verzeichnis, in dem die Aufträge abgespeichert werden. (Spool Directory)
sh
Es wird keine Titelseite gedruckt. (suppress header)

Ein sehr einfacher Eintrag für einen Drucker könnte also folgendermaßen aussehen:

lp|hplaser:
:lp=/dev/lp0:
:sd=/var/spool/lp:
:mx#0:
:lf=/var/spool/lp/hp-log:

Der Drucker heißt entweder lp oder hplaser (der zweite Name dient als Beschreibung). Er ist an die Schnittstelle /dev/lp0 angeschlossen und sein Spoolverzeichnis ist /var/spool/lp. Es existiert keine Größenbeschränkung (mx#0) und Fehlermeldungen werden in die Datei /var/spool/lp/hp-log geschrieben.

Die Verwendung von Input-Filtern wird weiter unten beschrieben.

Um auch Netzwerkdrucker an anderen Maschinen ansprechen zu können, benötigen wir entsprechend Einträge wie der folgende:

lp1|remote printer on marvin:
:sd=/var/spool/lp1:
:rm=marvin.mydomain.net:
:rp=lp:
:sh:mx#0:

Dieser Eintrag beschreibt einen Drucker, der auf unserem System mit dem Namen lp1 angesprochen wird. Er benutzt das lokale Spoolverzeichnis /var/spool/lp1. Anstatt einem Eintrag lp= haben wir jetzt den Eintrag rm=, der besagt, daß der Drucker auf einer remote machine also einem entfernten Rechner angeschlossen ist. Dieser Rechner ist in unserem Beispiel der Rechner marvin.mydomain.net. Der Druckername auf dem entfernten Rechner (rp – remote printer) ist lp. Es wird keine Trennseite ausgegeben und es existiert keine Größenbeschränkung.

Es ist problemlos möglich, daß ein physikalischer Drucker mehrere Printcap-Einträge besitzt. So können z.B. verschiedene Inputfilter für den gleichen Drucker verwendet werden, oder ein Drucker kann entweder farbig oder in Graustufen angesprochen werden, je nachdem, unter welchem Namen er angesprochen wurde. Der Name lp ist dabei der voreingestellte Drucker.

Apsfilter
apsfilter erlaubt es, verschiedene Dateitypen direkt zu drucken, ohne daß der User die Datei von Hand in eine dem Drucker verständliche Sprache konvertieren muß.

apsfilter benutzt verschiedene Programme anderer Hersteller um die verschiedenen Dateiformate zunächst in Postscript zu verwandeln. Wenn ein echter Postscript-Drucker vorliegt, so werden diese konvertierten Daten dann einfach an den Drucker weitergereicht, ansonsten werden sie an Ghostscript weitergeleitet, der sie dann in eine für den jeweiligen Drucker verständliche Sprache konvertiert.

Die Frage, ob ein Drucker von apsfilter unterstützt wird, ist also primär die Frage, ob er entweder ein Postscript-Drucker ist, oder von Ghostscript unterstützt wird.

Welche Filter (siehe letzten Abschnitt) apsfilter benutzt, kann über seine Konfigurationsdatei /etc/apsfilter/apsfilterrc eingestellt werden. Hier können auch alle möglichen anderen Einstellungen vorgenommen werden.

apsfilter bietet ein kleines Programm, mit dem die komplette Einrichtung eines Druckers, inklusive der printcap-Einträge, vorgenommen wird. Dieses Programm heißt apsfilterconfig.

In /var/lib/apsfilter werden alle Aktionen von apsfilterconfig zwischengespeichert, so daß sie auch bei erneuter Installation wieder zur Verfügung stehen.

Ein typischer Eintrag in /etc/printcap für einen Drucker, der mit apsfilter angesteuert wird wäre

lp|PS;r=600×600;q=high;c=gray;p=a4;m=auto:
:lp=/dev/lp0:
:if=/etc/apsfilter/basedir/bin/apsfilter:
:sd=/var/spool/lpd/lp:
:lf=/var/spool/lpd/lp/log:
:af=/var/spool/lpd/lp/acct:
:mx#0:
:sh:

Wichtig ist hier die Angabe des Input-Filters (if=/etc/apsfilter/basedir/bin/apsfilter). Jede Datei, die an diesen Drucker geschickt wird, wird zuerst durch das angegebene Programm (hier /etc/apsfilter/basedir/bin/apsfilter) geschickt. Erst dieses Programm schickt den Druckauftrag an den eigentlichen Drucker.
Magicfilter
magicfilter ist ein erweiterbarer und einstellbarer automatischer Druckerfilter. Der Typ einer zu druckenden Datei wird anhand ihrer Magic-Nummern ermittelt und magicfilter wendet dann einen entsprechenden Filter an, der diesen Dateityp in die Ausgabesprache des jeweiligen Druckers konvertiert.

magicfilter ist primär dazu gedacht, als Eingabefilter (if=) für den LPD-Druckspooler zu arbeiten. Die Optionen, die Magicfilter versteht, sind genau die, die lpd an den Inputfilter weiterreicht.

Um magicfilter zusammen mit dem LPD-Spooler zu nutzen, muß im entsprechenden printcap-Eintrag der input-filter (if=) Eintrag auf das Programm magicfilter gesetzt sein. Da aber ein printcap-Eintrag keine Optionen erlaubt, wird hier einfach ein Script als Eingabefilter gewählt, das ausführbar ist und als erste Zeile den Eintrag

#!/usr/sbin/magicfilter

aufweist.

Dieses Script liegt standardmäßig im Verzeichnis /etc/magicfilter und trägt den Namen des zu verwendenden Druckers. Im Lieferumfang von magicfilter sind bereits etwa 80 verschiedene solcher Scripte für die gängigsten Drucker enthalten. Der Inhalt dieser Scripte ist – neben der bereits erwähnten ersten Zeile – immer nach folgendem Schema aufgebaut:

Offset Zeichenkette Art

Wobei Offset die Stelle innerhalb der zu druckenden Datei bezeichnet, an der eine bestimmte Zeichenkette zu finden ist, Zeichenkette ist die Zeichenkette, die an dieser Stelle erwartet wird und Art beschreibt die Aktion, die dann mit der Datei ausgeführt wird, um sie zu drucken.

Ein typischer Eintrag dieser Datei wäre z.B.

# GIF files
0 GIF87a pipe /usr/bin/giftopnm 2>/dev/null
0 GIF89a pipe /usr/bin/giftopnm 2>/dev/null

Wenn also an der Position 0 (Anfang der Datei) entweder die Zeichenkette GIF87a oder GIF89a zu finden ist, dann handelt es sich bei der zu druckenden Datei um ein GIF-Bild. Die Aktion, die durchgeführt werden soll ist pipe /usr/bin/giftopnm 2>/dev/null, der Inhalt der GIF-Datei wird also an das Programm /usr/bin/giftopnm weitergeleitet, das die GIF-Datei in ein PNM-Bild verwandelt. Das kann dann entsprechend von einem Postscript-Drucker gedruckt werden.

Damit auch nicht-Postscript Drucker mit magicfilter benutzt werden können, gibt das Programm die Ausgaben anschließend an Ghostscript weiter, das dann ein für den jeweiligen Drucker verständliches Format erzeugt.

Damit diese Arbeit nicht manuell ausgeführt werden muß, wird magicfilter zusammen mit einem Installationsscript ausgeliefert, das den Namen magicfilterconfig trägt und die notwendigen Einstellungen vornimmt, nachdem der User ein paar Fragen zum angeschlossenen Drucker beantwortet hat.

Ein typischer printcap Eintrag für magicfilter lautet beispielsweise:

lp|hplj4l|HP Laserjet 4L:
:lp=/dev/lp1:sd=/var/spool/lpd/hplj4l:
:sh:pw#80:pl#72:px#1440:mx#0:
:if=/etc/magicfilter/ljet4l-filter:
:af=/var/log/lp-acct:lf=/var/log/lp-errs:

Die Angaben pw, pl und px beziehen sich auf die Seitenbreite in Zeichen, die Seitenlänge in Zeilen und die Seitenbreite in Pixeln. Ansonsten enthält der Eintrag nichts neues, der Inputfilter ist jetzt /etc/magicfilter/ljet4l-filter.
Einbinden eines Windows-Drucker
Über die Technik der Input-Filter ist es auch möglich, einen Drucker anzusteuern, der von einem Windows-Rechner freigegeben wurde (SMB-Drucker). Dazu wird samba benötigt, bzw. die Programme smbclient (Ein Programm zur Nutzung von SMB-Freigaben auch Druckern) und smbprint (ein Shellscript, das smbclient nutzt und als Input-Filter nutzbar ist. Ein Eintrag in /etc/printcap für einen SMB-Drucker wäre beispielsweise

lp2|remote-smbprinter:
:lp=/dev/null:sh:
:sd=/var/spool/lp2:
:if=/usr/local/sbin/smbprint:

Im Script /usr/local/sbin/smbprint müssen jetzt noch entsprechend die Einträge für

* Hostname des Windows-Rechners
* Freigabename des Druckers auf dem Windows-Rechner
* Username auf dem Windows-Rechner
* Passwort für den Windows-Rechner

angegeben werden. Wenn mehrere Windows-Drucker angesprochen werden sollen, so muß für jeden dieser Drucker ein eigenes smbprint Script existieren. Die Scripts sind einfache Shellscripts und können entsprechend kopiert und verändert werden.

Spoolerdaemon starten
Normalerweise wird für jedes System ein Druckerdaemon gestartet. Dieser Daemon trägt den Namen lpd und wird automatisch beim Systemstart durch ein Init-Script aufgerufen. Er ließt die Einträge in /etc/printcap und kennt so die vorhandenen Drucker. Sobald der Spoolerdaemon geladen ist, arbeitet er die Warteschlange ab und kann außerdem Anfragen über das Netz beantworten, und die Druckaufträge von dort entgegennehmen.

Zugriffskontrolle, wer den Drucker verwenden darf, kann über die Datei /etc/hosts.lpd erreicht werden.

(203)

1.107.3 – Druck von Dateien

zurück zu Linux Zertifizierungen LPIC
Prüfungskandidaten sollten in der Lage sein, Druckerwarteschlangen zu verwalten und Druckjobs zu bearbeiten. Dieses Lernziel beinhaltet das Hinzufügen und Entfernen von Jobs an konfigurieren Druckerwarteschlangen und das Konvertieren von Textdateien in PostScript für den Ausdruck.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

* lpr
* lpq
* mpage

Die Verwaltung von Druckerwarteschlangen und das Hinzufügen und Entfernen von Druckjobs wurde bereits im letzten Abschnitt besprochen. Interessant ist also das Konvertieren von Textdateien nach Postscript.

Das Prinzip von Drucken unter Linux ist immer mit Postscript verbunden. Da es keine wirklich eindeutige Definition von Druckertreiber unter Linux gibt, wird immer erstmal davon ausgegangen, daß ein Drucker Postscriptfähig ist. Die Ausgabe einer Postscript-Datei an einen Drucker kann dann über einen Filter laufen, der aus dem Postscript die für den Drucker verständliche Sprache generiert. Nahezu jede Anwendung unter Linux kann ihre Ausgaben in Postscript vornehmen. Dadurch ist also eine Art einheitlicher Druckerschnittstelle geschaffen. Die genaue Implementierung solcher Filter wird Thema des nächsten Abschnitts sein.

Für uns ist hier jetzt interessant, wie Textdateien in Postscript verwandelt werden können. Textdateien sind in diesem Zusammenhang beileibe nicht nur echte Dateien, sondern immer auch Datenströme, die beispielsweise von Linux-Texttools erstellt wurden. Das Programm lpr mit dem Druckaufträge gegeben werden, kann ja auch seine Daten aus der Standardeingabe lesen, es ist also durchaus möglich, das Ergebnis eines Befehls an dieses Programm zu pipen.

Für die Konvertierung von Textdateien nach Postscript existieren verschiedene Programme, die im Prinzip alle in der Lage sind, aus einer Textdatei oder einem Datenstrom Postscript zu erzeugen. Die jeweiligen Fähigkeiten sind in Einzelheiten unterschiedlich, so können manche Programme die Ausgabe in Spalten setzen oder mehrere Seiten auf eine Druckseite zusammenfassen. Andere Möglichkeiten sind die Formatierung von Text nach bestimmten Regeln, das Syntax-Highlighting für bestimmte Programmiersprachen oder die automatische Einrückung zur leichteren Lesbarkeit. Die bekanntesten Programme für diese Aufgabe sind

* a2ps
Verwandelt Textdateien in Postscript. Direkte Weitergabe an den voreingestellten Drucker (oder an jeden beliebigen Drucker mit der Option -PDruckername) ist genauso möglich, wie Ausgabe in eine Postscriptdatei (-o Dateiname) oder Ausgabe auf die Standard-Ausgabe (-o -). Standardmäßig werden zwei Seiten auf ein Blatt gedruckt. Seiten werden gerahmt und mit Dateinamen, Usernamen, Druckdatum versehen. (Beides kann über Optionen auch abgeschaltet werden) Die Option -E ermöglicht Pretty-Printing für verschiedenste Formate wie C, Bash, …

Sehr viele Parameter erlauben die verschiedensten Einstellungen, wie etwa Anzahl der Zeilen pro Blatt, Anzahl der Zeichen pro Zeile, Titeleinstellungen, Zeilennummerierung, …
* enscript
Dieses Programm hat praktisch alle Fähigkeiten von a2ps und noch einiges mehr. Es ermöglicht beispielsweise die Definition eigener Pretty-Printing Stile und den Druck von Textdateien in beliebig vielen Spalten. Außerdem kann als Ausgabeformat nicht nur Postscript, sondern auch HTML, ANSI (Terminalausgabe) und RTF erzeugen. Es sind verschiedene Ausgabeformate möglich, so daß entweder 1,2,4 oder 8 Seiten auf ein Blatt gedruckt werden können.

* mpage
Dieses Programm ließt normale Textdateien oder Postscript-Dateien und druckt sie auf einem Postscript-Drucker mit einer verkleinerten Ausgabe, so daß mehrere Seiten auf ein Blatt Papier passen. Diese Fähigkeit haben zwar auch die letzten beiden genannten Programme a2ps und enscript, mpage ist aber im Gegensatz zu diesen Programmen auch in der Lage, schon existierende Postscript-Dateien inklusive aller Bilder, Graphiken und sonstiger Features zu verkleinern. Das kann sehr praktisch sein, um einen großen Ausdruck auf wenige Blätter auszudrucken um das Erscheinungsbild zu überprüfen.

(189)

Notizen zu Open Source, Linux, Informatik, Physiologie, Dadaichmuss, Umfragen, Satire, außergewöhnlichen Begebenheiten, Weltgeschehen, Lifestyle, Tai Chi …