CUPS : serveur d'impression et impression en réseau

Objet : Administrer son imprimante avec CUPS

Niveau requis :

Commentaires : Installation et utilisation du système d'impression CUPS.

Débutant, à savoir : Utiliser GNU/Linux en ligne de commande, tout commence là !.

Suivi :

Création par sylvain le 09/09/2013

Testé par <...> le <...>

Partie consacrée à print-task-server déclarée obsolète par --gilles-- le 02/09/2021

Commentaires sur le forum : C'est ici1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !

Introduction

CUPS, pour Common Unix Printing System, est selon le site officiel, « le système d'impression open source basé sur les standards et développé par Apple Inc. pour macOS et autres systèmes d'exploitation de type UNIX. CUPS utilise le protocole d'impression Internet (IPP, Internet Printing Protocol) pour prendre en charge l'impression sur les imprimantes locales et en réseau. »

Une des grandes nouveautés de Debian 10, est l'impression sans pilote avec CUPS 2.2.10.2) Lire à ce sujet, 2.2.8. Imprimer sans pilote avec CUPS 2.2.10. Notes de publication pour Debian 10 (« Buster ») Tentez donc, dans un premier temps du moins, de n'installer que le paquet cups (et ses dépendances, bien sûr). Notez toutefois que les commandes et paquets mentionnés sur cette page restent disponibles.

Installation

Attention, le paquet task-print-server n'existe plus à partir de Debian 11 ! Vous pouvez toujours installer les paquets dépendances et recommandés équivalents en version Debian 11, la liste de ces paquets est ici et il y a CUPS dans la liste : https://packages.debian.org/buster/task-print-server
Ce qui suit immédiatement ne concernera que les versions inférieures à Debian 11

Avant tout, si ce n'est déjà fait, installez CUPS via le méta-paquet task-print-server :

apt-get update && apt-get install --install-recommends task-print-server

Notez que l'installation des paquets recommandés est implicite, sur un système Debian officiel, et que de très nombreux pilotes d'imprimantes (Epson, Gutenprint, HPLIP, etc.) seront installés en même temps que le serveur d'impression :

apt-cache depends task-print-server
task-print-server Dépend: tasksel Dépend: cups Dépend: cups-client Dépend: cups-bsd Recommande: foomatic-db-engine Recommande: printer-driver-all Recommande: hplip Recommande: hp-ppd Recommande: openprinting-ppds
Fin de la partie du tuto devenue obsolète depuis Debian 11

Pour savoir si votre imprimante est prise en charge « nativement » par CUPS, vous pouvez exécuter :

/usr/sbin/lpinfo --make-and-model "truc" -m

Où “truc” est la marque/le modèle de votre imprimante ; exemples sous Debian 9 :

/usr/sbin/lpinfo --make-and-model "m12w" -m
lpinfo: client-error-not-found

L'imprimante HP LaserJet Pro M12w n'est pas prise en charge nativement. Hélas.

/usr/sbin/lpinfo --make-and-model "8210" -m
postscript-hp:0/ppd/hplip/HP/hp-officejet_pro_8210-ps.ppd HP OfficeJet Pro 8210 Postscript (recommended)

Par contre, l'imprimante HP OfficeJet Pro 8210, est prise en charge — hplip installé.

Si votre imprimante n'est pas listée, cherchez un pilote (libre ou non) sur le site de son constructeur.

Les méthodes varient d'un constructeur à l'autre :

pour Brother : https://support.brother.com/g/b/productsearch.aspx?c=fr&lang=fr&content=dl

pour Canon : https://www.canon.fr/support/

pour Epson : https://download.ebz.epson.net/dsc/search/01/search/?osCode=LX

pour HP : commencez par tenter l'installation du paquet hplip du dépôt backports (wiki dédié)

Utilisation

Pour administrer votre imprimante avec CUPS vous pouvez utiliser 3 méthodes différentes :

via votre navigateur internet,

via un frontal,

ou bien avec le terminal.

Cette page a pour but de présenter les 3 méthodes.

À la fin du tuto se trouvent des astuces qui vous aideront, je l'espère, si vous rencontrez des problèmes d'impression.

Première méthode : avec votre navigateur internet préféré

Cliquez sur le lien suivant : http://localhost:631/printers

Normalement votre imprimante apparaît.

En cliquant sur l'onglet administration vous pouvez administrer votre imprimante.

Mais pour cela il va falloir vous identifier,

on vous demande un nom d'utilisateur : root

et un mot de passe : celui de root.

Dans le cas d'une configuration utilisant sudo, vous tapez le nom d'utilisateur principal et son mot de passe.

Si votre imprimante n’apparaît pas, vous pouvez tenter de la rajouter manuellement en cliquant sur “Ajouter une imprimante”.

Il y a aussi une aide en ligne bien pratique, en particulier la section “Man Pages”.

Seconde méthode (1) : avec le frontal GtkLP

Installez le paquet gtklp :

apt-get install gtklp

GtkLP est un frontal de CUPS pour GNOME qui est seulement accessible à partir du terminal.

Une fois installé, lancez-le en écrivant simplement dans votre terminal :

gtklp

Vous pouvez dès à présent gérer vos paramètres d'impression.

Cette méthode permet une gestion poussée de CUPS tout en restant très simple d'utilisation

Seconde méthode (2) : avec le frontal system-config-printer

Ce frontal est livré avec Debian dès l'installation, selon votre gestionnaire graphique les chemins d'accès sont différents.

Pour y accéder depuis votre terminal entrez la commande suivante :

system-config-printer

Pour gérer votre imprimante faites un petit tour dans les paramètres :

Et n'oubliez pas de visiter l'aide en cas de soucis :

Troisième méthode : en ligne de commande

L'administration uniquement en ligne de commande (pour les barbus ! )

Toutes les informations qui suivent sont prises sur le site http://doc.gnu-darwin.org/fr/sam.html#2_7. N'hésitez pas à y aller ça vaut le détour.

En voici un petit résumé :

Pour connaître l'adresse de votre imprimante (obligatoire pour ajouter une imprimante) utilisez la commande suivante en tant que super-utilisateur :

lpinfo -v

Pour installer une imprimante, exécutez la commande lpadmin avec l'option -p :

lpadmin -p imprimante -E -v périphérique -m ppd

Une série d'exemples pour comprendre :
Pour une imprimante HP DeskJet connectée au port parallèle, la commande serait :

lpadmin -p DeskJet -E -v parallel:/dev/lp1 -m deskjet.ppd

De la même manière, une imprimante HP LaserJet utilisant une interface réseau de type JetDirect à l'adresse IP 11.22.33.44 serait ajoutée avec la commande :

lpadmin -p LaserJet -E -v socket://11.22.33.44 -m laserjet.ppd

Maintenant que l'imprimante est installée, passons à l'administration proprement dite :

La commande lpadmin vous permet d'effectuer la plupart des tâches d'administration d'imprimantes depuis la ligne de commande.

Vous trouverez lpadmin dans le répertoire /usr/sbin.

Ajouter et modifier des imprimantes

Exécutez la commande lpadmin avec l'option -p pour ajouter ou modifier une imprimante.

lpadmin -p imprimante options

Les arguments options peuvent être n'importe lesquels parmi :

-c classe
Ajoute l'imprimante nommée à la classe d'imprimantes classe. Si la classe d'imprimantes n'existe pas alors elle est créée.

-i interface
Copie le script pour l'interface vers l'imprimante. Les scripts d'interface sont utilisés par les pilotes d'imprimantes System V. Étant donné que tous les filtres sont désactivés lorsque les scripts d'interface sont employés, les scripts ne devraient normalement jamais être utilisés à moins qu'il n'y ait aucun autre pilote pour l'imprimante.

-m modèle
Indique un pilote d'imprimante standard qui est généralement un fichier PPD. Une liste de tous les modèles disponibles peut être affichée au moyen de l'option -m de la commande lpinfo (cf. supra).

-r classe
Retire l'imprimante spécifiée de la classe d'imprimantes classe. Si la classe qui en résulte est vide, elle est supprimée.

-v uri-périphérique
Indique le périphérique à employer pour dialoguer avec l'imprimante. Si un travail d'impression est actuellement en cours d'édition sur l'imprimante spécifiée, il est relancé et envoyé au nouveau périphérique.

-D info
Fournit une description textuelle de l'imprimante, par exemple “Imprimante personnelle de Marcel”.

-E
Active l'imprimante et accepte les travaux d'impression. Cette option équivaut à exécuter les commandes enable(1) et accept(8).

-L emplacement
Fournit une description textuelle de l'emplacement de l'imprimante, par exemple “Salle informatique n°5”.

-P fichier-ppd
Indique un fichier PPD local pour le pilote d'imprimante.

Supprimer des imprimantes

Exécutez la commande lpadmin avec l'option -x pour supprimer une imprimante :

lpadmin -x imprimante

Choisir l'imprimante implicite

Exécutez la commande lpadmin avec l'option -d pour définir l'imprimante standard :

lpadmin -d imprimante

L'imprimante standard peut-être outrepassée par l'utilisateur au moyen de la commande lpoptions.

Démarrer et arrêter des imprimantes

Les commandes cupsenable et cupsdisable démarrent et arrêtent les files d'impression, avec les syntaxes respectives suivantes :

cupsenable imprimante
cupsdisable imprimante

Les imprimantes qui sont désactivées peuvent toujours accepter les travaux d'impression mais n'en imprimeront effectivement aucun tant qu'elles ne seront pas réactivées. Cela est utile si une imprimante fonctionne mal et que vous avez besoin de corriger le problème (bourrage). Tout travail d'impression mis en file d'attente est imprimé dès que la l'imprimante est réactivée.

Accepter et rejeter les travaux d'impression

Les commandes cupsaccept et cupsreject permettent respectivement d'indiquer à une imprimante qu'elle doit accepter ou rejeter les nouveaux travaux d'impression :

cupsaccept imprimante
cupsreject imprimante

Comme indiqué ci-dessus, une imprimante peut être configurée pour ne plus accepter de nouveaux travaux d'impression. Une imprimante peut aussi rejeter les nouveaux travaux d'impression bien qu'elle soit en train de terminer le traitement de ceux qui ont été mis en file d'attente avant que celle-ci soit désactivée. Ceci est utile si vous avez besoin d'effectuer des opérations de maintenance sur l'imprimante et que vous ne voulez pas qu'elle soit disponible pour les utilisateurs pendant une longue période.

Petites astuces utiles en cas de problèmes avec votre imprimante

Les pilotes sont généralement conçus pour fonctionner avec un système 32 bits, si vous êtes en 64 bits vous devez contrôler que vous avez bien les paquets : ia32-libs ou lib32stdc++6 ()

Si vous ne pouvez pas accéder à la configuration de votre imprimante, essayez de vous ajouter au groupe administrateur, dans un terminal root :

#remplacez username par votre nom d'utilisateur adduser username lpadmin

Si vous avez plusieurs imprimantes installées :

lpstat -t

permet de savoir quelle imprimante est installée par défaut.

Si vous voulez obtenir des infos sur le pilote que vous avez vous-même installé (par ex. pilotes Brother), la commande :

dpkg -l | grep Brother

vous listera les paquets contenant le mot “Brother” (remplacez Brother par Epson, Canon, etc. selon le cas), ensuite vous pouvez contrôler le bon fonctionnement de ces paquets avec la commande :

apt-cache show paquet

pensez à regarder en particulier la ligne concernant les dépendances.

Pour vider la liste des impressions en attente, utilisez la commande :

lprm

Pour avoir la liste des options de votre imprimante :

lpoptions -l

Pour aller plus loin

Je ne saurais trop vous conseiller d'aller faire un petit tour sur ces sites :

Manuel de l'administrateur (v1.1.14, 2002) : HTML / PDF

Manuel de l'utilisateur (v1.1.14, 2002) : HTML / PDF

Documentation - CUPS.org (en anglais)

Aide en ligne (machine locale, en anglais)

Printer List | OpenPrinting - The Linux Foundation (anglais)

Remerciements

Je tiens à remercier captnfab, deuchdeb et smolski pour l'aide apportée à l'élaboration de cette page.
Bien sûr je n'oublie pas MaTTuX_ sans qui il n'y aurait pas d'images dans la doc.
Merci aussi à toutes les personnes qui ont fait ou feront un retour sur le forum pour l'amélioration de ladite page, et bien sûr à toi, lecteur, mon semblable, mon frère (comprenne qui pourra, j'ai des envolées lyriques des fois ), qui aura pris la peine de lire ce tuto jusqu'au bout.