6. Software di spool

Fino a poco tempo fa, la scelta per gli utenti di software libero era semplice: tutti usavano lo stesso vecchio lpd tirato fuori parola per parola dal codice BDS Net-2. Ancora oggi alcuni venditori forniscono questo software: ma le cose stanno cambiando. Sistemi di tipo SVR4, incluso Solaris, includono un pacchetto di spool di stampa completamente diverso, incentrato su lpsched.

Oggi c'è un buon numero di sistemi tra cui scegliere. Sono tutti descritti sotto; si leggano le descrizioni per fare la propria scelta. CUPS è una buona scelta ed è raccomandato per la maggior parte degli utenti; ha un eccellente supporto per Postscript, offre supporto IPP, un'interfaccia web e diverse altre funzioni. Per ambienti di lavoro basati principalmente su stampanti di rete Postscript, un'altra scelta è rappresentata da un programma front-end come GPR con LPRng; può manipolare direttamente le opzioni PPD ed ha un'interfaccia carina.

6.1. CUPS

CUPS oggi è diventato il sistema di stampa predefinito di molte distribuzioni. Cosa rende CUPS diverso dal resto? CUPS è un'implementazione di IPP (Internet Printing Protocol), un nuovo standard che tenta di risolvere alcune delle mancanze del vecchio protocollo LPD. Inoltre CUPS supporta LPD, SMB e AppSocket (JetDirect) con funzionalità ridotte. L'implementazione di CUPS è stata sviluppata da Michael Sweet di Easy Software Products; CUPS è distribuito sotto GPL. Dato che è un nuovo protocollo, IPP ha diversi vantaggi sul vecchio protocollo LPD:

Oggi tutti i maggiori venditori di sistemi operativi supportano attivamente IPP, così come i maggiori venditori di stampanti. IPP è il protocollo di stampa predefinito in Windows 2000 (sarà necessario installare IIS) e potrebbe essere una scelta migliore per gli utenti di software libero rispetto al protocollo proprietario SMB. Tuttavia, su Windows 2000 è possibile scaricare automaticamente solo il driver di stampa di SMB e non quello di IPP: questa potrebbe essere una ragione per gli amministratori di rete con molti client Windows per scegliere la condivisione di stampanti con SMB usando Samba e CUPS.

CUPS include diverse funzioni molto buone, tra cui una gestione delle opzioni ragionevole; interfacce web, grafiche e a linea di comando; e un sistema di filtraggio basato su mime con un forte supporto per PostScript.

Parecchi set di PPD possono essere usati con CUPS:

Incorporati

L'installazione predefinita di CUPS contiene PPD generici validi per le stampanti Epson ad aghi a 9 e 24 pin, per le Epson Stylus Color, per le stampanti Stylus Photo, per le HP Laserjet, per le stampanti DeskJet e per le stampanti per etichette Dymo. Si potranno quindi usare molti modelli di stampanti, ma senza l'accesso alle caratteristiche più specifiche dei modelli.

Foomatic

Foomatic è in grado di generare un PPD utilizzabile con ogni driver di stampante che sia completamente dettagliato nel database di linuxprinting.org. Il PPD verrà usato con uno script di backend chiamato foomatic-rip, che usa driver liberi. Al momento si può trovare supporto per un numero piuttosto ampio di stampanti. Foomatic è la base per il supporto per stampanti non Postscript in molte distribuzioni GNU/Linux. CUPS e Foomatic stanno diventando abbastanza popolari e attualmente rappresentano il sistempa di stampa raccomandato nella maggior parte delle situazioni.

PPD per Postscript

CUPS può usare direttamente i file PPD forniti dai venditori per le stampanti Postscript. Spesso questi file sono offerti insieme ai driver di Windows per la stampante, o si possono trovare sul sito web del venditore della stampante. Dovendo scegliere fra un driver per Windows 9x e uno per Windows NT/W2K, si scelga quello per Windows NT. Anche Adobe distribuisce file PPD per molte stampanti Postscript.

ESP Print Pro

Easy Software Products, Inc. vende CUPS insieme ad una raccolta di driver proprietari. Benché non siano software libero, questi driver fanno funzionare molte stampanti comuni. L'insieme dei driver è piuttosto costoso se paragonato al costo di un'unica stampante supportata, ma sicuramente è utile. Il pacchetto include strumenti grafici front-end.

Gimp-Print

I drivers Gimp-Print sono driver di alta qualità per stampanti Canon, Epson, Lexmark, e PCL che possono essere usati con Ghostscript, CUPS, Foomatic e Gimp.

OMNI

Omni è un pacchetto fatto da IBM, che ora contiene supporto per più di 450 stampanti. Il driver per stampanti OMNI è distribuito da IBM sotto licenza LGPL.

HPIJS

HPIJS supporta circa 250 stampanti HP fornendo un'eccellente qualità di stampa (al momento solo tramite Foomatic). Dalla versione 1.0.1, la clausola "Solo prodotti hp" è stata rimossa dalla licenza e i driver sono distribuiti sotto licenza BSD.

Il programma di terze parti XPP (si veda Figura 4) offre un'interfaccia grafica per le funzionalità utente di CUPS molto gradevole, inclusa una meravigliosa interfaccia per le opzioni da indicare al momento della stampa (mostrate in Figura 5). Per informazioni sull'uso di XPP, si veda la Sezione 3.4.2.

6.2. LPD

LPD, il demone di stampa BDS Unix originale, è stato per anni lo standard di Unix. È disponibile per ogni tipo di Unix, e offre un set di funzioni piuttosto minimale nato dalle necessità dell'era dei sistemi timesharing. Malgrado la sua storia alquanto particolare, è ancora utile oggi come spooler di stampa di base. Per renderlo veramente utile con le stampanti moderne sarà necessario molto lavoro extra, creando script per i filtri complementari e programmi front-end. Ma esiste, e fa tutto il lavoro.

LPD è anche il nome dato al protocollo di stampa di rete dalla RFC 1179. Questo protocollo di rete non è usato solo dal demone LPD, ma essenzialmente da ogni server di stampa in rete, da ogni stampante di rete, e da qualunque altro spooler di stampa presente; LPD è il minimo comun denominatore della stampa via rete.

LPRng(si veda la Sezione 6.3) è un'implementazione di gran lunga migliore rispetto a quella regolare del modello di base di LPD; se si deve usare LPD, si consideri l'uso di LPRng. Non sono necessari molti riti voodoo per fargli fare quello che si vuole, e sono riti ben documentati. LPRng è essenzialmente un'implementazione avanzata di LPD con un grado di sicurezza migliore e con più funzioni.

C'è un buon numero di sorgenti di LPD in giro. Si potrebbe sostenere che il possessore ufficiale sia qualche tipo di BDS Unix, ma volenti o nolenti chiunque può aver implementato cambiamenti che si sarebbero quindi incrociati in modi sconosciuti, così che è difficile dire con esattezza quale LPD si stia usando. Tra gli LPD disponibili con più facilità ce n'è uno offerto da GNUlpr con modifiche minori che rende l'interfaccia utente molto più flessibile. GNUlpr permette di specificare le opzioni da linea di comando usando il flag -o; le opzioni vengono poi passate attraverso i filtri, in modo analogo alle funzioni offerte da un buon numero di venditori Unix tradizionali, e simile a (anche se incompatibile con) il meccanismo dell'opzione -z di LPRng.

Se si decide di usare LPD, il modo migliore è tramite un front-end. Ce ne sono diversi tra cui scegliere; KDEPrint, GPR (si veda la Sezione 3.4) e XPP sono forse i migliori. Ne esistono altri; fatemi avere informazioni al riguardo.

6.3. LPRng

Alcuni venditori GNU/Linux mettono a disposizione LPRng, un'implementazione molto meno vecchia dello spool di stampa LPD. LPRng è più facile da amministrare per ampie installazioni (come dire: più di una stampante, qualunque stampante seriale, o qualche particolare stampante di rete non-lpd) e il suo codice di base è fatto meno terribilmente a casaccio di quello fornito con lpd. Può perfino pretendere in tutta onestà di essere sicuro: non contiene binari SUID, e supporta l'autenticazione tramite PGP o Kerberos.

LPRng include anche alcune impostazioni di esempio adatte per stampanti di rete comuni (principalmente HP LaserJet) che includono alcune capacità di autenticazione. LPRng usa più o meno lo stesso modello di filtri di base di BDS lpd, quindi il supporto LPD offerto dal sito web linuxprinting.org si può applicare anche a LPRng. Questo può aiutare ad usare driver di software libero con molte stampanti.

LPRng è distribuito sia sotto licenza GPL che sotto licenza Artistic.

6.4. PPR

PPR è uno spooler incentrato su Postscript che include una rudimentale capacità di analisi dalla quale trae diverse belle funzioni. Include buone capacità di autenticazione, un buon supporto per Appletalk, SMB e per client LPD, e una migliore gestione degli errori rispetto a lpd. PPR, come ogni altro spooler, può usare Ghostscript per gestire stampanti non Postscript.

PPR venne scritto, ed è attualmente usato, al Trinity College. La licenza è di tipo BSD; libera per ogni uso ma è obbigatorio citare i realizzatori.

6.5. Altri

6.5.1. PDQ

PDQ sta per "Print, Don't Queue" ("Stampa, non accodare" n.d.t.), e il modo in cui lavora riflette questo modello. Il sistema di stampa di PDQ non è incentrato su un demone, ma incorpora una pratica sintassi di configurazione del driver che include la capacità di dichiarare opzioni di stampa, e uno strumento ad interfaccia grafica o a linea di comando per gli utenti tramite il quale specificare le opzioni; gli utenti usano un finestra di dialogo per specificare risoluzione, duplexing, tipo di carta, ecc.

Usare tutti i filtri come utente porta un certo numero di vantaggi: i problemi di sicurezza derivanti da Postscript vengono superati, lavori di stampa di file multipli LaTeX possono essere stampati effettivamente come file dvi, e così via.

PDQ non è esente da difetti: in particolare, processa l'intero lavoro di stampa prima di mandarlo alla stampante. Questo significa che, per grandi lavori, PDQ potrebbe semplicemente essere inutilizzabile: si potrebbe arrivare ad avere centinaia di mega copiati avanti e indietro sul disco. Ancora peggio, per driver lenti come quelli di qualità migliore a getto d'inchiostro, il lavoro di stampa non verrà eseguito finché Ghostscript e il driver non avranno finito di processarlo. Questo potrebbe succedere anche minuti dopo l'invio.

PDQ ha però dei vantaggi; è un modello semplice, che non impedisce il controllo da parte dell'utente. E il normale percorso di controllo non incrocia i confini della sicurezza, così che non soffre dei bug di sicurezza che vengono sempre trovati in altri sistemi. E per finire, è leggero.

Comunque PDQ non è attivamente sviluppato. Un nuovo curatore sarà il benvenuto.

6.5.2. GNUlpr

GNUlpr iniziò la sua vita come lavoro sponsorizzato da HP a VA Linux. Sfortunatamente, GNUlpr ora è praticamente morto.

6.5.3. CPS

Il Coherent Printing System è un set di script in Perl chiamati "lpr", "lpd", "lprm", e "lpq". Rimpiazzano i programmi con lo stesso nome normalmente forniti con i sistemi Linux.

6.5.4. CEPS

Il Cisco Enterprise Print System fu sviluppato da Damian Ivereigh quando era sysadmin alla Cisco. Fece molto più di ciò per cui era stato assunto, sviluppando un nuovo sistema di stampa per migliorare un sacco di problemi amministrativi. Cisco autorizzò il rilascio del software liberamente sotto licenza GNU General Public License. L'installazione di CEPS comunque sarà vantaggiosa solo per grandi organizzazioni.