Počátky tisku v Linuxu sahají do sedmdesátých let, kdy se objevily první tiskoví démoni. Od té doby se ovšem nároky na obsah tištěných dokumentů velice změnily, a tak určitě nebude stačit tisknout textové dokumenty. Vznikla sice vylepšení těchto démonů (např. LPRng), ale vývoj jde kupředu mnohem rychleji. Postupem času byly definovány normy pro tisk POSIX, navíc vznikl nový protokol Internet Printing Protocol (IPP), který začal být velice populární a je nyní podporován mnoha výrobci hardwaru. IPP protokol je nadstavba HTML protokolu, která umožňuje vzdáleně poskytovat tiskové služby. První verze CUPSu byla uvolněna roku 1999. V této době ještě nebyl příliš známý a používal se velmi málo. Dnes je všechno jinak a CUPS pomalu vytlačuje ostatní tiskové démony Linuxu z jejich pozic.
Hlavní částí je Scheduler. Ten při spouštění načte konfiguraci ze souborů. Lze s ním komunikovat pomocí příkazů přes CUPS API (lp, lpstat,lpc aj.). Ten komunikuje s filtry a částí pro tisk obrázků. Filtry se starají o tisk příslušného typu dokumentu (PDF, PS), popřípadě konvertují dokument do formátu, ve kterém jej bude tiskárna schopna vytisknout. Celý démon funguje jako HTTP server, komunikace s ním tedy probíhá úplně stejně jako s kterýmkoli jiným serverem na internetu. Díky tomu má CUPS implementováno i WWW rozhraní pro správu a konfiguraci. Toto rozhraní sice velmi ulehčuje práci, ale není jediné možné. Tradiční ovládání v konzole/terminálu samozřejmě zůstalo, provádí se pomocí příkazů lp, lpr, lprm, lpotpoions a lpstat.
CUPS lze nasadit jako tiskový server, stejně tak může hrát roli tiskového klienta. Dále podporuje IPP protokol, klienty používající LPD a zálohuje úlohy. Při výpadku tedy nejsou ztraceny úlohy, které jsou ve frontě. Program rovněž poskytuje základní ovladače pro tiskárny HP a Epson. Nejsou sice nejlepší, ale stačí pro každodenní tisk. Pokud chcete ovladače lepší, musíte si je stáhnout z internetu.
Instalace CUPSu není nikterak složitá, provádí se obvyklou kombinací příkazů ./configure, make a make install. Poté je potřeba podle potřeby upravit konfigurační soubor. Příjemně mě překvapilo, že se autoři drželi konvence konfiguračního souboru známé z http serveru Apache, a pokud to šlo, i direktiv. Po restartování je CUPS připraven a čeká na požadavky. Standartně naslouchá na portu vyhrazeném pro IPP, tedy portu 631 a lokální adrese 127.0.0.1. První má cesta tedy vedla k prohlížeči a adrese http://127.0.0.1:631/. Objevila se úvodní stránka serveru. Nabízí administraci, zobrazení tříd, nápovědy, úloh a tiskáren. Poslední volba je odkaz na stránku firmy, která CUPS vyvíjí. Na ní najdete odkaz pro stáhnutí nejnovější verze z internetu.
Klikl jsem tedy na "Administraci" a pokusil jsem se nainstalovat tiskárnu. Vyplnil jméno, které bude v síti identifikovat tiskárnu, popis a umístění. Klikl na dále, vybral připojení (paralelní port - parallel:/dev/lp0) a značku a model/ovladač. Po potvrzení jsem se chtěl přesvědčit, zda se tiskárna nainstaloval správně. Klikl jsem na "Printers" a ukázala se mnou nainstalovaná tiskárna. Stiskl jsem tlačítko "Print Test Page" a vytiskla se zkušební tiskárna, takže úspěšnost byla nainstalována úspěšně. Tlačítkem "Modify Printer" se mění nastavení konfigurace tiskárny (ovladače, port aj.) a tlačítkem "Configure Printer" se mění kvalita výstupu tisku. Práce se serverem je tedy velmi jednoduchá a nastavení se dá zvládnout pohodlně v prostředí internetového prohlížeče.
Jelikož jsem měl k dispozici notebook se systémem Windows XP, zajímalo mě, zda je možné tisknout z Windows na tiskárně v Linuxu. Jediné, co je k tomu ještě potřeba, je Samba. Nejprve bylo potřeba nastavit konfiguraci Samby následovně.
Upravit:
a přidat:
[global]
load printers = yes
printing = cups
printcap name = cups
sekce [printers] zobrazí skupinu tiskáren a [print$] vybranou tiskárnu při prozkoumávání Linuxového počítače.
Jelikož jsem neměl k dispozici ovladače, použil jsem jiné nastavení. Ovladače si lze stáhnout na domovské stránce
softwaru a kopírují se pomocí příkazu cupsaddsmb do složky Samby /etc/samba/drivers. Tady je
nastavení, které jsem použil místo [printer$]:
[printers]
comment = Tiskarny
path = /var/spool/samba
browseable = no
public = yes
guest ok = yes
writable = no
printable = yes
printer admin = root
[print$]
comment = Tiskarna
path = /etc/samba/drivers
browseable = yes
guest ok = no
read only = yes
Pak bylo potřeba upravit v souboru cupsd.conf položku:
[hp5550]
comment = HP DeskJet 5550
path = /var/spool/samba
browseable = yes
printable = yes
public = yes
guest ok = yes
printer admin = root
ServerName jmeno_pocitace
v souboru mime.convs odkomentářovat řádek
application/octet-stream application/vnd.cups-raw 0 -
a v souboru mime.types odkomentářovat řádek
application/octet-stream
a do direktivy Listen, /printers a printers/name přidat:
CUPS pak bude přijímat požadavky všech počítačů, které budou žádat o tiskárnu.
Allow From All
Restartování Samby a zbytek se odehrál ve Windows. Při poklikání na tiskárnu mě systém vyzval k instalaci ovladačů. Instalace proběhla úspěšně a vytiskla se i zkušební stránka. Opravdu jednoduché...
Když šlo všechno jako po másle, rozhodl jsem se vyzkoušet tisk na tiskárně, která byla připojena lokálně k počítači s Windows. Používal jsem proto opět Sambu. Stačilo opět pár kliků myší a vše bylo hotovo.
Po vybrání názvu, ovladače atd. jsem určil URI tiskárny jako
a pro jistotu jsem si na konci ještě nechal vytisknout zkušební stránku.
smb://notebook/tiskarna
Poznámka: Mac OS X používá pro tiskové úlohy standartně CUPS, je to součást systému.
Upřímně řečeno, nedoufal jsem, že po 45 minutách bude vše hotovo. Měl jsem z tohoto démona radost, ale zároveň jsem byl chvíli nejistý, šlo to tak hladce...