Drucken / Druckerverwaltung mit CUPS




Vorwort:
Die Druckerverwaltung LPD unter Linux stammt aus den Zeiten, als in Berkley noch große Typenrad oder Matrixdrucker vor sich hinratterten. Der Line Printer Daemon (LPD) funktioniert auch heute noch, doch sind spezielle Formate, Farben oder zentrales Druckmanagement gefragt, sind seine Grenzen schnell erreicht. 30 Jahre nach der Einführung von LPD steht nun ein neues Druckmanagement - System zur Verfügung. Sein Name: CUPS (Common Unix Printing System). Es basiert auf IPP (Internet Printing Protocol), das selbst Microsoft in seiner Windows 2000 Version unterstützt. IPP setzt auf dem HTTP Protokoll auf und erlaubt Zugriffskontrolle, Authentifizierung und Verschlüsselung. Das zentrale System von CUPS ist der Daemon cupsd, der fast vollständig kompatibel zu LPD ist.

Meiner Meinung nach ist es Zeit, LPD in den wohlverdienten Ruhestand zu schicken.
 

Wie funktioniert CUPS?


Der obige Flow zeigt ganz grob, wie sich Cups zusammensetzt (Quelle: Linux Computing 12/2000 Seite 86ff)

Das bemerkenswerte an CUPS ist die API, welche erlaubt sogenannte PPD - Dateien (Postscript Printer Definitions) zu verwenden. Sehr viele namhafte Druckerhersteller veröffentlichen auf ihrer Homepage diese Definitionsdateien. Diese Definitionsdateien sind natürlich nicht nur mit PostScript Druckern einsetzbar, auch wenn dies der Name suggeriert. Es handelt sich eigentlich dabei "nur" um Textdateien, die genau beschreiben, in welcher Weise der Drucker funktioniert.

Drucken wir aus einer Anwendung eine Textdatei aus nimmt diese den nun folgenden Weg. Die Anwendung setzt (meistens) mit dem lpr-Kommando einen Druckauftrag ab (sog. Jobs) und in die Warteschlange (Spooler) gestellt. Wie beim altehrwürdingen LPD wird dieser Job an einen Filter weitergegeben, der den Datentyp der zu druckenden Datei automatisch erkennt und für den jeweiligen Drucker aufbereitet. Anders als bei LPD wird hierzu nicht ein externer Filter benötigt. CUPS bring diese Filter aber auch eine Form von Ghostscript bereits mit. Die so aufbereiteten Daten werden an das passende Backend weitergeleitet. Dies kann eine paralelle, serielle oder USB Schnittstelle am lokalen Rechner oder aber auch ein beliebiger Netzwerkdrucker sein. Unterstützt werden die Protokolle LPD, JetDirect und IPP.
 
 

Installation und einfache Konfiguration

Zuerst lädt man sich die Installationsdateien unter http://www.cups.org   (Unter RH7 benutzt man vorzugsweise das Paket: cups-1.1.4-linux-2.2.14-intel.rpm oder neuer)

Ähnlich wie man bei einer Postfix - Installation zunächst Sendmail entfernen muss, geht es erst einmal dem LPD an den Kragen. Unter Red Hat 7 müssen drei Pakete in folgender Reihenfolge deinstalliert werden:

rpm -e printtool
rpm -e rhs-printfilers
rpm -e LPRng

Jetzt folgt die Installation:

rpm -i cups-1.1.4-linux-2.2.14-intel.rpm

So, geschafft. CUPS ist nun einsatzbereit auf dem System. Geht es noch einfacher? OK, machen wir weiter mit der ersten Konfiguration.

Auf der Shell hilft hier das Kommando: lpadmin -p <printer> -E -v <device> -m <ppd>

lpadmin -p laserjet -E -v parallel:/dev/lp0 -m laserjet.ppd

Obiges Kommando entsprach meinem System mit HP Laserjet 5P an der ersten parallelen Schnittstelle.
 
 

Die Konfigurationsdatei /etc/cups/cupsd.conf

Zur Konfigurationsdatei möchte ich zu diesem Zeitpunkt noch nicht sehr viel erzählen. Ich habe in meinem Fall nur einige wenige Zeilen geändert: und zwar den "AuthType". Normalerweise ist der AuthType auf folgendes eingestellt:

AuthType Basic
AuthClass User

Ich habe die Authentifizierung von Basic auf "None" eingestellt und die AuthClass auskommentiert.

Ausserdem habe ich die Browser Funktion (erkläre ich später) für alle Rechner freigeschaltet. 

BrowseAllow All 

Nach ändern der Datei /etc/cups/cupsd.conf restartet man am Besten den Daemon mit /etc/rc.d/init.d/cups restart
 
 

Einstellungen über den WebBrowser

Bevor wir nun den ersten Ausdruck anwerfen, schauen wir uns die Einstellung über einen beliebigen WebBrowser an. Damit man von jedem rechner aus die Druckverwaltung ansprechen kann, habe ich obige einstellungen in /etc/cups/cupsd.conf vorgenommen. Man gibt also die Adresse des CUPS-Servers in der Form:    http://host.domainname.suffix:631. oder http://192.168.0.3:631 als IP-Adresse an. Der Port ist bei 631 voreingestellt.

In meinem Fall lautet die Adresse folgendermassen: http://sun.space.mil:631. Die Druckereinstellungen im Browsermenü sind dann recht simpel handzuhaben. Hier gleich mal ein Screenshot von einem Windows 2000 Rechner aus:

Über den Button "Configure Printer" nimmt man nun Einstellungen wie Papierformat und Auflösungen vor. Ein Testausdruck überzeugt einen dann von der Funktionsfähigkeit des Drucksystems. In der Standardinstallation von CUPS sind nur einige wenige Druckerbeschreibungen für Epson und HP vorhanden, was aber keinen Beinbruch darstellt.
 
 

Auf der Suche nach den richtigen Treibern

Als erstes begibt man sich auf die Suche nach dem richtigen PPD - File. Fündig wird man meist auf der WebSeite von Adobe, die hervorragende Files kostenlos bereitstellen. Selbst auf der Seite von CUPS werden diese angepriesen. Aber hier erstmal der Link:

http://www.adobe.com/products/printerdrivers/winppd.html

Windows PPD - Files funktionieren (fast) anstandslos mit CUPS. Zumindest diejenigen, die ich verwende sind hervorragend. Ein RPM - Paket von Mandrake 7.2 (cups-driver) beinhaltet ünrigens auch hunderte von Herstellern/Druckern, die man sich - so weit man nicht Mandrake 7.2 an sich verwendet - installieren sollte. Das Paket gibt es z.B. unter:

ftp://ftp.linux.com/mounts/u1/mirrors/mandrake/updates/7.2/RPMS/

Mit diesen Treibern ausgerüstet, kann in Null-Komma-Nichts seinem Drucker anständige Ergebnisse entlocken.
 
 

Remote Drucken: UNIX - Maschine

Das Remote - Drucken aus Unix Maschinen heraus ist mehr als einfach. Einfach CUPS installiert und die Datei /etc/printcap angepasst.
Hier trägt man nichts weiter als den Namen des Remote Druckers an. Richtig, kein Treiber, keine Angabe über den Server etc. Alles geht ganz von alleine. Und schon kann man drucken. Ist das nicht fantastisch?
 
 

Remote Drucken: Windows - Maschine via SAMBA

Hat mit einiges an Kopfzerbrechen gekostet, gebe ich ja zu. Aber an sich ist es so einfach, dass man den Wald vor lauter Bäumen nicht sieht ;-)
In meiner Samba Konfiguration, die ihr in meiner Sektion über Windows FileServer errfahren könnt, ist das Gerüst schon mal vorhanden. Einige wenige Einträge muss man nur Hinzufügen bzw. ändern.

TO BE CONTINUED SOON ----->
 
 
 
 
 
 

Web Verzeichnis zu CUPS:

CUPS - Homepage: http://www.cups.org
CUPS - Softare Admin Manual: http://www.cups.org/sam.html
KUPS - Homepage http://cups.sourceforge.net/kups/
QTCUPS - Homepage http://cups.sourceforge.net/qtcups/index.html
GtkLP - Homepage http://www.stud.uni-hannover.de/user/75439/gtklp/
X Printing Panel http://cups.sourceforge.net/xpp/
Druckertreiber Adobe http://www.adobe.com/products/printerdrivers/winppd.html
Druckertreiber von Mandrake ftp://ftp.linux.com/mounts/u1/mirrors/mandrake/updates/7.2/RPMS/