Common Unix Printing System

Common Unix Printing System

Basisdaten

Hauptentwickler Apple Inc.
Entwickler Michael Sweet
Erscheinungsjahr 9. Juni 1999
Aktuelle Version 2.4.11[1]
(30. September 2024)
Betriebssystem Unix-ähnliches System, Microsoft Windows
Programmier­sprache C++[2], C
Kategorie Druckerserver
Lizenz Apache-Lizenz, Version 2.0[3][4], GNU General Public License, Version 2[3]
openprinting.github.io/cups/

Common Unix Printing System (CUPS) ist ein freies Drucksystem, ein Daemon, der das Drucken unter den verschiedenen unixoiden Betriebssystemen sowie unter OS/2/EComStation[5] ermöglicht.

Geschichte

CUPS wurde vom Unternehmen Easy Software Products entwickelt und kann sowohl unter der GPL als auch unter proprietären Lizenzen verwendet werden. Es wurde als Nachfolger von älteren Drucksystemen, wie beispielsweise LPD, entworfen.

Am 11. Juli 2007 gab Apple bekannt, Michael Sweet, den Hauptentwickler von CUPS, angestellt zu haben. Gleichzeitig übernahm Apple auch die Rechte an CUPS.[6] Gleichzeitig wurde ESP Print Pro, das kommerzielle Produkt von Michael Sweet, welches auf CUPS aufbaut, eingestellt.

Mit der Version 2.1.0 wurde grundlegende Unterstützung für 3D-Drucker hinzugefügt.[7]

Am 7. November 2017 verkündete Apple, dass CUPS mit Erscheinen der Version 2.3 unter der Apache-Lizenz verbreitet wird.[8]

Im Dezember 2019 hat Michael Sweet Apple verlassen[9] und unterstützt seitdem das Folgeprojekt (Fork) OpenPrinting.[10]

Im September 2024 wurde eine schwere Sicherheitslücke in CUPS bekannt, die Angreifern eine Remote-Code-Execution ermöglichte. Für große Linux-Distributionen wie Ubuntu oder Fedora wurden Aktualisierungen herausgegeben, welche die Lücke schließen.[11]

Architektur

Skizze des Common Unix Printing Systems

CUPS besteht aus einer Client-Server-Architektur; das heißt, das Programm ist in einen Druck-Client und einen Druck-Server aufgeteilt: Der Druck-Client schickt die Druckaufträge, der Druck-Server erledigt das Drucken auf dem Rechner, an dem der Drucker angeschlossen ist.

Der Druckauftrag eines Clients wird an einen Prozess-Scheduler gesendet, der die zu druckenden Daten gegebenenfalls durch ein Filtersystem in das portable PDF-Format[12] konvertiert (bis zur Version 1.5 war dieses interne Standardformat PostScript). Diese Daten werden schließlich zu einem Back-End gesendet, welches sie entweder auf dem entsprechenden Drucker druckt (und die PDF-Daten dafür umwandelt) oder sie über ein Netzwerk an einen anderen CUPS-Server verschickt.

Der Hauptvorteil von CUPS gegenüber anderen Drucksystemen ist, dass es ein standardisiertes und modularisiertes System ist, welches eine Vielzahl von unterschiedlichen Daten auf dem Druckserver versteht (z. B. PDF-Dateien, PNG-Bilder, LaTeX-Texte). Mit einem solchen System ist plattformübergreifendes Arbeiten in heterogenen Netzwerken möglich. In Verbindung mit Samba lassen sich sogar CUPS-Dateien über einen virtuellen Spooler drucken, mit welchem Windows-Rechner kommunizieren können. Wichtiger Bestandteil ist die Implementierung von IPP, das in einem einzigen Protokoll bidirektionale Kommunikation über Proxies, Firewalls und Router hinweg ermöglicht, die auch einfach mit TLS verschlüsselt werden kann. IPP wird zur Kommunikation zwischen Servern verwendet, wird aber auch zur Kommunikation zwischen Backend und Endgeräten verwendet.

In einem CUPS-Server ist ein HTTP u. HTTPS-Server standardmäßig integriert. Dies ermöglicht auf der einen Seite eine Konfiguration jedes Computers im Netzwerk des CUPS-Servers, auf der anderen Seite ist auch eine gewisse Benutzerfreundlichkeit durch ein ohne besondere Software nutzbares Steuerungssystem geschaffen (lediglich ein Webbrowser ist notwendig). Das CUPS Web-Interface kann unter http://localhost:631 angesprochen werden.

Für die Konfiguration stehen Kommandozeilentools, Webinterface oder eine auf ZeroConf (Bonjour, Avahi) basierende automatische Erkennung und Einrichtung von Druckern zur Verfügung.

Erweiterbarkeit

Über CUPS-Backends (Backend-Filter zur Weiterverarbeitung der Daten) lässt sich CUPS mit Hilfe von eigenen Skripten anpassen. Einige Backend-Filter sind bereits mitgeliefert, wie smb zur Ansteuerung von Windows-Druckern via Samba, ipp für den Zugriff auf Warteschlangen anderer Hosts über das Internet Printing Protocol, pipe für das Weiterleiten des Druckauftrages an ein anderes Programm oder auch file für die Ausgabe in eine Datei. Des Weiteren gibt es pap für die Ausgabe auf AppleTalk-basierten Druckern z. B. via Netatalk oder Columbia AppleTalk Package (beides AppleTalk-Datei- und Drucker-Server).

Benutzerschnittstellen

Neben dem Webserver-Frontend existiert eine Vielzahl von grafischen und konsolenbasierten Dienstprogrammen, mit welchen sich CUPS-Systeme auch über das Netzwerk steuern lassen.

  • GtkLP – ein grafisches Frontend zum Drucken von Dateien für Gnome
  • KDEPrint – bis 2007 ein grafisches Frontend für KDE bis KDE3
  • ESP Print Pro – bis 2006 ein grafisches Frontend von Easy Software Productions (Hersteller von CUPS)
  • Unter ZETA kann das Print_Kit auch auf ein CUPS-Subsystem zugreifen, und neben den ZETA-Druckertreibern werden auch portierte CUPS-Treiber nebst entsprechenden PPD-Dateien unterstützt. So kommunizieren das Print_Kit und der Spooler über CUPS-Treiber mit den Druckern, die durch PPD-Dateien beschrieben sind.
  • Das Druckerdienstprogramm unter macOS
  • Einzelne Linux-Distributionen haben eigene GUIs.
  • Für das Betriebssystem OS/2/eComStation wurde bis ca. 2011 das System als eCups entwickelt.[13]
  • System-config-printer wurde 2006 von Tim Waugh in python programmiert.

Apple-spezifische Entwicklungen

Mit Version 1.6 ließ Apple einige Funktionen entfernen, die für Linux-Systeme und Unix-Systeme von Bedeutung sind, da sie für macOS (OS X) nicht gebraucht werden. Dazu zählen diverse Filter zum Umwandeln verschiedener Text- und Bitmap-Formate in Postscript und eine Funktion, die zur Verfügung stehenden Drucker-Warteschlangen abzufragen.[14] Die Filterentwicklung wurde daraufhin von dem Openprinting-Projekt „cups-filters“ übernommen. Ursprünglich hatte CUPS ein eigenes System zum Auffinden von Druckerwarteschlangen im Netz. Dieses basierte auf Netzwerk-Broadcast und hatte entsprechende Nachteile. Mit der Einführung von „DNS Service Discovery“ in OS X, das die Funktion, Dienste im Netz auffindbar zu machen, erfüllt, wurde dieses Teilsystem in CUPS überflüssig und somit entfernt. Unter Linux wurde diese CUPS-Funktion in eine eigenständige Erweiterung namens „cups-browsed“ entkoppelt. Die neueste Entwicklung von CUPS sieht vor, den gesamten Druckvorgang treiberlos zu gestalten. Damit wird die Unterstützung von PPD-Dateien und RAW-Druckern entfernt. Dazu müssen die Drucker das Internet Printing Protocol (IPP) mindestens in der Version 2.0 unterstützen, was bei Druckern der letzten 10 Jahre wahrscheinlich gegeben ist. Mit diesem Protokoll kann man alle Fähigkeiten des Druckers, wie sie sonst in den PPD-Treiberdateien beschrieben sind, direkt abfragen. Damit wird es möglich, auch von allen Geräten, für die bisher kaum Drucklösungen existieren (Smartphones, Tablets …), zu drucken; und auch auf Desktopsystemen wird die Druckereinrichtung damit so simpel wie noch nie. Auch wird damit erstmals die Lokalisierung (Übersetzung) der Treiber vom Server übernommen, die Hersteller müssen sich nicht mehr um Übersetzungen ihrer Treiber kümmern oder gar unzählige Sprachversionen von Treibern pflegen.

Literatur

Commons: Common Unix Printing System – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. v2.4.11. 30. September 2024 (abgerufen am 30. September 2024).
  2. The cups Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 18. Oktober 2018).
  3. a b Fix dates and update license help file. · apple/cups@105b26d. (abgerufen am 8. November 2017).
  4. cups: Official CUPS Sources. (abgerufen am 8. November 2017).
  5. http://trac.netlabs.org/ecups
  6. heise.de-Meldung: Unix-Drucksystem Cups gehört jetzt Apple, vom 12. Juli 2007
  7. Brian Krassenstein: Apple’s Open Source Printing System, CUPS Version 2.1, Adds 3D Printer Support. In: 3dprint.com. 2. August 2015, abgerufen am 3. September 2015.
  8. CUPS License Change Coming. In: CUPS.org. Apple Inc., 7. November 2017, archiviert vom Original am 10. November 2017; abgerufen am 11. November 2017 (englisch).
  9. The CUPS Printing System Lead Developer Has Left Apple, Begins Developing "LPrint" - Phoronix. Abgerufen am 9. Februar 2021.
  10. Yoon Chae-kyung: Apple's CUPS Repository Has Died A Quiet Death. In: Linux Reviews. 19. Oktober 2020, abgerufen am 12. Januar 2022 (englisch).
  11. Dirk Knop: Teils kritische Lücken in Unix-Drucksystem CUPS ermöglichen Codeschmuggel. In: heise online. 27. September 2024, abgerufen am 28. September 2024.
  12. Trace: • pdf_as_standard_print_job_format. The Linux Foundation, 19. Juli 2016, abgerufen am 2. August 2017 (englisch).
  13. eCUPS. Abgerufen am 14. Januar 2024.
  14. heise.de-Meldung CUPS 1.6 unterstützt Linux schlechter, vom 15. Februar 2012