Common Unix Printing System: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Il filtro: corretti link |
mNessun oggetto della modifica |
||
(93 versioni intermedie di 64 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = Common unix printing system
Il '''Common Unix Printing System''' ('''CUPS''') è un sistema di [[stampa]] modulare per [[Sistema operativo|sistemi operativi]] di tipo [[Unix]] che permette ad un [[computer]] di funzionare come un efficace [[print server]].▼
|Logo =
|Screenshot = CUPS.svg
|Didascalia = Logo del progetto
|Sviluppatore = [[Apple|Apple Inc.]]
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = linux
|SistemaOperativo2 = unix
|SistemaOperativo3 = macosx
|Linguaggio =
|Genere = printer spooler
|Licenza = [[GNU General Public License]]<br />[[GNU Lesser General Public License]]
|SoftwareLibero = sì
|Lingua =
}}
▲Il '''Common Unix Printing System''' ('''CUPS''') è un
Un computer con CUPS in esecuzione è in grado di accettare stampe da altri computer [[client]], elaborarle ed inviarle alla [[stampante]] richiesta.
La gestione e configurazione di CUPS può essere effettuata con una delle molteplici [[Interfaccia grafica|interfacce grafiche]] disponibili per le diverse piattaforme software oppure attraverso l'interfaccia [[web]] integrata.
== Storia ==
Michael Sweet fondatore della [[Easy Software Products]] iniziò a sviluppare CUPS nel 1997. La prima versione pubblica venne distribuita nel 1999.<ref name="BetaAnnouncement">Michael Sweet (9 giugno, 1999), [http://linuxtoday.com/news_story.php3?ltsn=1999-06-09-014-10-NW-SM "A Bright New Future for Printing on Linux"], ''[[Linux Today]]'' & followup from Michael Sweet (11 giugno, 1999), [http://linuxtoday.com/news_story.php3?ltsn=1999-06-11-018-10-NW-SM "The Future Brightens for Linux Printing"], ''Linux Today''.</ref> Il progetto iniziale di CUPS prevedeva l'utilizzo del protocollo [[Line Printer Daemon protocol|LPD]], ma le limitazioni di LPD e le sue incompatibilità spinsero Sweet a utilizzare il protocollo [[Internet Printing Protocol]] (IPP). CUPs venne rapidamente utilizzato come sistema di stampa di default da molte distribuzioni Linux come [[Red Hat]]. Nel marzo 2002 [[Apple|Apple Computer]] decise di utilizzare CUPS come sistema di stampa per il [[macOS]] a partire dalla versione 10.2<ref name=AppleAdoption>''Easy Software Products'', [https://www.cups.org/articles.php?L68+I10+T+P1+Qapple CUPS Licensed for Use in Apple Operating Systems!] {{webarchive|url=https://web.archive.org/web/20060720053736/http://www.cups.org/articles.php?L68+I10+T+P1+Qapple |data=20 luglio 2006 }}, 1º marzo, 2002.</ref> Nel febbraio 2007 Apple. Inc decise di acquistare il [[codice sorgente]] del progetto e di assumere Sweet come capo progetto.<ref name=ApplePurchase>"CUPS",[https://www.cups.org/articles.php?L475 CUPS Purchased by Apple Inc.] {{webarchive|url=https://web.archive.org/web/20070715051229/http://www.cups.org/articles.php?L475 |data=15 luglio 2007 }}, 11 luglio 2007.</ref>
==Dettaglio del funzionamento==
[[File:Cups simple.svg|150px|right]]
I dati sono inviati ad uno scheduler, che li manda a sua volta al filtro, il quale li converte in un formato adatto alla stampante. Il sistema di filtraggio passa i dati così preparati ad un'[[interfaccia (informatica)|interfaccia]] (''[[back end]]'') che invia i dati direttamente alla stampante locale oppure su una connessione di rete.<br />Il processo di filtraggio utilizza il linguaggio PostScript come linguaggio intermedio tra il dato originale da stampare ed il formato inviato alla stampante.
Il principale vantaggio di CUPS è di essere un sistema modulare e [[standard (informatica)|standard]], in grado quindi di operare con numerosi formati di dati e interfacciarsi con i numerosi modelli di stampanti presenti sul mercato, ciascuna in grado di accettare un formato o un linguaggio specifico.
Per confronto i sistemi di stampa del System V o il Berkeley printing systems sono incompatibili tra loro e richiedono
Con CUPS è molto più facile sviluppare driver in grado di funzionare nativamente sul print server [[Unix]].
===Lo scheduler===
Lo scheduler ha il compito di gestire i lavori in stampa, la priorità nella coda (l'ordine con cui sono inviati alla periferica), la loro eventuale cancellazione ecc.<br />Per questo scopo utilizza il protocollo Internet Printing Protocol (IPP), a sua volta basato sull'[[Hypertext Transfer Protocol|HTTP]]. Lo scheduler accetta le richieste in formato HTTP/1.1 e fornisce una interfaccia web per la gestione e la configurazione del server, oltre che per fornire documentazione sul suo uso.
Lo scheduler include un ''modulo di autorizzazione'' che controlla l'accesso dei messaggi IPP e HTTP, che una volta autorizzati sono inviati al modulo client, che soddisfa le richieste. Questo modulo esegue anche i processi [[Common Gateway Interface|CGI]] esterni necessari per le funzioni dell'interfaccia web. I messaggi di risposta sono reinviati al modulo di IPP che li sottopone alla validazione dell'[[URL]], per prevenire tentativi di aggiramento dell'autenticazione.
Nello scheduler è compreso un ''modulo di configurazione'' che attinge al file di configurazione di CUPS all'avvio del sistema. Un altro modulo (''logging module'') si occupa di registrare (loggare) tutti gli eventi di sistema, accessi, errori, lavori. Il modulo principale dello scheduler si occupa di gestire le comunicazioni con i client e coordinare i diversi moduli descritti.
Altri moduli utilizzati sono il ''modulo MIME'' che gestisce i tipi [[MIME]] e il database utilizzato dai filtri per la conversione dei dati. Un ''modulo PPD'' che gestisce la lista dei file con i dati [[Postscript Printer Description]], un modulo che mantiene una lista delle periferiche disponibili e moduli che gestiscono le singole stampanti.▼
===Il filtro===▼
Il cuore di CUPS è la capacità di convertire i molteplici formati di dati in entrata nei formati adatti alle diverse stampanti.<br />Questa operazione viene fatta sul server attraverso una serie di passaggi intermedi. Il riconoscimento dei dati ricevuti è effettuato utilizzando il sistema dei tipi MIME ([[Multipurpose Internet Mail Extensions]]). Questo è uno standard usato su Internet per la composizione delle [[e-mail]] ma è comunemente impiegato per determinare la natura di un [[file]].▼
====Il database MIME====▼
▲Altri moduli utilizzati sono il ''modulo MIME'' che gestisce i tipi [[MIME]] e il database utilizzato dai filtri per la conversione dei dati. Un ''modulo PPD'' che gestisce la lista dei file con i dati Postscript Printer Description, un modulo che mantiene una lista delle periferiche disponibili e moduli che gestiscono le singole stampanti.
Quando CUPS è avviato vengono caricati due file [[database]]: <code>mime.types</code> e <code>mime.convs</code>.<br /><code>mime.types</code> contiene un elenco dei formati di [[file]] che CUPS può accettare, mentre <code>mime.convs</code> associa ciascun tipo MIME con il programma in grado di elaborarlo.
Il file <code>mime.types</code> ha la sintassi seguente:
mimetype { [estensioni] | [pattern-matching] }
Per esempio, volendo riconoscere un file [[HTML]] si può aggiungere il codice:
▲===Il filtro===
text/html html htm \
printable(0,1024) + (string(0,"<nowiki><HTML></nowiki>") string(0,"<!DOCTYPE"))
▲Questa operazione viene fatta sul server attraverso una serie di passaggi intermedi. Il riconoscimento dei dati ricevuti è effettuato utilizzando il sistema dei tipi MIME ([[Multipurpose Internet Mail Extensions]]). Questo è uno standard usato su Internet per la composizione delle [[e-mail]] ma è comunemente impiegato per determinare la natura di un [[file]].
In questo esempio la prima linea contiene il nome del tipo MIME e le estensioni caratteristiche del file.
La seconda linea contiene una serie di istruzioni che portano a riconoscere il file come costituito per il primo [[kilobyte]] da caratteri stampabili in cui è compresa una [[stringa (informatica)|stringa]] caratteristica del markup HTML. Se il file risponde a queste caratteristiche è contrassegnato come tipo MIME ''text/html''.
Il file <code>mime.convs</code> ha la sintassi:
▲====Il database MIME====
origine destinazione peso programma
Il campo ''origine'' è il tipo MIME ottenuto precedentemente, ''destinazione'' definisce il formato che si vuole in uscita, ''peso'' determina il grado di priorità per due filtri simili e ''programma'' è il nome del programma da utilizzare per la conversione.
Un esempio di <code>mime.convs</code> è il seguente:
text/plain application/postscript 50 texttops
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
image/* application/vnd.cups-postscript 50 imagetops
image/* application/vnd.cups-raster 50 imagetoraster
====Il processo di filtraggio====
Il modulo di filtraggio richiede in ingresso sei parametri:
* il nome della coda di stampa o del filtro
* il numero identificativo del lavoro di stampa
* il nome dell'utente proprietario del lavoro
* il nome del lavoro
* il numero di copie da stampare
* eventuali opzioni tra cui il nome del file di origine nel caso non sia lo standard input
Per mezzo del database MIME viene riconosciuto il tipo di file e scelto di conseguenza il programma di conversione appropriato; per esempio una immagine viene elaborata diversamente rispetto ad un file HTML o [[PDF]].
I dati possono essere convertiti in [[PostScript]] oppure direttamente in dati [[Grafica raster|raster]] (rappresentazione [[pixel]] per pixel dell'immagine da stampare). Se è impiegato il PostScript, è necessario un pre-filtro che invii i dati ad un successivo convertitore PostScript. In questo passaggio è possibile specificare opzioni come l'intervallo di pagine da stampare, l'ordine di stampa, la fascicolatura ecc.<br />Dopo il "prefiltraggio", i dati possono seguire una di queste tre vie:
* andare direttamente al backend, nel caso la stampante accetti il PostScript
* attraversare un altro filtro, per esempio il ''foomatic'' di [http://www.linuxprinting.org linuxprinting.org]
* essere convertiti da Ghostscript in un file raster intermedio specifico di CUPS (tipo MIME ''application/vnd.cups-raster''). Il formato raster intermedio è inviato ad un filtro finale che lo converte nel formato raster specifico per la stampante in uso.
In CUPS sono inclusi i filtri standard da raster a [[Printer Control Language|PCL]], da raster a ESC/P o ESC/P2 (un linguaggio della Epson ora superato da ESC/P-Raster) e da raster a Dymo.
===I backend===▼
I backend sono le interfacce finali che inviano i dati alle singole stampanti. Diversi tipi di interfacce sono gestite da CUPS: porta parallela, porta [[seriale]], [[USB]], sistemi di rete IPP, [[JetDirect]], protocolli LPD e SMB.▼
Esistono molte altre alternative utilizzabili con CUPS. La Easy Software Printing (ESP) Solutions, creatrice di CUPS, ha sviluppato propri filtri: Gimp-Print è una serie di driver di alta qualità adatto per molte stampanti ink-jet. Turbo-Print per [[Linux]] è un'altra serie di driver per una ampia gamma di stampanti.
==Collegamenti esterni==▼
▲I
== Note ==
<references />
== Altri progetti ==
{{interprogetto}}
▲== Collegamenti esterni ==
* {{Collegamenti esterni}}
{{Portale|Software libero}}
|