Una descrizione di base del sistema di stampa CUPS. Pensato per Debian 11 (bullseye), ma dovrebbe andare bene per la maggior parte per quanto si trova in Debian 10 (buster).

Introduzione

Il sistema di stampa di Debian ha subito molti cambiamenti significativi negli ultimi anni, con molta parte della gestione delle stampe che sfrutta i progressi nella tecnologia delle moderne stampanti e la proliferazione delle stampanti IPP. Le stampanti moderne sono gestite da CUPS e supportate da iniziative di OpenPrinting come cups-filters. Nonostante questo, vengono ancora usati molte stampanti vecchie (non moderne) e i loro driver. Questa pagina insieme ad un'altra hanno lo scopo di servire gli utenti con entrambi i tipi di dispositivi di stampa.

Le stampanti vecchie (non moderne) necessitano di driver di stampa. Se un utente non è sicuro su cosa sia adatto alla sua stampante, un insieme esaustivo di driver e di PPD liberi può essere messo nel sistema con

apt install printer-driver-all

A seconda della stampante, può anche essere preferibile installare uno o più dei seguenti pacchetti:

Il sito web OpenPrinting è una buona fonte di informazioni per trovare la corrispondenza tra stampanti e driver liberi. Per una stampante che richiede un driver non libero, un utente deve vedere ciò che offre il produttore.

Stampa senza driver

Una parte del materiale nelle pagine nel Portale sulla stampa è applicabile all'installazione dei driver per stampanti (liberi e non liberi) e PPD e all'impostazione di una coda di stampa per le stampanti vecchie. Tuttavia è bene tenere a mente che i driver e i PPD sono deprecati in CUPS e da ultimo non verranno più supportati come lo sono ora. Questo è da un po' di tempo un obiettivo a lungo termine del progetto CUPS.

Gli utenti che hanno una stampante moderna sono sollecitati a considerare i punti seguenti e ad esplorare una soluzione di stampa senza driver per le loro necessità di stampa, indipendentemente dal fatto che la deprecazione sia un fattore motivante.

Installazione del software

CUPS e cups-filters sono il nucleo centrale del sistema di stampa ed entrambi vengono installati con

apt install cups

Questa installazione fornisce un sistema di stampa funzionante che è completamente adatto per l'uso con una stampante moderna senza l'installazione di alcun software aggiuntivo. Le stampanti vecchie richiedono l'installazione di un driver.

In alternativa, se lo si ritiene preferibile o necessario, un utente può installare manualmente una coda di stampa (remota o locale) con lpadmin, l'interfaccia web di CUPS o system-config-printer. Una stampa funzionante è solitamente garantita se una stampante moderna è impostata come stampante senza driver o se una vecchia stampante è supportata da uno dei pacchetti installati.

Riassunto

Utilità per l'impostazione della coda di stampa

Utilità di configurazione per un'installazione manuale di stampanti o code di stampa sono:

Se cups-browsed non è presente nel sistema o si pensa che non funzioni come dovrebbe, si può impostare una coda di stampa manualmente. Si dovrebbe anche controllare se code di stampa funzionanti siano state automaticamente installate da cups-browsed prima di un'impostazione manuale. Ciò può essere fatto con

lpstat -a

Un output non vuoto indica che è stata creata una coda locale. Un elemento di questo tipo può essere presente solo quando cups-browsed ha configurato automaticamente una coda o se l'utente l'ha fatto manualmente.

Anche guardare nella scheda Stampanti dell'interfaccia web di CUPS o nella schermata di inizio di system-config-printer può rivelare se è avvenuta una possibile configurazione automatica da parte di cups-browsed.

L'interfaccia web di CUPS

CUPS ha una interfaccia web per impostare una coda di stampa e amministrare le stampanti. Usare un browser per mostrare l'interfaccia che si trova in localhost:631 e per aggiungere una stampante attraverso la schermata di Amministrazione. Se sono richieste un nome utente e una password, vedere qui.

Qui sotto è mostrata una scherma di Aggiunta stampante per Debian 11. Ricordarsi che ipp-usb gestisce una stampante moderna. Una EPSON Stylus Photo RX420, una HP serie psc 1300 e una HP serie ENVY 4500 sono connesse via USB al computer. La ENVY 4500 è l'unica stampante moderna. Come si vedrà in seguito, questo è un fattore importante nella scelta di come impostare una coda di stampa per questo dispositivo.

SystemPrinting/printers-2.3.3.jpg

Le stampanti che sono solitamente collegate alla macchina in uso sono mostrate in questa categoria. La maggior parte degli utenti vorrà impostare una stampante connessa via USB. Un URI per un tale dispositivo è mostrato dopo che Continua viene attivato. La vecchia psc 1300 ha due voci; probabilmente è meglio scegliere la voce che ha un che inizia con hp:/usb dato che dà un più facile accesso allo scanner nel dispositivo. Con un driver nel sistema o fornito dall'utente il resto della configurazione della coda per le vecchie psc 1300 e EPSON Stylus dovrebbe completarsi con successo. L'amministrazione della coda dall'interfaccia web include funzionalità per modificarla o cancellarla, impostare opzioni predefinite per essa, mettere in pausa o riprendere la stampa, rifiutare lavori e modificare /etc/cups/cupsd.conf.

Se si guarda attentamente la categoria Stampanti di rete rilevate si nota che ENVY 4500 è elencata di nuovo. Questa voce non viene mostrata per nulla in buster e non viene mostrata in bullseye a meno che la stampante non comprenda il protocollo IPP-over-USB. bullseye ha ipp-usb installato è ciò di fatto trasforma la moderna ENVY 4500 con funzionalità IPP-over-USB in un dispositivo di rete, con la conseguenza che

La voce USB per la ENVY 4500 non può essere usata per impostare una coda di stampa funzionante quando bullseye è il sistema operativo.

La seconda sezione è per le stampanti o le code di stampa che sono state rilevate nella rete locale. Le vodi con @ nella loro descrizione sono code di stampa pubblicizzate da un server CUPS remoto. Una voce senza @ indica una stampante. Le stesse code di stampa sono rilevate automaticamente da cups-browsed e diventano disponibili come code locali, rendendo non necessaria la loro configurazione dall'interfaccia web, a meno che ciò non sia ciò che si vuole fare.

Una coda/stampante di rete rilevate dovrebbe poter essere aggiunta tanto facilmente quanto una stampante USB. La sua connessione viene rilevata per conto dell'utente e viene fornita nella pagina seguente. Se la connessione inizia con dnssd:// si dovrebbe selezionare RAW come Marca/Produttore nella terza pagina. Il server che riceve il lavoro farà il filtraggio perciò dovrebbe essere inviato non elaborato. A meno che la stampante stessa può elaborare il formato del documento del lavoro sottomesso, si deve scegliere un PPD per configurarla.

Per ciò che riguarda le stampanti moderne che capiscono il protocollo IPP-over-USB connesse via USB in bullseye: guardare le voci modello/driver nella terza pagina per le voci che contengono driverless o IPP Everywhere. Non ci si aspetti di ottenere una coda di stampa funzionante usando la voce della stampante sotto Stampanti locali.

La sezione Altre stampanti di rete richiede di specificare la destinazione per la coda/stampante remota, che può essere nella rete locale o distante chilometri. AppSocket è quasi sempre disponibile in una stampante di rete e altri dispositivi e richiede solo l'indirizzo IP della stampante e un numero di porta. Un URI Internet Printing Protocol (IPP) è la scelta preferita per la connessione ad un altro server CUPS perché è il protocollo nativo di CUPS. Un URI Line Printer Daemon (LPD) può essere preso in considerazione se il servizio di stampa remoto non supporta IPP in modo soddisfacente o per nulla. Come prima, quando una coda di stampa remota fa il filtraggio, scegliere RAW come Marca/Produttore.

system-config-printer

system-config-printer è uno strumento amministrativo che funziona in modo simile all'interfaccia web CUPS per la configurazione di stampanti e code di stampa, ma è un'applicazione nativa invece che una pagina web.

All'apertura system-config-printer presenta una schermata vuota o che mostra le code di stampa installate. Le code di stampa installate sono state impostate automaticamente da cups-browsed o manualmente dall'utente. Se nessuna di queste voci fornisce una coda di stampa funzionante o la stampante attesa non viene mostrata, può essere necessario aggiungere un'altra coda.

L'aggiunta di un'altra coda di stampa è una questione di attivare il pulsante Aggiungi. Sotto è mostrato il risultato da questa azione quando una EPSON Stylus Photo RX420, una HP serie psc 1300 e una HP serie ENVY 4500 sono connesse via USB al computer:

SystemPrinting/scp2020-1.jpg

Le differenze tra questa visualizzazione e ciò che è mostrato nell'interfaccia web CUPS sono piccole. Per esempio, la HP psc 1300 è mostrata solo una volta ma, se viene cliccata, verrano forniti due URI per la selezione. Come sopra, l'URI che inizia con hp:/usb è l'URI il cui uso è raccomandato. Anche dopo aver letto informazioni sulla interfaccia web di CUPS è bene ripetere che:

Per ciò che riguarda le stampanti moderne che comprendono il protocollo IPP-over-USB connesse via USB in bullseye: guardare sotto Stampanti di Rete e usare la connessione per IPP senza driver. Non ci si aspetti di ottenere una coda di stampa funzionante usando la voce della stampante nella prima sezione Dispositivi.

Stato della stampante

Scegliere una delle due opzioni sottostanti:

Opzione 1: LpStat

Per una visione completa sul fatto che lo schedulatore (cupsd) sia in esecuzione, quale sia la destinazione predefinita di sistema, se una coda locale stia accettando lavori e cosa debba ancora essere stampato, si può usare lpstat: per mostrare tutte le destinazioni disponibili (locali e remote).

In Debian 12

lpstat -t

In Debian 10

lpstat -l -e

Opzione 2: SystemCtl

Per vedere lo stato attuale dello schedulatore CUPS, usare sia sudo: sia systemctl:

In Debian 12

sudo systemctl status cups

Questa schermata mostra il risultato del comando sopra

text describing image

Printer Control

Per visualizzare o impostare le opzioni e i valori predefiniti per la coda di stampa:

lpoptions -p <print_queue_name> -l

Fermare e avviare code di stampa; accettare e rifiutare compiti di stampa inviati a una destinazione:

cupsdisable <print_queue_name>
cupsenable <print_queue_name>
cupsaccept <print_queue_name>
cupsreject <print_queue_name>

Annullare tutti i compiti in una destinazione e in aggiunta eliminare i file dei dati dei compiti:

cancel -a <print_queue_name>
cancel -a -x <print_queue_name>

Stampare su un PDF

Lo scopo principale di un sistema di stampa è di mettere del toner o dell'inchiostro su un supporto ed avere un output che abbia un aspetto professionale e che sia adatto alle necessità dell'utente. Tuttavia i file prodotti in varie fasi del ?processo di filtraggio possono anch'essi essere interessanti e utili per un utente. Per esempio, in passato convertire un file in PDF da un'applicazione non era un compito semplice. Una soluzione era usare cups-pdf come stampante PDF virtuale nel dialogo di stampa dell'applicazione. Il PDF di output non veniva inviato ad una vera stampante ma memorizzato sul disco. Da allora molte applicazioni hanno acquisito l'opzione Stampa su PDF e Esporta in PDF nei loro dialoghi e la situazione è migliorata.

cups-pdf è un filtro di backend che accetta un file PostScript e lo converte in un PDF usando Ghostscript. Funziona insieme al sistema di filtraggio di CUPS che diventa responsabile della produzione del PostScript necessario usando /etc/cups/ppd/PDF.ppd e del suo passaggio al backend. Il pacchetto che contiene il backend è il PPD sono installati con

  apt install printer-driver-cups-pdf

L'installazione imposta una coda di stampa con il nome PDF. La coda appare come una stampante nel dialogo di stampa di un'applicazione e nell'output di lpstat -t. La stampa dalla riga di comando viene fatta con

  lp -d PDF <file_to_be_converted>

Il file PDF prodotto è archiviato nella directory PDF nella directory home dell'utente, creata dopo l'invio del primo compito di stampa.

Un PDF può permettere o meno ricerche al suo interno o la copia di testo da esso. I PDF prodotti da file PostScript inviati ad una coda normalmente hanno queste funzionalità; i PDF da file di testo non le hanno perché vengono prima filtrati attraverso texttopdf.

Metodi alternativi per la produzione di PDF possono basarsi sull'uso di cupsfilter e cups-tea4cups.

Stampa da client Linux, al server CUPS o via rete, dalla CLI

In questo esempio si ha un router, 2 computer (client e server) ed una stampante. I computer sono connessi al router, la stampante compatibile con Linux è connessa al server via USB ("fai una cosa e falla bene") e si desidera poter inviare cose alla stampante dal client attraverso la rete.

Anche se qualcuno può preferire la comodità della stampa senza driver per questa configurazione, altri possono preferire evitare firmware proprietario.

Il server deve essere già impostato con:

Questo tutorial usa le seguenti variabili d'esempio e dovranno essere modificate per le proprie necessità:

Sul server, permettere le connessioni remote:

# cupsctl --remote-admin --remote-any --share-printers

Notare: questo comando fa modifiche alla configurazione in /etc/cups/ e riavvia il servizio CUPS

Si dovrebbe ora essere in grado di connettersi al server attraverso il client sulla rete, facendo una richiesta HTTP attraverso un browser web o curl a http://10.0.0.2:631

Ora, nel client, per poter inviare dati al server, installare il pacchetto CUPS e avviarlo:

# apt install cups
# service cups start

Notare che il software CUPS è necessario sia nel server che nel client.

Dopo, nel client, per far sì che i comandi di stampa siano inviati al posto giusto, aggiungere quanto segue:

# echo 'ServerName 10.0.0.2' > /etc/cups/client.conf
# chmod o+r /etc/cups/client.conf

Nota bene: il permesso o+r è essenziale per permettere agli utenti non root di stampare.

L'utente di esempio nel client deve essere aggiunto al gruppo lp:

# usermod -a -G lp example_user

Si dovrebbe essere ora in grado di vedere la stampante dal client, dall'utente d'esempio:

example_user $ lpstat -t
scheduler is running
device for example_printer: manufacturer_name:/usb/full_product_name

Ora, per stampare, basta semplicemente fare:

example_user $ lp -d example_printer file.pdf
request id is example_printer-1 (1 file(s))

Nota importante: un server CUPS con un uso infrequente ha requisiti di processore/RAM/dischi molto bassi, perciò usare un computer efficiente dal punto di vista energetico.

CUPS come server di stampa per macchine Windows

Si può impostare CUPS per permettere a macchine Windows di stampare tramite un server CUPS usando un indirizzo http.

Come prima cosa installare il pacchetto samba. Quando viene chiesto se usare WINS, rispondere .

$ apt install samba

Quindi configurare il proprio file /etc/cups/cupsd.conf.

# Our private connection we listen to
Listen *:49631

# Allow machines on local network to use printers
<Location /printers>
  Order allow,deny
  Allow 192.168.0.*
  Allow 192.168.1.*
</Location>

Questo fa sì che si sia in ascolto sulla porta 49631 da qualsiasi rete. Si può usare un altro numero di porta oltre a 631. Si noti che porte dinamiche o private, come specificato da IANA sono nell'intervallo da 49152 a 65535. Inoltre, questo file permette solo ai computer nella rete locale di stampare con le stampanti CUPS.

Dopo aver fatto questo, riavviare il demone CUPS:

# service cups restart

Ora su ciascuna macchina Windows, scegliere l'installazione di una stampante di rete e quindi scegliere l'installazione di una stampante su Internet o sulla rete di casa o ufficio. L'URL da usare dovrebbe essere:

http://<nome_host_del_server_cups>:49631/printers/<nome_stampante>

Da ultimo, il driver da installare è nella sezione Generica con l'etichetta MS Publisher Color Printer.

CUPS e Samba

Questa sezione deve essere aggiornata perché è possibile impostare un server di stampa attraverso la condivisione di stampa samba semplicemente caricando i driver.

Quando si stampa su stampanti Windows in un dominio NT usando SMB, l'URI del device dovrebbe essere:

  smb://nomeutente:password@nomehost/server/nomestampante

Ciò permette a Samba di fare l'autenticazione con un controllore del dominio per l'accesso alla coda di stampa.

Si può anche omettere la parte nomeutente:password@ quando il server non richiede autentificazione. Come nomehost vanno bene sia il nome di una macchina, sia un indirizzo IP. Per determinare il nomestampante si può usare lo strumento a riga di comando smbclient. Eseguire il comando seguente, dove nomecomputer si riferisce al nome della macchina che condivide la stampante:

  smbclient -L nomecomputer

Controllare nell'output le voci con tipo (Type) "Printer"»:

$ smbclient -L base

 Sharename Type Comment
 --------- ---- -------
 print$ Disk Druckertreiber
 HPOffice Printer HP Officejet J4500 Series
 ADMIN$ Disk Remoteadmin
 C$ Disk Standardfreigabe

L'URL risultante dall'output sovrastante sarebbe

  smb://base/HPOffice

Quando si stampa con una stampante CUPS in Debian da una macchina che si connette attraverso Samba, potrebbe essere necessario impostare una classe CUPS per far sì che le cose funzionino.

Condivisione di stampa usando Macintosh come client e Debian come server

Se si ha una stampante su una macchina Debian e si vuole condividerla con un Macintosh, in modo che il Mac possa stampare con la stampante basata su Debian, provare quanto segue:

1. Usare CUPS per configurare la stampante in Debian come descritto sopra. Lo strumento Gnome di configurazione della stampante funziona bene e il modo sicuro al 100% è di usare la configurazione di CUPS tramite browser.

2. Sul Mac (OS X 10.4+) avviare "Print and Fax" dalle Preferenze di sistema. Usare il tasto + per aggiungere una stampante.

3. Cercare prima nella scheda "Default" (Predefinito). Se la condivisione automagica delle stampante ha funzionato e il Mac è connesso correttamente alla rete locale, allore la stampante Debian dovrebbe essere già visibile nell'elenco. Basta selezionarla e usare il driver di stampa raccomandato. L'esperienza di ciascuno può essere diversa, ma non si può sbagliare di molto se si sceglie un driver che corrisponde a quello che si sta usando in Debian. Perciò, per esempio, potrebbe essere utile provare ad usare i driver Gutenprint in entrambe le situazioni.

4. Se la propria stampante non è visibile nella scheda Default, allora provare ad aggiungerla nella scheda "IP". Scegliere IPP come protocollo, fornire il completo indirizzo IP del server nel riquadro per l'indirizzo e nel riquadro per la coda (Queue) inserire "printers/<nome-della-coda-in-debian>". Nei riquadri Nome e Posizione mettere qualsiasi cosa aiuti a ricordarsi quale stampante sia e scegliere un driver di stampa che corrisponda a quello che è stato usato per impostare la stampante in Debian. Da ultimo incrociare le dita, trattenere il respiro, recitare una preghiera/incantesimo/formula magica e premere il pulsante "Aggiungi".

Come si dice: le cose non sono uguali per tutti.

Stampare immagini

Le foto di qualità professionale possono essere ottenute utilizzando una carta fotografica lucida di alta qualità con una stampante a getto d'inchiostro, prestando attenzione al momento di presentare il lavoro di stampa. La stampa dal programma di fotoritocco The Gimp produce ottimi risultati. La finestra di dialogo di stampa varia a seconda della stampante utilizzata; le impostazioni più importanti sono: il tipo di carta, fotografica lucida o qualsiasi tipo si usi, e il tipo di immagine, "fotografia". Anche la dimensione dell'immagine stampata viene regolata nella finestra di dialogo della stampa.

Vedere anche