Le système d'exploitation GNU-Linux/Le serveur d'impression CUPS

Un livre de Wikilivres.



Introduction[modifier | modifier le wikicode]

CUPS (Common Unix Printing System) est un serveur d'impression. CUPS permet ainsi d'imprimer sur une imprimante accessible sur le réseau ou locale (généralement connectée avec un câble USB). La communication avec les imprimantes utilise le protocole IPP (Internet Printing Protocol).

CUPS est très simple à configurer. De ce fait, il est de plus en plus souvent utilisé en remplacement de LPR (premier serveur sous UNIX).

Site Internet : www.cups.org

Le site linuxprinting.org liste les imprimantes compatibles avec CUPS.

Généralement, un système linux moderne est désormais livré avec les utilitaires nécessaire pour détecter, configurer et utiliser des imprimantes.

Installation (Debian)[modifier | modifier le wikicode]

L'installation initiale de CUPS sous Debian peut se faire avec la commande suivante :

 $ sudo apt install cups cups-pdf cups-bsd foomatic-db-compressed-ppds openprinting-ppds

Le paquet cups-pdf fournit une imprimante virtuelle qui permet de générer des fichiers PDF.

Le paquet cups-bsd fournit les commandes traditionnelles lpr, lpq et lprm.

Les paquets foomatic-db-compressed-ppds et openprinting-ppds contiennent des descriptions PPD (PostScript Printer Description) pour un très grand nombre d'imprimantes.

D'autres paquets de PPD sont également disponibles comme hp-ppd ou hpijs-ppds. Mais aussi le meta-paquet printer-driver-all-enforce qui englobe une vingtaine de paquets de différents drivers CUPS.

Configuration côté serveur[modifier | modifier le wikicode]

CUPS se configure via une interface web accessible par l'adresse http://localhost:631/ .


  • On Clique sur Add Printer pour ajouter une imprimante
  • On spécifie son nom, sa localisation physique et sa description. Exemple : HP1200, Salle D11, L'imprimante laser de la salle D11
  • On choisit ensuite le périphérique correspondant au mode de connexion de l'imprimante avec le PC (ex: port parallèle, USB, ipp, http...etc)
  • Si l'imprimante est partagée par un autre serveur CUPS, il faut spécifier l'adresse IPP de l'imprimante, comme par exemple : ipp://192.168.30.210/printers/hp1200
  • On choisit ensuite le constructeur de l'imprimante. Dans le cas où votre constructeur n'est pas dans la liste, il faut télécharger sur Internet le fichier PPD (Printer Postscript Description) correspondant et utiliser le bouton Parcourir pour uploader le fichier
  • On choisit ensuite le driver correspondant au modèle de l'imprimante. Certains drivers sont les mêmes pour des imprimantes différentes. Si on ne trouve pas son imprimante, il faut aller sur www.linuxprinting.org pour connaitre la compatibilité de l'imprimante avec un autre driver
  • Pour valider les modifications, on s'authentifie avec le compte root pour que le logiciel puisse écrire le fichier de configuration de CUPS


Fichier de configuration[modifier | modifier le wikicode]

Le fichier principal de configuration de CUPS est /etc/cups/cupsd.conf. Il faut le modifier pour indiquer à quel réseau on partage les imprimantes.

Tout d'abord, on indique à CUPS d'écouter sur toutes les interfaces réseaux. On remplace Listen localhost:631 par :

 Listen *:631

Dans la balise <Location />, il faut rajouter "Allow" suivi de l'adresse du réseau sur lequel se trouve l'imprimante afin de permettre à mon réseau d'accéder à celle-ci.

 # Restrict access to the server...
 <Location />
   Order allow,deny
   Allow localhost
   Allow 192.168.30.0/24
 </Location>

Lorsque ce fichier est modifié, il faut relancer le service :

 # /etc/init.d/cupsys restart

Configuration côté client / utilisateur[modifier | modifier le wikicode]

Interface(s) graphiques[modifier | modifier le wikicode]

Des outils d'interface graphique permettant d'accéder au système CUPS existent :

gtklp (Gtk/Gnome)
system-config-printer-gnome (Gtk/Gnome)


Interface web[modifier | modifier le wikicode]

Comme pour la configuration côté serveur, on configure CUPS côté client via l'interface WEB.

Dans la procédure décrite ci dessus, au lieu de spécifier un périphérique local (port parallèle, USB ou autre), on spécifie l'adresse IPP de l'imprimante.

Exemple:

ipp://192.168.30.210/printers/HP1200

ou (sous Windows) :

 http://192.168.30.210:631/printers/HP1200

Impression[modifier | modifier le wikicode]

Les imprimantes sont normalement utilisables via les applications qui ont besoin d'imprimer (menu «Imprimer» !) : suite bureautique, navigateur internet...

Néanmoins, il est possible de les utiliser sans passer par une application, et même de contrôler directement l'état des imprimantes, en utilisant des commandes spécifiques du système.

Les commandes d'impression[modifier | modifier le wikicode]

Ces commandes sont fournies par le paquet cupsys-bsd installé précédement.

La commande lpr
permet d'imprimer un fichier :
$ lpr nom_fichier

Pour imprimer sur une imprimante en particulier :

$ lpr -P nom_imprimante nom_fichier

Pour spécifier le nombre de copies (ici 2 copies) :

$ lpr -#2 nom_fichier
La commande lpq
permet d'afficher la file d'impression (queue) et connaître les numéros de "job" :
$ lpq
HP1200 is ready and printing
Rank    Owner   Job     File(s)                         Total Size
active  alex    12      fstab                           1024 bytes
1st     root    13      fstab                           1024 bytes
L'imprimante HP1200 est opérationnelle et en cours d'impression. C'est l'impression de l'utilisateur alex qui est en cours.
L'impression de l'utilisateur root est en première position de la file d'attente.

Pour voir la file d'attente d'une imprimante en particulier :

$ lpq -P nom_imprimante
La commande lprm
(lp remove) permet de supprimer une impression de la file d'attente à l'aide de son numéro de "job" :
$ lprm num_job   

Pour supprimer toute la file d'attente (cette action n'est permise que pour le compte root) :

# lprm -a
La commande lpstat
(lp statistiques) permet d'obtenir diverses statistiques
  • La liste des imprimantes installées et l'imprimante par défaut
$ lpstat -s
  • etc...

Supervision[modifier | modifier le wikicode]

La supervision s'intéresse au suivi du bon fonctionnement et à la détection (et correction!) des problèmes.

Logs[modifier | modifier le wikicode]

Le premier outil de supervision est l'examen des fichiers «journaux» (logs) de fonctionnement du système CUPS. Ces fichiers sont localisés dans le répertoire

 /var/log/cups

On y trouve trois type d'enregistrements

access.log : enregistrement des accès d'impressions
error.log : enregistrement des erreurs
page.log : enregistrement des pages pour statistiques

Pou obtenir le maximum d'information, il faut positionner le mode Debug dans le fichier de configuration du serveur CUPS

 LogLevel debug

Une surveillance simple dans un terminal :

 sudo tail -f /var/log/cups/*_log