Table of Contents

CUPS - Common Unix Printing System

CUPS ist das zur Zeit aktuelle von Apple weiterentwickelte Printing System für Linux. Es unterstützt lokale (usb, lpt usw) sowie Netzwerkdrucker (lpr, ipp, socket/raw). Drucker bzw Queues können per Webinterface (https://printserver:631/ ) oder per Kommandozeile (lpadmin) eingerichtet werden.

ACHTUNG: Es wurde festgestellt dass per CLI eingerichtete Drucker anschließend im Webinterface zwar angezeigt werden, sich jedoch die angezeigten Drucker-Einstellungen von den Einstellungen auf der Consolen-Ebene unterschieden! So wurde in einem Fall per lpadmin ein zusätzliches Papierfach angegeben welches über die Weboberfläche nicht angezeigt wurde. Ursache bislang unbekannt.

Allgemeine Empfehlung bei Einrichtung neuer Drucker:

Wichtige Begriffe im Umgang mit CUPS

Begriff Beschreibung
Spooler Ein Spooler ist eigentlich ein Druckdienst auf einem Server welcher Druckaufträge von Clients entgegen nimmt und selbsttätig weiterverarbeitet oder weiterleitet. CUPS und LPD sind sog. Spooler.
PPD Postscript Printer Description - Ist eine normalerweise vom Druckerhersteller gelieferte Datei welche die spezifischen Optionen und Funktionen eines Postscript Druckers beschreibt. Also z.B. welche Auflösung ein Drucker kann, welche Schriften enthalten sind, Welche Papiersorten und Größen er verarbeiten kann, ob zusätzliche Papierfächer oder Duplex-Einheiten einbaubar sind usw. Eine PPD Datei beschreibt also einen Postscript-Drucker und all seine Möglichkeiten sehr detailliert. Eine Anwendung oder ein Spooler weis nun anhand einer zum Drucker passenden PPD Datei wie es den Drucker ansteuern muss und welche Parameter möglich sind.
PPD Dateien sind nur für Postscript-Drucker erforderlich. Nicht-PS-Drucker benötigen eigentlich keine PPDs da solche Drucker kein Postscript sprechen und nur über eigene Hersteller und Modell abhängige Treiber/Filter angesteuert werden können. Eine Ausnahme bildet CUPS. CUPS kann auch bei Nicht-PS-Druckern PPD Dateien verwenden. Dies sind üblicher Weise “künstlich” erzeugte PPDs (z.B. durch “foomatic”) welche ganz ähnlich der echten Postscript-PPDs einige Features, Funktionen und Optionen von Nicht-PS-Druckern beschreiben um CUPS diese auf diesem Weg gekannt zu geben. Hierdurch weis nun CUPS wiederum welche Funktionen und Optionen ein Drucker besitzt und kann diese Informationen dementsprechend an seine Cups-Clients weiter geben.
foomatic Ist ein Software-Paket unter Linux welches viele verschiedene Funktionen im Zusammenhang mit dem Drucken unter Linux abdeckt. Es besteht insbesondere aus einer riesigen Drucker- und Konfigurations-Datenbank. Hierdurch soll die Druckerinstallation unter Linux vereinfacht werden. foomatic ist in der Lage automatisch “PPD” Dateien passend für einen Drucker selbst zu erzeugen, selbst dann wenn es sich hierbei NICHT um einen PS-Drucker handelt. Foomatic soll auch in der Lage sein ganze Queues automatisch anzulegen und diese passend zum Drucker zu konfigurieren.
RIP Raster Image Processor - Übersetzt Postscript in die für einen Drucker spezifischen eigenen Sprache. (bei Nicht-PS-Druckern) z.B. Epson, Deskjets oder reinen PCL Druckern.
hplipHP Linux Printing and Imaging System (HPLIP) - Eine Sammlung zusätzlicher CLI und GUI Tools welches dem Linux User die Druckerverwaltung einfacher machen soll. HPLIP benötigt u.a. foomatic und cups. Leider musste ich feststellen das nach der Installation von HPLIP einige der hier genannten Tools und Kommandos anschließend nicht mehr wie erwartet funktionieren. Offenbar stören sich einige Komponenten gegenseitig, oder es wird davon ausgegangen dass die Druckumgebung anschließend nur noch per HPLIP konfiguriert werden soll. Daher rate ich zur Zeit von der Verwendung von HPLIP ab. -AW-

Wichtige Tools

Kommandozeile Funktion / Beschreibung
lp
program | lp
Line Printer - Das ist der Standard-Befehl mit dem man Dinge auf der Linux Console ausdrucken kann. Es liest Inhalte von einer Datei oder STDIN und leitet diese an einen Druckerspooler weiter.
lp -d deindrucker filename.ps
Druckt den Inhalt der Datei filename.ps auf dem Drucker “deindrucker” aus.
lpoptions -p druckername -l
Listet alle möglichen Druckeroptionen und Einstellungen auf. Dazu muss allerdings dem Drucker/Queue eine PPD Datei hinterlegt sein. (Postscript Printer Definition)
lpadmin -d deindrucker
lpoptions -d printer
Definiert den Standard-Drucker
lpstat
lpstat zeigt CUPS Statusinformationen an oder listet Drucker, Queues und Printjobs auf. Siehe man lpstat .
lpstat -p -d
Listet alle bekannten Drucker inkl. dem aktuellen Default-Drucker auf. (Kurzform)
lpstat -l -p
Listet alle bekannten Drucker in ausführlicher Form inkl. Zugriffsrechte und hinterlegter PPD auf. ACHTUNG: Aus irgend einem Grund funktioniert der Parameter -l nur vor dem -p
lpstat -o
Zeit alle anstehenden Printjobs ALLER vorhandenen Queues an.
lpstat -o druckername
Zeit die anstehenden Printjobs in der Queue “druckername” an.
lpstat -s
Zeigt alle bekannten Drucker-Queues inkl. den hinterlegten Interfaces/Ports/Devices, sowie den aktuellen Standard-Drucker an.
lpstat -t
Gesamtüberblick über alle bekannten Queues, Drucker, Devices und deren aktueller Zustand.
lpoptions -p HPLJ4250dtn -o HPOption_Tray3=Tray3_500 \
   -o HPOption_Duplexer=True
Stellt einige Druckerspez. Einstellungen ein. Welche Einstellungen für einen Drucker möglich sind kann man sich mit dem Befehl
lpoptions -p druckername -l

anzeigen lassen. Hierfür muss dem Drucker allerdings eine PPD Datei hinterlegt worden sein.

lpoptions -p printer/instance -o name=value ...
Hierdurch können “Instanzen”, also kopien der Queue mit speziell angepassten Druck-Optionen erzeugt werden. z.H. eine Instanz für jedes Papierfach, oder mit und ohne Duplexer etc. Es ist auch Denkbar je nach Papierart eine Instanz zu generieren. z.B. Geschaeftspapier (fach2, nicht duplex), Schmierpapier (fach1, nicht duplex), Blanco (Fach3, duplex)
Beachten Sie: Die Druckoptionen werden beim erzeugen von Instanzen NICHT von der Queue vererbt, sondern müssen pro Instanz neu definiert werden.
lpoptions -p HPLJ4250dtn/fach1-schmierpapier-einseitig -l
Zeigt die aktuellen Einstellungen dieser “Instanz” an.
lpstat -a
Zeigt alle aktiven Drucker inkl. Instanzen an.
cancel job-id
Bricht das drucken eines Jobs mit dieser ID ab.
lpadmin -p 'HPLJ4250dtn' -v 'socket://10.230.99.1:9100' \
   -D 'SW Laser A4 Duplex Fach1manuell Fach2 Fach3' \ 
   -u allow:all -L 'Firma,Ort,Stockwerk' \ 
   -E -P /etc/cups/ppd/hp-laserjet_4250-ps.ppd
Legt eine neue Queue/einen neuen Drucker mit dem Namen “HPLJ4250dtn” an. Die Optionen sind wie folgt:
-p Drucker/Queuename
-v Device-URI / URI des Netzwerkdruckers
-D Description, beliebiger Text
-u Berechtigt/Verbietet Zugriff auf den Drucker
-L Location, beliebiger Text
-E enable Queue, Druckerwarteschlange aktiv schalten
-P Pfad zur passenden PPD
foomatic-configure
foomatic-printjob
Sind die für foomatic wichtigsten Tools zur Konfiguration von Druckern (queues), erzeugen von PPDs, Einstellen von Druckoptionen usw, sowie zum Job-Management und zum Drucken selbst. Siehe man foomatic-configure
cupsdisable -r 'DRUCKER ZUR ZEIT NICHT VERFUEGBAR' HPLJ4250dtn
Deaktiviert den Drucker und hinterlegt eine Zusatzinformation. Den aktuellen Status und die Info kann man durch Eingabe von lpstat -p einsehen.
ACHTUNG: Die Queue wird damit nicht deaktiviert und akzeptiert weiterhin Druckjobs! Dies ist also eher für Queues mit mehreren gleichen Druckern (Klassen Konfiguration) interessant.
cupsenable HPLJ4250dtn
Re-aktiviert den Drucker. Vorhandene Druckjobs in der Queue werden umgehend wieder auf diesem Drucker ausgedruckt.
reject -r 'ZUR ZEIT NICHT VERFUEGBAR' HPLJ4250dtn
Deaktiviert die Druckwarteschlange und hinterlegt eine Zusatzinformation. Die Queue nimmt keine neuen Druckjobs mehr an. Vorhandene Jobs werden allerdings noch verarbeitet. Den aktuellen Status und die Info kann man durch Eingabe von lpstat -a einsehen.
accept HPLJ4250dtn
Re-aktiviert eine Queue.

Network Protocols Supported by CUPS

Protokoll Adressierung (DeviceURI)
AppSocket (JetDirect/Port 9100)
socket://ip-address-or-hostname 
socket://ip-address-or-hostname:port-number
Internet Printing Protocol (IPP)
ipp://ip-address-or-hostname:port-number/resource?option=value&option=value
Line Printer Daemon (z.B. diverse Pocket Printserver)
lpd://address/PASSTHRU 
lpd://address/LPT1_PASSTHRU 
lpd://address/LPT2_PASSTHRU 
lpd://address/pr1 
lpd://address/pr2 
lpd://address/pr3 
lpd://ip-address-or-hostname/vendorspecificstring

Wichtige Dateien

Datei Funktion / Beschreibung
/etc/cups/printers.conf Liste der lokal (auf diesem Server) konfigurierten Drucker. Die Datei “kann” zwar mit einem Texteditor beschrieben werden, man soll aber laut Doku alle Änderungen am System besser mit dem CLI Tool “lpadmin” erledigt. Bei Änderungen an der Datei mit anderen Tools ist anschließend ein Neustart des cupsd erforderlich. Bei Verwendung von lpadmin entfällt dies. Instanzen von Queues werden hier leider NICHT angezeigt.
/etc/cups/ppd Hier hinterlegt das CUPS Webinterface die für einen PS Drucker benötigten PPD (Postscript Printer Definition) Dateien. Wenn man einen Drucker allerdings per Kommandozeile selbst konfigurieren möchte, so muss man die hierfür notwendigen PPD Dateien eben per Hand z.b. hier ablegen und per lpadmin -P /pfad/ppdfile darauf verweisen.
/etc/cups/lpoptions Enthält die Optionen/Einstellungen zu den einzelnen Queues und Instanzen

Axel Werner 2011-01-02 00:07