Login
Newsletter
Werbung

Do, 23. März 2017, 15:01

mn - Simple Anzeige von Manpages

Ein Programm zur Anzeige von Manpages muss nicht unbedingt eine Datenbank und umfangreiche Infrastruktur mitbringen. Ein Formatierer und ein paar Zeilen Shell-Skript reichen für eine minimalistische Version aus.

Unter Linux hat sich eine besorgniserregende Monokultur ausgebreitet. Nicht bei den Init-Systemen und auch nicht bei den Desktops. Nein, beim Betrachten von Manpages. Effektiv gibt es nur ein einziges Programm, das universell eingesetzt wird, und das ist man-db. Alternative Implementationen existieren in den BSDs oder kommen von historischen Unix-Versionen. Sie sind aber schwer einzurichten, lassen teilweise Funktionen vermissen, und machen Extra-Arbeit. Zudem benötigen sie in aller Regel die GNU-Variante des troff-Programms, groff. Auch andere Möglichkeiten wie das Ansehen in Emacs oder Vim existieren, können aber auch nicht von jedem genutzt werden.

Die erste Frage, die zu klären ist, ist natürlich: Was könnte einen an man-db so stören, dass man eine Alternative sucht? Das erste wird einem zumindest unter Debian auffallen, wenn man neue Pakete installiert oder ein Update einspielt: Es wird jedesmal man-db aufgerufen (sofern es installiert ist), um die Datenbank der Manpages zu aktualisieren. Das ist in keinster Weise optimiert und kann die Arbeit merklich verzögern, ohne unmittelbare Vorteile zu bringen. Abstellbar ist das ohne Tricks nicht.

Man-db macht zwei Dinge, um den Zugriff auf Manpages zu beschleunigen: Es legt eine Datenbank an und es speichert die formatierten Dokumente in einem Cache. Bei beidem kann man sich fragen, ob es den Aufwand und die Komplexität wert ist und heute noch zeitgemäß ist. Denn die Suche im Dateisystem geht auf modernen Rechnern so schnell, dass es nicht nötig ist, eine separate Datenbank zu verwalten. Während man den Cache abschalten kann, und das bei den Linux-Distributionen wohl meist schon der Fall ist, wird die Datenbank aber immer genutzt.

Ein zweites Problem mit man-db ist die Abhängigkeit von groff. groff ist eine freie Implementierung des traditionellen Textsatzprogramms troff und an sich schon genial, wenn auch sehr alt. Meist wird es auf einem System nur noch benötigt, um die Manpages, die in der troff-Syntax geschrieben sind, zu formatieren. Mit mandoc entstand im BSD-Umfeld ein wesentlich kompakteres Programm zum Formatieren der Manpages, das auch unter Linux verfügbar ist. Jedoch kann es mit man-db nicht genutzt werden.

Was würde eine alternative Implementation benötigen? Nicht viel: Sie sollte mandoc nutzen, eine Liste von Manpage-Verzeichnissen haben, mit komprimierten und übersetzten Manpages umgehen können und eine zu apropos äquivalente Funktionalität bereitstellen.

Der grundlegende Algorithmus für das Programm ist denkbar simpel:

Verarbeite Optionen
Für jeden Pfad in der Liste
  Falls Manpage existiert
    Rufe "mandoc | pager" auf
    Ende, außer Option -a ist angegeben

Es mag erstaunlich sein, aber ich konnte bei meiner Recherche kein Programm finden, das ein solches vereinfachtes Programm implementiert. Nicht nachgesehen habe ich, ob es bei den BSD-Systemen eines gibt, denn das hätte ich dann portieren müssen. Meiner Einschätzung nach müsste sich das Programm mit wenig Shell- oder Perl-Code implementieren lassen, und ich hätte erwartet, dass das bereits jemand gemacht hat, doch auch dahingehend fand ich nichts.

Eines schönen Nachmittags begann ich daher einfach damit, das Programm zu implementieren. Ich wählte die Bash als Implementierungssprache, die Alternative wäre Perl gewesen, da ich mit beiden gut vertraut bin. Als Name wählte ich mn. Da mn eine minimalistische Version von man ist, wollte ich einen Namen, der kurz ist. mn ist wie man ohne a und es gibt außerdem meines Wissens kein anderes Programm dieses Namens.

Kommentare (Insgesamt: 16 || Alle anzeigen )
Darum liebe ich Slackware: (Anonymous, Mi, 29. März 2017)
Re: mann ph mann (Kalle Schmidt, Mo, 27. März 2017)
Immer wieder erstaunlich (Potz Blitz, Mo, 27. März 2017)
mann ph mann (jjsa, Sa, 25. März 2017)
nice (Kaligule, Fr, 24. März 2017)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung