Aus Linux-Magazin 05/2008

LPIC-1-Vorbereitung - Teil 22: Drucksysteme

© antoine stevens(zoedeluxe), fotolia.com

Bis das papierlose Büro Wirklichkeit wird, obliegt es dem Administrator, das Linux-Drucksystem einzurichten. Zwei Systeme aus zwei Generationen treten das Erbe Gutenbergs an.

Als Laserdrucker eine Seltenheit und der PC eben erfunden waren, teilten sich Multitasking-fähige Computer einen Zeilen- oder Matrixdrucker. Peripheriegeräte waren nicht besonders schnell. Daher wollten die sie steuernden Rechner und Betriebssysteme nicht untätig warten, bis ein Druckjob beendet war. So stellten sie das Drucken unter die Aufsicht eines eigenen Daemon, der Aufträge für die angeschlossenen Geräte in einem Verzeichnis sammelte.

Admins benutzen den Begriff Spool für “Simultaneous peripheral output on line” heute noch und nennen den Daemon »lpd« (Line Printer Daemon), selbst wenn es sich um einen Tintenstrahl- oder Laserdrucker handelt. Über die Kommandozeile schickt ein Client »lpr« einen Druckauftrag zu seinem Server »lpd«. Der reicht ihn zum eigentlichen Drucker weiter (Abbildung 1).

Abbildung 1: Das Unix-Drucksystem folgt dem Client-Server-Modell. Ein Client sendet von der Kommandozeile das Dokument an einen zentralen Daemon, der sich um das Ansteuern der einzelnen Geräte kümmert.

Abbildung 1: Das Unix-Drucksystem folgt dem Client-Server-Modell. Ein Client sendet von der Kommandozeile das Dokument an einen zentralen Daemon, der sich um das Ansteuern der einzelnen Geräte kümmert.

So findet sich auf älteren Linux-Systemen standardmäßig das Druck-Subsystem LPD der Berkeley Software Distribution, das konzeptionell von Zeilendruckern ausgeht. Mit fortschreitender Technik stiegen aber die Ansprüche an die auszudruckenden Dokumente.

Heute beherrschen handelsübliche Drucker mehrere Zeichensätze, mischen sie mit Bildern, kennen Ligaturen, Unterschneidungen und mehr. Das macht es nötig, das Drucksystem anzupassen und zu erweitern. So hieß die Weiterentwicklung auch LPRng (LPR Next Generation). Oft bedeutet dies, dass Programme Dokumente in Postscript oder einer anderen Steuersprache an den Drucker senden.

Cups als Alternative

Ein weiteres Drucksystem ist das Common Unix Printing System (Cups). Es zeichnet sich durch seine Standardisierung, Modularität und das plattformübergreifende Drucken aus. Es regelt, wer auf welche Geräte zugreifen darf (Zugriffssteuerung), überprüft die Identität des Anwenders (Authentifizierung) und sorgt für Verschlüsselung bei der Übertragung. Anwender sehen zumeist nur einen grafischen Druckdialog, der Admin darf Cups über Kommandozeilen-Werkzeuge, aber auch über einen integrierten Webserver steuern – praktisch. Clients nutzen meist das auf HTTP aufbauende Internet Printing Protocol (IPP) auf TCP-Port 631 [1], das wesentlich mehr bietet als das klassische LPD-Protokoll auf TCP-Port 515 [2].

Auf der Kommandozeile ähneln sich die beiden Systeme LPRng und Cups. Die wichtigen Programme tragen denselben Namen und besitzen meist gleiche Aufrufparameter. Gute Kenntnisse über LPRng zahlen sich nach wie vor aus, da Cups auf den gleichen Abläufen basiert und Konfigurationsoptionen übernommen hat. Cups implementiert jedoch nicht alle Optionen des LPRng-Systems. Bei einigen Befehlen lohnt es sich, genauer hinzusehen.

LPI-Aufgabengruppen

Das Linux Professional Institute gliedert die Prüfungsfragen in Aufgabengruppen. Dieser Artikel erklärt die Drucksysteme LPRng und Cups (ein Objective 1.107.1 gibt es nicht):

  • 1.107.2: Verwalten von Druckern und Druckerwarteschlangen
  • 1.107.3: Drucken von Dateien
  • 1.107.4: Installation und Konfiguration von lokalen und
    Netzwerkdruckern

Aufträge und Ausdrucke

Ein Dokument ausdrucken erfordert verschlungenere Wege als die des Papiers im Drucker: An einem Ausdruck sind mehrere Instanzen von Programmen beteiligt. Sie bringen letztlich die zu druckenden Daten in ein Format, das der Drucker versteht. Postscript spielt dabei als Zwischenformat eine herausragende Rolle. Ist der Zieldrucker Postscript-fähig, reicht es, die Eingabedatei in dieses Format umzuwandeln. Für andere Drucker wandeln die Drucksysteme die Lingua franca wieder in ein für den Drucker verständliches Format. Sie setzen dazu Filter ein, die weitere Aufgaben erledigen, etwa Quelltexte einrücken (Pretty Printing), Kopf- und Fußzeilen einfügen oder mehrere Seiten auf einen Bogen Papier verkleinern.

Aus Benutzersicht gibt es zwei Möglichkeiten, einen Druckauftrag zu erteilen: von der Kommandozeile aus oder innerhalb einer grafischen Applikation. Eine Datei lässt sich am einfachsten mit dem Befehl »lpr« ausdrucken, besonders wenn sie als Postscript vorliegt. Dabei stellt das System den Druckjob ins Spool-Verzeichnis des Standarddruckers. Einen anderen Drucker wählt der Anwender mit der Option »-P«. Weitere Optionen listet Tabelle 1. Der Befehl »lpr« verarbeitet auch die Standardeingabe: »grep demo bsp.txt | lpr -Phplj5d«.

Tabelle 1: Optionen
von »lpr«

 

Option

Bedeutung

-P Drucker

Name des Ausgabedruckers

-# Anzahl

Anzahl der Ausdrucke

-m

Mail an den Benutzer

-h

Bannerseite nicht drucken

LPRng gewinnt den Namen des Standarddruckers aus der Shell-Umgebungsvariablen »PRINTER«, wenn niemand ein Gerät angegeben hat. Cups teilt der Admin durch »lpoptions -d Drucker« den Standarddrucker mit und fragt ihn mit »lpstat -d« ab.

Simpel Drucken

Neben »lpr« kennt Cups noch das Kommando »lp« (ein aus dem Drucksystem von System V übernommener Befehl). Zwar erfüllen beide Befehle denselben Zweck, verfügen aber über unterschiedliche Optionen. Mit »lp« und seiner Option »-o special« lassen sich zum Beispiel Seiten passend skaliert ausgeben (»-o fitplot«) oder Papiergrößen bestimmen (»-o media= Papierformat«).

Wer herausfinden will, wie es um seine Aufträge bestellt ist, etwa ob umfangreiche Jobs weiter vorne in der Warteschlange stehen, fragt mit »lpq« den Status der Druckerqueue ab.

Statt aktiv den Status abzufragen, versendet das Drucksystem mit der Option »-m« auch eine Mail bei Beendigung des Druckvorgangs. Zu beachten ist jedoch, dass ein Job für das Drucksystem als fertig gilt, sobald ihn der Drucker übernommen hat. Weil diese auch intern oft Zwischenspeicher besitzen, muss der Empfang einer solchen Mail also nicht zwangsläufig bedeuten, dass der langsame Drucker am Ende des Korridors auch tatsächlich den Ausdruck komplett fertiggestellt hat.

In der Warteschlange

Befindet sich ein Druckauftrag noch in der Warteschlange des Druckers, können Nutzer ihn mit »lprm« wieder entfernen. Ohne Druckerangabe und Nummer aufgerufen löscht das Kommando den an vorderster Stelle stehenden Druckauftrag aus der Standard-Druckschlange. Wer einen bestimmter Job löschen will, informiert sich erst mit »lpq« über dessen Nummer und entfernt ihn mit »lprm Job-ID«. Cups bietet neben »lprm« auch das analoge Kommando »cancel«.

Zeigt ein »lpq« nach dem Absetzen eines Druckauftrags, dass auf dem Standarddrucker schon zu viele Aufträge anstehen, während ein anderer Drucker untätig scheint, löscht der Anwender den erteilte Druckjob nicht, sondern verschiebt ihn bei Cups mit »lpmove« in die andere Wartschlange.

Wenn Anwender aus Applikationen heraus drucken, sind sie weitgehend von diesen abhängig. Viele bieten eigene Druckdialoge an und leiten die Ausgaben an »lpr« weiter. Dies lösen die Anwendungen unterschiedlich komfortabel, sodass mittelfristig der Trend dahin geht, Druckdialoge zu nutzen, die der Desktop bereitstellt. Gnome und KDE haben dazu Lösungen im Angebot und viele Anwendungen, darunter Open Office, nutzen sie schon. Wenn sie beispielsweise auf Cups basieren, dürfen die Anwender ihren Drucker aus einem Menü auswählen und sich die Papiersorte, ein- oder doppelseitiges Drucken oder die Anzahl der Kopien aussuchen.

Kaum noch ein aktueller Drucker ist in der Lage, reinen Text direkt zu drucken. Daher konvertieren Tools wie »mpage« solche Dateien und machen daraus gleich einen Druckauftrag. Als Nebeneffekt fassen sie mehrere Textseiten auf einem Blatt Papier zusammen. Das neuere »enscript« geht noch einen Schritt weiter. Es beherrscht auch das sprachsensitive Hervorheben und Auszeichnen der übergebenen Dateien. So druckt es Schlüsselwörter beispielsweise fett oder kursiv. Einige solcher Filter genannten Programme listet Tabelle 2 auf.

Tabelle 2:
Dateifilter

 

Dateifilter

Paket

Bedeutung

mpage

mpage

Druckt mehrere Seiten pro Blatt auf einem
Postscript-Drucker

enscript

enscript

Konvertiert Textdateien nach Postscript, HTML usw.

diffpp

enscript

Pretty-Printing von »diff«-Ausgaben mit
»enscript«

a2ps

a2ps

Formatiert Dateien für einen Postscript-Drucker

card

a2ps

Druckt Referenzkarte von Programm-Optionen

pdiff

a2ps

Erzeugt einen Dateivergleich

psnup

PSUtils

Mehrere Seiten pro Blatt

psselect

PSUtils

Seitenauswahl aus einer Postscript-Datei

psbook

PSUtils

Verändert die Reihenfolge von Seiten einer
Postscript-Datei

Schöner Drucken

Fürs schöne Drucken bieten Cups\’ »lpr« oder »lp« mit der Option »-o« eingeschränkte Möglichkeiten – sofern der Drucker sie beherrscht. Welche das sind, zeigt »lpoptions -l« an. Von der Kommandozeile aus lässt sich »a2ps« bedienen (Tabelle 3). Das mächtige Werkzeug bietet viele Hilfen, die dem Benutzer im Alltag das Drucken erleichtern. Das LPI geht in seinen Prüfungen besonders auf dieses Tool ein. Dokumentation zum Tool liefert »info a2ps«. Insgesamt bieten jedoch alle Werkzeuge, also »mpage«, »enscript« und »a2ps«, vergleichbare Grundfunktionen wie das Drucken von aussagekräftigen Kopf- und Fußzeilen zu einem Druckauftrag oder des Namens und Ausdruckdatums.

Tabelle 3:
Aufrufparameter von »a2ps«

 

Option

Bedeutung

-P Drucker

Name des Ausgabedruckers

-o Datei

Statt auf den Drucker eine Postscript-Datei schreiben

-M Papierformat

Wahl des Papierformats

-P Display

Kein Ausdruck, sondern Vorschau mit »gv«

-C

Äquivalent zu »–line-numbers=5«

–line-numbers=Ganzzahl

Zeilennummer aller angegebenen Zeilen einfügen

-u Wasserzeichen

Hinterlegt einen Text als Wasserzeichen, per Default
»Draft«

-B

Kein Seitenkopf

–{center,left,right}-title=Text

Seitentitel; ist kein Text angegeben, erscheinen
Default-Texte

–footer=Text

Mittelteil der Fußzeile

–{left,right}-footer=Text

Linker oder rechter Teil der Fußzeile

-E Sprache

Sprachsensitive Hervorhebung

-1 oder -2

Ein oder zwei Seiten pro Blatt

Eine etwas andere Ausrichtung haben die Programme aus dem Werkzeugkasten des Pakets »PSUtils«. Zu den praktischen Helfern gehören »psselect«, es extrahiert eine Seitenauswahl aus einem PS-Dokument und erzeugt aus ihnen eine neue Postscript-Datei, »psnup«, das wie »mpage« mehrere Seiten auf einem Blatt zusammenfasst, und »psbook«, das Seiten zum Drucken von Booklets oder Büchern neu anordnet.

Mit »lpc« von LPRng lässt sich durch Optionen oder interaktive Befehle der Daemon »lpd« steuern. Seine Cups-Implementation ist eine verkleinerte Version. Mit »lpc status« erlaubt sie es nur, den Zustand einer Druckerwarteschlange abzufragen. Ohne Option startet »lpc« interaktiv, steuerbar sind die Warteschlangen, die das Drucksystem lokalen oder entfernten Druckern zuordnet.

Mit »start« und »stop« aktiviert der Admin einen Drucker oder schaltet ihn aus. Die Warteschlangen bleiben weiter in Betrieb. Neue Aufträge nimmt der Daemon weiterhin entgegen, aktive führt er zu Ende. Diese Befehle eignen sich für kurze Wartungsarbeiten am Drucker.

Will der Administrator eine Warteschlange dauerhaft hoch- oder runterfahren, nutzt er »enable« und »disable«. In eine deaktivierte Queue kann zwar niemand neue Aufträge einstellen, aber Drucker führen alte noch aus.

Daemons beschwören

Der Befehl »up« ist eine Abkürzung für »enable« und »start«, entsprechend wirkt »down« wie »disable« und »stop«. Das ist der benutzerfreundliche Weg, einen Drucker aus dem System zu nehmen, nachdem die Warteschlange geleert ist. Das Leeren gelingt mit »clean«, aktive Aufträge führt der Daemon noch zu Ende. Das Kommando »topq« erlaubt es Root, die Reihenfolge von Druckaufträgen innerhalb einer Schlange zu verändern. Die hinter dem Befehl angegebene Jobnummer stellt der Daemon an den Kopf der Warteschlange.

Während LPRng Drucker und die ihnen zugeordneten Warteschlangen zentral mit »lpc« verwaltet, sind diese Aufgaben unter Cups auf die Kommando-Zwillinge »cupsenable« und »cupsdisable« sowie auf »accept« und »reject« verteilt.

Drucker einrichten

Wer einen Drucker in Betrieb nehmen will, hat zwei Dinge zu tun: Erst installiert und startet der Admin den Daemon, anschließend kümmert er sich darum, die spezifischen Eigenschaften des Druckers einzurichten. Für den ersten Schritt reichen die meisten Linux-Distributionen eine helfende Hand durch vorkonfigurierte Pakete. Bei einer Installation aus den Quellen (Cups [3], LPRng [4]) sind die beiliegenden Anleitungen genau zu beachten, denn sie dulden meist kein anderes System neben sich. Beide Systeme startet und stoppt der Systembetreiber typischerweise über Init-Skripte (Abbildung 2). Durch »lpstat -d« prüft er den Erfolg seiner Tätigkeiten.

Abbildung 2: Drucksysteme – hier ist Cups im Bild – lassen sich durch Init-Skripte starten und stoppen. Ein Symlink in »/etc/init.d« fixiert die Einstellung.

Abbildung 2: Drucksysteme – hier ist Cups im Bild – lassen sich durch Init-Skripte starten und stoppen. Ein Symlink in »/etc/init.d« fixiert die Einstellung.

Um Cups zu konfigurieren und als zweiten Schritt einen Drucker einzurichten, bedient sich der Admin der Hilfe von »lpadmin«. Das ist sogar per Browser möglich, ein Frontend bietet Cups unter http://localhost:631/admin/ an.

Treiberdateien

Für die Zusammenarbeit mit einem Drucker benötigt Cups als Treiber eine PPD-Datei (Postscript Printer Description). Sie beschreibt alle Fähigkeiten des Geräts in Textform. Je nach Gerätetyp ist etwas Recherche nötig, um die PPD-Datei zu finden. Cups selbst listet durch »lpinfo -m« alle installierten PPD-Dateien auf. Da dies ziemlich viele sind, grenzt »grep« die Suche nach einem Gerätemodell ein. Wer so nicht fündig wird, dem hilft die Foomatik-Datenbank weiter: Sie erlaubt eine Suche nach Hersteller oder Druckermodell [5]. Einige Hersteller bieten selbst PPD-Dateien an.

Hat der Admin einen passenden Treiber gefunden, richtet er ihn mit »lpadmin« ein (Listing 1). Das Argument »-p« bezeichnet den Namen (also die Warteschlange) des Druckers, »-L« seinen Standort und »-D« eine Textbeschreibung. Die Option »-v« legt das Kommunikationsprotokoll und die Adresse des Geräts in Form eines URI (Uniform Resource Identifier) fest. »lpinfo -v« zeigt alle Möglichkeiten an. Mit Hilfe eines Browsers auf [http://localhost:631/printers/asok?op=print-test-page] testet der Admin zum Beispiel den Drucker »asok«. Weil »lpadmin -x Drucker« das angelegte Gerät wieder löscht, sind solche Experimente mit Optionen und PPD-Dateien problemlos möglich.

Listing 1: Drucker mit
»lpadmin« und einer PPD einrichten

01 # lpinfo -m | grep HP | grep 2605
02 HP/Color_LaserJet_2605-Postscript.ppd.gz HP Color LaserJet 2605 Foomatic/Postscript
03 manufacturer-PPDs/hp/HP_Color_LaserJet_2605.ppd.gz HP Color LaserJet 2605 Postscript
04 manufacturer-PPDs/hplip/HP_Color_LaserJet_2605.ppd.gz HP Color LaserJet 2605 Postscript
05 # zcat `locate HP/Color_LaserJet_2605-Postscript.ppd.gz` | head -n 40
06 # lpadmin -p asok -m "HP/Color_LaserJet_2605-Postscript.ppd.gz" -v "socket://192.168.2.157"   -D "HP Color LaserJet 2605" -L "Am Schreibtisch"
07 # lpstat -a
08 asok akzeptiert Anfragen seit Mi 06 Feb 2008 18:55:47 CET

Die Printcap

Was für Cups die PPD-Dateien und »lpadmin«, das ist für LPRng die Datei »/etc/printcap«. Sie enthält alle Informationen über die Eigenschaften der Drucker, die »lpd« kennt, spezifiziert, ob sie lokal oder übers Netz angeschlossen sind, und legt Name und Pfad zu jeder Warteschlange fest. Sie dürfen zusätzlich auf einen Filter für die Vorverarbeitung von Aufträgen verweisen.

Für jede neue Zeile legt die Datei eine Warteschlange als Synonym für einen Drucker an. Sie beginnt mit dem Namen der Queue, es folgen Kommentare, dann eine Liste von Direktiven, die jeweils durch Doppelpunkte getrennt sind. Backslashes brechen den Eintrag bei Bedarf um – wichtig ist dann der Tabulator am Anfang der Folgezeile – und machen ihn lesbarer. Da es eine Vielzahl möglicher Direktiven gibt – »man 5 printcap« kennt über drei Dutzend -, können Konfigurationen recht komplex werden. Eine Auswahl an Direktiven und ihre sinnvolle Belegung listet der Kasten “Beispiel eines Printcap-Eintrags”.

Cups legt je nach Wert der »printcap«-Direktive in »cupsd.conf« ebenfalls eine Version von »/etc/printcap« an, aktualisiert diese bei jedem Aufruf von »lpadmin« und schreibt in sie hinein:

asok|HP Color LaserJet 2605:rm=ratbert.local:rp=asok:

Je nach den Einstellungen in »/etc/cups/printers.conf« bedient es sich der Hilfe von »/etc/cups/cupsd.conf«.

Beispiel eines
Printcap-Eintrags

Die Datei »/etc/printcap« legt die Eigenschaften eines Druckers und der ihm zugeordneten Warteschlange fest:

# Bürodrucker HP ColorLaserJet 2605:
hpclj|hpclj2605|Bürodrucker:
   :lp=/dev/lp0:
   :sd=/var/spool/lpd/hpclj2605:
   :lf=/var/spool/lpd/hpclj2605/log:
   :if=/var/lib/apsfilter/bin/hpclj2605:
   :mx#0:sh:

Es ist Usus, jeden Eintrag mit einem Kommentar einzuleiten. Der eigentliche Eintrag beginnt mit dem Drucker- und Warteschlangennamen, dem weitere durch »|« getrennte Druckerbeschreibungen folgen können. Mehrere Felder dürfen in einer Zeile stehen. Neben Feldern mit String-Werten gibt es auch Direktiven, die Ganzzahlen verlangen. »mx« etwa legt die maximale Größe (Maximum Filesize) eines Druckauftrags in Blöcken fest, 0 bedeutet keine Einschränkungen. Die Direktive »sh« schaltet die Bannerseite ab (Suppress Header). Tabelle 4 nennt die wichtigsten Direktiven. Ein minimaler lokaler Eintrag für einen Netzwerkdrucker sieht wie folgt aus:

# Laser Printer HPLJ5d:
lj5d|hplj5d|HP-Drucker in Raum 1.123:
   :lp=:rm=labserv:rp=hplj5d:

Wesentlich sind hier die Angabe des Rechners, an dem der ferne Drucker angeschlossen ist (»rm« steht für Remote Machine), sowie der Name der dortigen Warteschlange (»rp« für Remote Printer). Das Feld des lokalen Geräts darf leer bleiben.

Schlangennester

Bei LPRng liegen die Verzeichnisse für Warteschlangen unter »/var/spool/lpd«. Entsprechend den Printcap-Einträgen verwaltet »lpd« dort wartende Druckaufträge, Protokolldateien oder Accounting-Einträge für jeden Drucker in einem eigenen Verzeichnis. »lpd« erwartet dieses Verzeichnis und dazu passende Besitzverhältnisse. LPRng sieht den Standard »daemon« für Besitzer und Gruppe vor, manche Distributionen stellen für beide abweichend »lp« oder ähnliche Benutzer ein. Ein Blick auf den aktuellen Besitzer (Abbildung 3) schafft Klarheit. So vorbereitet kann der Test mit »lpc up PSneu« und »lpr -PPSneu« beginnen.

Abbildung 3: Eine neue Warteschlange benötigt den passenden Besitzer und gültige Berechtigungen.

Abbildung 3: Eine neue Warteschlange benötigt den passenden Besitzer und gültige Berechtigungen.

Bei Cups befinden sich die Warteschlangen unter »/var/spool/cups«. Das System legt dort jede Auftragsbeschreibung in der Datei »cAuftragsnummer« und den eigentlichen Druckauftrag in »dAuftragsnummer-Dateinummer« ab.

Gefiltert

Filter bringen einen Auftrag in ein dem Drucker verständliches Format. Unter LPRng – es bringt seinen eigenen Filter »ifhp« mit – sind die Klassiker Magicfilter [6] und Apsfilter [7] beliebt. Als Input-Filter mit der »if«-Direktive innerhalb der Printcap eingetragen bestimmen sie ähnlich dem Befehl »file« den Content-Typ der Eingabedatei, um die passende Konvertierungsroutine aufzurufen.

Cups dagegen ermittelt in zwei Schritten, wie Daten zu verwandeln sind: Es bestimmt den Mime-Typ anhand von Erkennungsregeln aus »mime.types« (Listing 2). Den Typ erkennt es durch die rechts stehenden Tests. Dann ruft Cups einen Konverter aus »mime.convs« (Listing 3) auf.

Jede Zeile der Datei besteht aus vier Feldern: Mime-Typ des Quell- und des Zieldokuments, Aufwandsmaß für die Umwandlung sowie der Name des Filters. Lässt sich eine Datei auf mehrere Weisen konvertieren, entscheidet das geringere Maß. Wer eine Datei drucken will, zu der Cups keinen passenden Filter findet, wird gewarnt und trägt eine Regel nach.

Listing 2: Ausschnitt aus
»/etc/cups/mime.types«

01 application/pdf           pdf       string(0,%PDF)
02 application/postscript    ai eps ps string(0,%!) string(0,<04>%!) contains(0,128,<1B>%-12345X) + 
04                                     (contains(0,4096,"LANGUAGE=POSTSCRIPT") 
05                                     contains(0,4096,"LANGUAGE = Postscript") 
06                                     contains(0,4096,"LANGUAGE = PostScript") 
07                                     contains(0,4096,"LANGUAGE = POSTSCRIPT") 
08                                     (contains(0,4096,<0a>%!) + !contains(0,4096,"ENTER LANGUAGE")))
10 application/x-dvi          dvi      string(0,<F702>)
11 application/mozilla-ps     ps       (string(0,%!) + contains(30,200,"Creator: Mozilla PostScript"))
13 application/netscape-ps    ps       (string(0,%!) + contains(30,200,"Creator: Mozilla (NetScape)"))

Listing 3: Ausschnitt aus
»/etc/cups/mime.convs«

01 application/pdf                     application/postscript                33       pdftops
02 application/postscript              application/vnd.cups-postscript       66       pstops
03 application/netscape-ps             application/postscript                33       ogonki
04 application/mozilla-ps              application/postscript                33       pswrite
05 application/mozilla-ps              application/vnd.cups-postscript       66       pstops

Es druckt nicht

Troubleshooting tut not: Wer etwa die Konfiguration via Befehlszeile geändert hat, teilt dies dem Drucksystem durch »/etc/init.d/cups restart« mit. Ob der Daemon überhaupt aktiv ist, zeigt die Suche in der Ausgabe von »lpstat« oder »ps -ef« nach »cupsd« oder »lpd«.

Während LPRng für jeden Drucker eine eigene Fehlerdatei führt, schreibt Cups Protokoll über gedruckte Seiten, Zugriffe und Fehler. Wo das System sie ablegt und wie detailliert es protokolliert, legt »/etc/cups/cupsd.conf« fest. Angaben über das Starten und Stoppen finden sich im Protokoll des Syslog-Dienstes, etwa in »/var/log/messages«.

Der Daemon »cupsd« ist auch als Vordergrundprozess von der Befehlszeile aufrufbar, »cupsd -h« oder ein Blick in die Manpage helfen. Detaillierte Möglichkeiten zum Debugging bieten auch die LPRng-Programme, die auf der Kommandozeile mit »-D Option« wählbar sind. Außerdem verfügt »lpc« über ein eigenes Debug-Subkommando. Unter LPRng ist die korrekte Angabe der Besitzer und der Zugriffsrechte der Spool-Dateien beliebte Stolpersteine. Die im LPRng-Paket enthaltene Routine »checkpc« hilft Fehler aufspüren.

Bei Problemen mit dem Drucken übers Netz sollten Anwender das Drucksystem zuerst an dem Rechner testen, an dem der Drucker tatsächlich angeschlossen ist. Zudem könnten Firewalls so restriktiv eingestellt sein, dass sie die Druckprotokolle nicht zulassen.

Erster Anlaufpunkt für die Unterstützung von Druckern und Treibern ist das Projekt Linuxprinting [8]. Als Referenz zu LPRng gilt [9]. Aktuelle Informationen zu Cups finden sich auf der Homepage des Projekts [10]. Nicht zuletzt hält [11] alle nötigen Informationen über die eigene Cups-Installation bereit. Damit ist jeder Admin gerüstet, um nicht unter Druck zu geraten. (mg)

Infos

[1] RFC 2568, Internet Printing Protocol: [http://tools.ietf.org/html/rfc2568]

[2] RFC 1179, Line Printer Daemon Protocol: [http://tools.ietf.org/html/rfc1179]

[3] Cups-Sourcen:[http://www.cups.org/software.php]

[4] LPRng-Sourcen:[http://www.lprng.org/downloads.html]

[5] Openprinting-Datenbank: [http://www.openprinting.org/printer_list.cgi]

[6] Magicfilter: [http://www.pell.portland.or.us/~orc/Code/magicfilter/]

[7] Apsfilter: [http://www.apsfilter.org]

[8] Linuxprinting.org:[http://www.linuxprinting.org]

[9] LPRng: [http://www.lprng.org/LPRng-Reference/LPRng-Reference.html]

[10] Cups: [http://www.cups.org]

[11] Lokale Cups-Hilfe:[http://localhost:631/help/]

Der Autor

Wolfgang Drotschmann hat in Bonn Informatik studiert. Wenn er sich nicht mit freier Software oder dem Linuxtag e. V. beschäftigt, trainiert er für seine Zeiten im Langstreckenlauf.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
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