Inhoud

Inleiding CUPS Print Spooler

Dit document geeft een toelichting op het begrip 'print spooler' en een inleiding in de CUPS 'print spooler' software.

Dit document is gebaseerd op CUPS versie 1.5.3

1. Wat is een Print Spooler

Oorspronkelijk was het zo geregeld dat een applicatie, die in staat was om output naar een printer te sturen, zelf de gehele printopdracht in overleg met de printer moest zien af te handelen. De applicatie moest dus de juiste kennis aan boord hebben om concrete printers te kunnen aansturen.

Maar: een gebruiker die via een applicatie een printopdracht geeft wil meteen kunnen doorwerken (of de applicatie zelfs kunnen afsluiten). Hij wil niet gedwongen worden te wachten totdat zijn printwerk daadwerkelijk uit de printer rolt en er geen interactie meer nodig is tussen printer, applicatie en gebruiker. Ook wil hij meer dan 1 printopdracht achter elkaar naar de printer kunnen sturen. 1)

Om aan deze wensen van de gebruiker tegemoet te komen is een mechanisme ontwikkeld dat de printopdracht van de applicatie aanpakt, in een wachtrij (op disk of in geheugen) plaatst en vanaf dat moment de complete regie voert over de verdere afhandeling ervan, zodat de gebruiker de applicatie meteen weer voor iets anders kan benutten of kan afsluiten.
Dit mechanisme wordt een print spooler genoemd. 2)

Op een computer met 'print spooler' software hoeft de applicatie dus niets meer te weten over concrete printers: hij hoeft alleen te weten aan welke wachtrij ('print queue') de printopdracht van de gebruiker moet worden aangeboden.
Het “inrichten van een printer” op zo'n computer is daardoor in feite niets anders dan het inrichten van een wachtrij op de betreffende 'print spooler'.
Zo'n wachtrij wordt door een beheerder op systeemniveau ingericht & beheerd m.b.v. de beheermodule van de 'print spooler' software.

CUPS logo (Apple Inc.) In onze Tux4u®/Penguin Suite Linux distributie wordt (net zoals in vele andere UNIX, Linux en Mac OS® X besturingssystemen) de CUPS 'print spooler' software gebruikt.
CUPS staat voor: Common UNIX Printing System.
CUPS is open source 'print spooler' software ('printer management software'), die in 1997 door Michael Sweet in zijn bedrijf Easy Software Products werd ontwikkeld voor UNIX-achtige besturingssystemen. 3)

2. De CUPS Print Spooler

CUPS print spooler (bron: en.wikipedia.org/wiki/CUPS)

De CUPS 'print spooler' software bestaat in essentie uit de volgende 3 onderdelen (zie illustratie):

  1. scheduler/spooler:
    voor het vormen en beheren van printerwachtrijen ('print queues')
  2. filters:
    voor het omzetten van de data in een voor de printer geschikt formaat
  3. backends:
    voor het op de juiste wijze transporteren van de gefilterde printer data naar de beoogde printer

Met de ingebouwde beheermodule CUPS Printer Administration kan een daarvoor geautoriseerde gebruiker (bv. de systeembeheerder: 'root') voor de aanwezige printers printerwachtrijen op de CUPS 'print spooler' inrichten en beheren.

De CUPS scheduler, filters, backends en beheermodule worden hierna stuk voor stuk kort toegelicht.

2.1 CUPS Scheduler/Spooler

Zodra een wachtrij ('print queue') op de CUPS 'print spooler' is ingericht wordt hij beheerd door de 'scheduler' (ook wel 'spooler' genoemd).

Wanneer de gebruiker via een applicatie een printtaak ('print job') opgeeft, copieert de applicatie de betreffende data (d.w.z. een bestand of de uitvoer van de applicatie zelf) naar de wachtrij van de beoogde printer.
De printtaak krijgt van de scheduler een taaknummer ('print job-ID') voor de specifieke wachtrij en moet achteraan aansluiten.
Vervolgens zorgt de scheduler ervoor dat de printtaken in de wachtrij op volgorde van binnenkomst (FIFO: 'first in, first out') worden afgehandeld.

Wanneer de printtaak aan de beurt is, wordt hij door de scheduler doorgegeven aan de CUPS Filters.
Daarbij wordt de volgende informatie meegegeven:

  1. printtaak-nummer ('print job-ID')
  2. gebruikersnaam van degeen die de taak opgaf
  3. printtaak-naam ('print job name')
  4. aantal te printen afdrukken
  5. evt. afdrukopties
  6. bestandsnaam (indien het een bestand betreft)

De scheduler houdt bij hoe de printtaak verder wordt afgehandeld en verwijdert de printtaak uit de wachtrij zodra hij daadwerkelijk aan de printer is aangeboden. Tot dat moment kan de gebruiker de printtaak nog annuleren ('cancellen').

2.2 CUPS Filters

Via de CUPS Filters doorloopt de printtaak een aantal filterslagen om de inhoud te converteren naar 'printer data', d.w.z. om te zetten in een voor de printer geschikte printertaal & formaat, zodat de printtaak door de beoogde printer geaccepteerd en verwerkt kan worden.
De aldus ontstane 'printer data' wordt daarna voor een laatste filterslag doorgegeven aan de CUPS backends.

De in de CUPS Filters te volgen procedure is allereerst afhankelijk van het data-type van de inhoud: voor een afbeelding zal een andere filterprocedure worden toegepast dan voor bv. een tekst- of HTML-bestand.
De procedure in de CUPS Filters bestaat daarom uit 2 primaire filterslagen:

  1. filtering op basis van type inhoud
  2. filtering op basis van karakteristieken van de wachtrij van de beoogde printer

2.2.1 Filtering op basis van type inhoud: MIME

Omdat de scheduler geen informatie heeft doorgegeven over het data-type van de printtaak, moet eerst het zgn. MIME-type ('Internet Media Type'/'Content Type') van de inhoud worden bepaald. 4)
Een voorbeeld van een MIME-type is: “text/html; charset=UTF-8” (d.w.z. tekst van het type HTML op basis van de UTF-8 tekenset).
CUPS gebruikt twee MIME-databases om het MIME-type en het daarbij behorende filter te achterhalen:

  1. mime.types: hiermee wordt het data-type bepaald op basis van de bestandsextensie of op basis van de eerste kilobyte van de inhoud
  2. mime.convs: hiermee wordt op basis van het gevonden data-type bepaald in welk formaat het omgezet moet worden en met behulp van welk filter dat moet gebeuren, bv.: platte tekst naar PostScript ('txttops') of afbeelding naar raster ('imagetoraster').

Op basis van het MIME-type wordt de inhoud van de printtaak m.b.v. het bijbehorende filter omgezet naar _e'_e'n van de twee volgende formaten:

  1. PostScript-formaat 5)
  2. raster-formaat 6)

2.2.2 Filtering op basis van printerkarakteristieken: PPD

Vervolgens moet worden vastgesteld of het formaat nu geschikt is om (via de CUPS backends) aan de printer te worden aangeboden of niet. Dit wordt gecheckt a.h.v. de zgn. CUPS PostScript Printer Description File ('CUPS PPD-file') van de betreffende wachtrij. 7)

De CUPS PPD-file van de wachtrij is door CUPS gemaakt op het moment dat de wachtrij door de beheerder op de CUPS 'print spooler' werd ingericht.
Het bestand bevat alle kenmerken van de betreffende printer die voor die specifieke wachtrij van toepassing zijn (zoals bv. ondersteunde printertaal & formaat, wel/niet dubbelzijdig afdrukken, vast aantal afdrukken per printtaak, enz.).

Met de CUPS PPD-file van de wachtrij als referentie wordt bepaald of verdere filtering noodzakelijk is.
Voor inhoud die op basis van MIME-type in de eerste filterslag is omgezet in PostScript-formaat kan die check als volgt uitpakken:

2.3 CUPS Backends

De CUPS Backends voeren een laatste filterslag uit om de printer data via het juiste protocol te transporteren naar de fysieke printer.

Er zijn CUPS Backends voor rechtstreeks (“lokaal”) transport via een parallelle-, seri_e:le- of USB-poort en “netwerk backends” voor transport via een netwerk connectie, op basis van specifieke protocollen, bv.:

2.4 CUPS Printer Administration

De ingebouwde beheermodule CUPS Printer Administration is het instrument waarmee printerwachtrijen op de CUPS 'print spooler' kunnen worden ingericht, beheerd en bekeken.

2.4.1 Beheer-interfaces

Er zijn 3 methoden ('interfaces') om toegang tot de beheermodule te krijgen:

  1. de commando interface:
    - het lpadmin-commando voor alle beheertaken (zie: manpage lpadmin)
    - het lpstat-commando voor het opvragen van statusinformatie (zie: manpage lpstat)
  2. de web interface:
    CUPS heeft een ingebouwde web server, die luistert op poort 631 van het betreffende systeem.9)
    CUPS Printer Administration is daardoor met een web browser toegankelijk via de URL: http://localhost:631.
    De CUPS web server kan zo worden ingesteld, dat ook vanuit een ander systeem de CUPS Printer Administration met een web browser beheerd kan worden via de URL: http://cups_server-naam:631.
  3. een desktop interface:
    sommige grafische desktop-omgevingen (bv.: GNOME, KDE) bieden vanuit hun menu toegang tot desktopspecifieke CUPS printeradministratie modules (bv.: GNOME CUPS Manager, KDEPrint)

De aanbevolen interface is de web interface: deze biedt toegang tot alle facetten van CUPS Printer Administration.
Het lpadmin-commando doet dat ook, maar is m.n. bedoeld voor de geoefende gebruiker en voor gebruik vanuit scripts. De desktop interface biedt meestal slechts beperkte toegang tot CUPS Printer Administration.

Autorisatie:

2.4.2 Lokale en remote wachtrijen

Voor het inrichten van een wachtrij op de CUPS 'print spooler' zijn de volgende gegevens nodig:

  1. de unieke naam voor de wachtrij ('queue name')
    De naam kan bv. worden samengesteld uit het printertype en het formaat van de printer data: “samsung-ml2150-pcl6” of “samsung-ml2150-ps”
  2. de PPD-file voor de wachtrij
    De PPD-file is gekoppeld aan het printertype (printermerk+model) en geeft ook aan welke filters er gebruikt kunnen worden. Er kan per wachtrij _e'_e'n PPD-file worden aangewezen. Men kiest de PPD-file die specifiek voor de beoogde printer bedoeld is of men kiest er een die er het beste bij past.
    Per printertype kunnen er meerdere PPD-files beschikbaar zijn, bv. voor het aanleveren van printer data in verschillende formaten, zoals in PCL-6 of juist in PostScript formaat. In dat geval kunnen er meerdere afzonderlijke wachtrijen worden ingericht, elk met zijn eigen PPD-file.
  3. het type verbinding ('connection type')
    Het verbindingstype is afhankelijk van de locatie waar de fysieke printer zich bevindt: aan het lokale systeem verbonden (parallel, seri_e:el, USB), aan een ander systeem verbonden of als zelfstandig apparaat rechtstreeks aan het netwerk gekoppeld.
    Deze informatie wordt gebruikt door de CUPS backends.
  4. de standaardopties voor de wachtrij ('default options')
    Hiermee worden de printerafhankelijke opties bedoeld, die automatisch moeten worden toegepast bij het “standaard” (zonder specifieke print opties) uitvoeren van een printtaak via de betreffende wachtrij. Het betreft het instellen van o.m.: resolutie, papierformaat, dubbelzijdig afdrukken, aantal te maken afdrukken.
    CUPS bewaart deze informatie in de 'CUPS PPD-file' van de wachtrij.

CUPS bewaart de configuratie van de wachtrij (“printer configuratie”) in het bestand /etc/cups/printers.conf in combinatie met de 'CUPS PPD-file' /etc/cups/ppd/queue_name.ppd.

Met de beheermodule kunnen zowel lokale als remote wachtrijen worden ingericht:

Bij het inrichten van een lokale wachtrij kan worden aangeven of deze lokale wachtrij wel/niet gedeeld ('shared') zal worden met andere systemen binnen het netwerk.
Een systeem dat zijn wachtrij(en) deelt wordt een CUPS print server genoemd. De beheermodule biedt diverse mogelijkheden om de instellingen van zo'n CUPS 'print server' (zoals de configuratie, autorisatie, 'logging') naar wens aan te passen.

Een gedeelde lokale wachtrij zal door de CUPS print server automatisch via een 'IPP-broadcast' aan de andere CUPS clients (systemen met actieve CUPS 'print spoolers') binnen het netwerk bekend worden gemaakt. Dit betekent dat er op de CUPS 'print spooler' van die CUPS clients in principe geen remote wachtrijen hoeven te worden ingericht. 12)

3. Verder lezen: CUPS documentatie

Het printen met CUPS wordt beschreven in het document: Printen met CUPS (cups-printen.txt).

Het inrichten van een wachtrij op de lokale CUPS 'print spooler' wordt beschreven in het document: CUPS: Inrichten Lokale printer (cups-lokale-printer.txt).

Voor het inrichten van een CUPS 'print server' en het gebruik daarvan vanuit een Linux of Windows systeem, zie het document: Inrichten Netwerk Printer (ps-net-printer_nl.txt).

Uitgebreide (Engelstalige) CUPS documentatie is te vinden via de web interface van de beheermodule CUPS Printer Administration, onder de TAB Online Help.

.

Copyright © 2013 Integrated Services; Tux4u.nl
Author: M. Waldorp-Bonk; cups-inleiding.txt 2013-07-16

1)
Dit speelt nog sterker in een 'multi-user multi-processing' omgeving (zoals UNIX, Linux), waar meerdere gebruikers tegelijk vanuit meerdere applicaties hun printopdrachten aan de printer willen kunnen aanbieden.
2)
De term 'print spooler' is ontleend aan het op tape schrijven van printer data. Deze printer data werd dan naar een ander systeem overgebracht om te worden uitgeprint.
3)
Voor die tijd waren in de UNIX-wereld reeds twee 'print spoolers' ontwikkeld voor 'line printers' (printers die de printer data regel-voor-regel afdrukken): de AT&T lp spooler (UNIX System V Printing System; m.n. gebruikt voor de commerci_e:le UNIX-varianten) en de Berkeley lpr spooler (BSD Printing System).
De CUPS print spooler kan nog steeds omgaan met het door Berkeley gebruikte 'Line Printer Daemon Protocol' (LPD), maar is door Michael Sweet van de grond af nieuw ontwikkeld, op basis van nieuwe standaarden en technologi_e:en. CUPS is webgebaseerd en gebruikt het 'Internet Printing Protocol' (IPP) over HTTP.
CUPS werd in 2002 door Apple geadopteerd voor Mac OS® X 10.2. In 2007 trad Michael Sweet in dienst van Apple en werd Apple Inc. de offici_e:le eigenaar van de CUPS broncode. CUPS wordt sindsdien door Apple en Michael Sweet verder ontwikkeld.
4)
De oorspronkelijke betekenis van MIME, 'Multipurpose Internet Mail Extension', verwijst naar het gebruik van het MIME-type om die delen van een mailbericht te beschrijven die niet in ASCII-formaat (“platte tekst”), maar conform MIME-specificaties zijn opgesteld, zoals bv. bijlagen in de vorm van een grafisch bestand of een spreadsheet. Zonder herkenning van het MIME-type zou het mailprogramma niet met dergelijke onderdelen van een mailbericht kunnen omgaan.
5)
PostScript, beter bekend als Adobe PostScript, is een programmeertaal waarmee een pagina van een document (op basis van 'vector graphics') op een dusdanig universele manier beschreven kan worden, dat deze door elke printer uitgerust met een RIP ('Raster Image Processor') kan worden ge_i:nterpreteerd. Door deze interpretatieslag op de printer zelf uit te voeren wordt de CPU van de computer ontlast.
PostScript is de standaard in de UNIX-wereld: UNIX applicatiebouwers zorgen ervoor dat hun applicatie uitvoer in PostScript-formaat aanlevert, zodat deze zonder verdere aanpassingen aan PostScript printers kan worden aangeboden.
PostScript printers zijn relatief dure printers. Dit verklaart waarom deze in de PC-wereld niet gangbaar zijn.
6)
Rasterafbeelding, 'bitmap'
7)
De CUPS PPD-file is gebaseerd op het Adobe PostScript Printer Description formaat.
In zijn oorspronkelijke betekenis is een PPD-file een door de printerfabrikant voor een PostScript-printer aangeleverd bestand, waarin in PostScript-code alle karakteristieken en mogelijkheden van de betreffende printer worden beschreven.
CUPS maakt voor elke wachtrij een CUPS PPD-file, ongeacht of het een wachtrij voor een PostScript printer betreft of niet.
8)
Vanaf de commandoregel “telnetten” naar poort 9100 is een veelgebruikte manier om een netwerkprinter te testen.
Dit gaat als volgt: telnet naar het IP-adres van de netwerkprinter, poort 9100; voer wat tekst in; sluit telnet af; kijk of de tekst geprint wordt.
9)
TCP en UDP poort 631: standaard poort voor IPP, het 'Internet Printing Protocol'.
10)
De systeembeheerder, 'root', kan zelf altijd autoriseren als CUPS beheerder. Daarnaast kan hij, via de CUPS configuratie, een andere gebruiker als CUPS beheerder aanwijzen.
11)
Afhankelijk van de printer software op het ontvangende systeem kan dit eveneens een wachtrij voor een CUPS 'print spooler' zijn of juist voor een ander type 'print spooler'.
12)
Het inrichten van een remote wachtrij op een CUPS client is wel noodzakelijk om bv. een firewall te overbruggen.