CUPS (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de CUPS. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

CUPS est le système d'impression open source basé sur des standards, développé par OpenPrinting pour Linux® et autres systèmes d'exploitation de type Unix®.

Arch Linux fournit le fork OpenPrinting de CUPS, pas le fork Apple de CUPS.

Installation

Installez le paquet cups.

En option, installez le paquet cups-pdf si vous avez l'intention d'"imprimer" dans un document PDF. Par défaut, les fichiers PDF sont stockés dans /var/spool/cups-pdf/nom d'utilisateur/. L'emplacement peut être modifié dans /etc/cups/cups-pdf.conf.

Puis activez et démarrez cups.service ou alternativement utilisez l'activation par socket pour ne démarrer CUPS que lorsqu'un programme veut utiliser le service.

Activation par socket

cups fournit une unité cups.socket. Si cups.socket est activé (et cups.service est désactivé), systemd ne démarrera pas CUPS immédiatement ; il écoutera simplement les sockets appropriés. Ensuite, chaque fois qu'un programme tentera de se connecter à l'un de ces sockets CUPS, systemd lancera cups.service et transmettra de manière transparente le contrôle de ces ports au processus CUPS.

Étapes d'impression

Il est important de savoir comment CUPS fonctionne si l'on veut résoudre des problèmes connexes :

  1. Une application envoie un fichier PDF à CUPS lorsque l'option 'imprimer' a été sélectionnée (si l'application envoie un autre format, il est d'abord converti en PDF).
  2. CUPS examine ensuite le fichier PPD (fichier de description de l'imprimante) de l'imprimante et détermine les filtres qu'il doit utiliser pour convertir le fichier PDF dans un langage que l'imprimante comprend (comme PJL, PCL, bitmap ou PDF natif).
  3. Le filtre convertit le fichier PDF dans un format compris par l'imprimante.
  4. Puis il est envoyé au back-end. Par exemple, si l'imprimante est connectée à un port USB, elle utilise le back-end USB.

Interfaces de connexion

Les étapes supplémentaires pour la détection de l'imprimante sont listées ci-dessous pour les différentes interfaces de connexion.

USB

Pour consulter si votre imprimante USB est détectée, assurez-vous que le paquet usbutils est installé, puis :

$ lsusb
(...)
Bus 001 Device 007 : ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse

Port parallèle

Pour utiliser une imprimante par port parallèle, les modules du noyau lp, parport et parport_pc sont nécessaires.

# dmesg | grep -i parport
parport0 : Imprimante, Hewlett-Packard HP LaserJet 2100 Series
lp0 : utilise parport0 (interrogation)

Réseau

Pour découvrir, utiliser des imprimantes découvertes ou partager des imprimantes à l'aide de DNS-SD/mDNS, configurez résolution des noms d'hôtes .local avec Avahi et redémarrez cups.service.

Note: DNS-SD n'est pris en charge que si vous utilisez Avahi. CUPS ne prend pas en charge l'utilisation de systemd-resolved pour DNS-SD, consultez l'incident 5452 de CUPS.

Pour partager des imprimantes avec Samba, par exemple si le système doit être un serveur d'impression pour les clients Windows, le paquet samba sera nécessaire.

Pilotes d'imprimante

Les pilotes d'une imprimante peuvent provenir de n'importe quelle source indiquée ci-dessous. Consultez CUPS/Printer-specific problems pour une liste incomplète de pilotes que d'autres ont réussi à faire fonctionner.

Pour piloter une imprimante, CUPS a besoin d'un fichier PPD et, pour la plupart des imprimantes, de quelques filtres. Pour plus de détails sur la façon dont CUPS utilise les PPDs et les filtres, consultez [1].

La Liste d'imprimantes OpenPrinting fournit des recommandations de pilotes pour de nombreuses imprimantes. Elle fournit également des fichiers PPD pour chaque imprimante, mais la plupart sont disponibles via foomatic ou le paquet de pilotes recommandé.

Lorsqu'un fichier PPD est fourni à CUPS, le serveur CUPS régénère les fichiers PPD et les enregistre dans /etc/cups/ppd/.

Pour tester s'ils fonctionnent avant de créer un PKGBUILD, les fichiers PPD peuvent être ajoutés manuellement à /usr/share/cups/model, le pilote devrait être disponible après le prochain redémarrage du service cups.

CUPS

CUPS prend en charge les imprimantes AirPrint et IPP Everywhere.

Filtres OpenPrinting CUPS

Le groupe de travail OpenPrinting de la Fondation Linux fournit cups-filters. Ce sont des back-ends, des filtres et d'autres binaires qui faisaient autrefois partie de CUPS mais qui ont été abandonnés par le projet. Ils sont disponibles dans le paquet cups-filters qui est une dépendance de cups.

Les imprimantes non-PDF nécessitent l'installation de ghostscript. Pour les imprimantes PostScript, gsfonts peut également être nécessaire.

Foomatic

Le groupe de travail OpenPrinting de la Fondation Linux foomatic fournit des PPD pour de nombreux pilotes d'imprimante, libres ou non. Pour plus d'informations sur ce que fait foomatic, consultez Foomatic du point de vue du développeur.

Pour utiliser foomatic, installez foomatic-db-engine et au moins un des éléments suivants :

  • foomatic-db - une collection de fichiers XML utilisés par foomatic-db-engine pour générer des fichiers PPD.
  • foomatic-db-ppds - fichiers PPD pré-construits.
  • foomatic-db-nonfree - une collection de fichiers XML provenant de fabricants d'imprimantes sous licences non-libres utilisés par foomatic-db-engine pour générer des fichiers PPD.
  • foomatic-db-nonfree-ppds - fichiers PPD pré-construits sous des licences non-libres.

Les PPD de foomatic peuvent nécessiter des filtres supplémentaires, tels que min12xxwAUR.

Gutenprint

Le Gutenprint project fournit des pilotes pour les imprimantes Canon, Epson, Lexmark, Sony, Olympus et PCL à utiliser avec CUPS et GIMP.

Installez gutenprint et foomatic-db-gutenprint-ppds.

Note: Lorsque les paquets Gutenprint sont mis à jour, les imprimantes utilisant les pilotes Gutenprint cesseront de fonctionner jusqu'à ce que vous exécutiez cups-genppdupdate en tant que root et redémarriez CUPS. cups-genppdupdate mettra à jour les fichiers PPD des imprimantes configurées, consultez cups-genppdupdate(8) pour plus de détails.

Pilotes spécifiques aux fabricants

De nombreux fabricants d'imprimantes fournissent leurs propres pilotes Linux. Ceux-ci sont souvent disponibles dans les dépôts officiels d'Arch ou dans l'AUR.

Certains de ces pilotes sont décrits plus en détail dans CUPS/Printer-specific problems.

URI de l'imprimante

Vous trouverez ci-dessous des étapes supplémentaires pour générer manuellement l'URI si nécessaire. Certaines imprimantes ou pilotes peuvent nécessiter un URI spécial, comme décrit dans CUPS/Printer-specific problems.

USB

CUPS devrait être capable de générer automatiquement un URI pour les imprimantes USB, par exemple usb://HP/DESKJET%20940C?serial=CN16E6C364BH.

Si ce n'est pas le cas, consultez CUPS/Troubleshooting#USB printers pour connaître les étapes de dépannage.

Port parallèle

L'URI doit être de la forme parallel:device. Par exemple, si l'imprimante est connectée sur /dev/lp0, utilisez parallel:/dev/lp0. Si vous utilisez un adaptateur USB vers port parallèle, utilisez parallel:/dev/usb/lp0 comme URI de l'imprimante.

Réseau

Si vous avez configuré Avahi comme dans #Réseau, CUPS devrait détecter l'URI de l'imprimante. Vous pouvez également utiliser avahi-discover pour trouver le nom de votre imprimante et son adresse (par exemple, BRN30055C6B4C7A.local/10.10.0.155:631).

L'URI peut également être généré manuellement, sans utiliser Avahi. Une liste des schémas URI disponibles pour les imprimantes en réseau est disponible dans la documentation CUPS. Comme les détails exacts des URI diffèrent selon les imprimantes, consultez le manuel de l'imprimante ou CUPS/Printer-specific problems.

L'URI pour les imprimantes sur les partages SMB est décrit dans la page de manuel smbspool(8).

Note: Tous les caractères spéciaux dans les URI des imprimantes doivent être correctement cités, sinon, si votre nom d'imprimante Windows ou vos mots de passe utilisateur contiennent des espaces, CUPS lancera une erreur lpadmin : Bad device-uri.

Par exemple, smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6 devient smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6.

La chaîne de caractères peut être obtenue en exécutant la commande suivante :

$ python -c 'from urllib.parse import quote ; print("smb://" + quote("BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6"))

Les serveurs d'impression CUPS distants sont accessibles via une URI de la forme ipp://hostname:631/printers/queue_name. Consultez CUPS/Printer sharing#Printer sharing pour plus de détails sur la configuration du serveur d'impression distant.

Consultez CUPS/Troubleshooting#Networking issues pour d'autres problèmes et solutions.

Attention: Évitez de configurer le serveur et le client avec un filtre d'imprimante - la file d'attente d'impression du client ou du serveur doit être 'raw'. Cela évite d'envoyer deux fois un travail d'impression à travers les filtres d'une imprimante (ce qui peut causer des problèmes tels qu'une imprimante partagée qui fonctionne localement mais une machine distante ne parvient pas à imprimer [2]). Consultez #lp* pour un exemple de configuration d'une file d'attente d'impression en mode 'raw'.

Utilisation

CUPS peut être entièrement contrôlé en utilisant les outils CLI lp* et cups*. Sinon, l'#Interface Web ou l'une des nombreuses #Interfaces graphiques peut être utilisée.

  • Le nom de la queue (file d'attente) est un nom court mais descriptif utilisé sur le système pour identifier la queue. Ce nom ne doit pas contenir d'espaces ou de caractères spéciaux. Par exemple, une file d'attente d'impression correspondant à une HP LaserJet 5P pourrait être nommée "hpljet5p". Plus d'une file d'attente peut être associée à chaque imprimante physique.
  • L'emplacement est une description de l'emplacement physique de l'imprimante (par exemple "chambre", ou "cuisine"). Ceci permet de faciliter la gestion de plusieurs imprimantes.
  • La description est une description complète de la file d'attente d'impression. Une utilisation courante est le nom complet de l'imprimante (comme "HP LaserJet 5P").

Outils CLI

Consultez documentation locale CUPS pour plus d'informations sur les outils de la ligne de commande.

Note: Les paramètres de ligne de commande ne peuvent pas être groupés.

Utilisez SNMP pour trouver un URI :

$ /usr/lib/cups/backend/snmp ip_address

lp*

L'utilitaire lpinfo liste les périphériques avec le paramètre -v, et les modèles avec le paramètre -m.

L'utilitaire lpadmin crée une nouvelle file d'attente avec -p queue_name. Le paramètre -E ajouté à -p active et accepte les travaux sur l'imprimante. L'indicateur -v spécifie l'URI du périphérique, l'indicateur -m spécifie le modèle ou le fichier PPD à utiliser. Vous pouvez également utiliser le paramètre -x pour supprimer une imprimante (lisez au préalable la section ci-dessous).

Exemples :

# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz

Pour une file d'attente sans pilote (Apple AirPrint ou IPP Everywhere) :

# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere

Pour une file d'attente brute ; sans PPD ni filtre :

# lpadmin -p SHARED_PRINTER -m raw

En spécifiant un PPD au lieu d'un modèle :

# lpadmin -p Test_Printer -E -v "ipp://10.0.1.3/ipp/print" -m pxlmono.ppd
Note:
  • Lorsque vous spécifiez le PPD, utilisez uniquement le nom du fichier et non le chemin complet (par exemple, pxlmono.ppd au lieu de /usr/share/ppd/cupsfilters/pxlmono.ppd). Le chemin complet peut également être utilisé avec le paramètre de ligne de commande -P.
  • En 2021, de nombreuses imprimantes récentes prennent en charge l'impression sans pilote et lorsque vous spécifiez -m partout, comme dans le deuxième exemple ci-dessus, l'imprimante sera définie et un fichier .ppd sera créé dans /etc/cups/ppd/ en interrogeant l'imprimante sur le réseau.

L'utilitaire lpq vérifie la file d'attente. Ajoutez le paramètre -a pour vérifier toutes les files d'attente.

L'utilitaire lprm efface la file d'attente. Ajoutez un - pour supprimer toutes les entrées au lieu de seulement la dernière par défaut.

L'utilitaire lpr imprime. Utilisez -# N pour imprimer le fichier N fois, utilisez le paramètre -p pour ajouter un en-tête.

Exemples d'impressions de test avec lpr :

$ lpr /usr/share/cups/data/testprint
$ echo 'Hello, world!' | lpr -p 

L'utilitaire lpstat, utilisé avec le paramètre -s, vérifie l'état. Le paramètre -p permet de spécifier la file d'attente à vérifier.

L'utilitaire lpoptions utilise le même paramètre -p queue_name que lpadmin montré ci-dessus. Avec le paramètre -l, il liste les options. Le paramètre -d définit l'imprimante par défaut avec l'argument queue_name. Le paramètre -o définit les options à une valeur :

$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
$ lpoptions -p HP_DESKJET_940C -o cupsIPPSupplies=true -o Duplex=DuplexNoTumble

cups*

Les utilitaires cupsaccept, cupsdisable, cupsenable et cupsreject exécutent ce pour quoi ils sont nommé en anglais. Respectivement : paramétrer l'imprimante pour accepter des travaux, désactiver une imprimante, activer une imprimante, paramétrer l'imprimante pour rejeter toutes les tâches entrantes.

Pour illustrer leur utilisation, nous allons supprimer proprement une imprimante :

# cupsreject queue_name
# cupsdisable queue_name
# lpadmin -x queue_name

encre

Installez inkAUR pour visualiser les niveaux d'encre.

Ajoutez votre utilisateur au groupe d'utilisateurs lp supplémentaire, déconnectez-vous et reconnectez-vous.

Pour obtenir des informations sur l'utilisation, exécutez ink sans options.

Interface Web

Le serveur CUPS peut être entièrement administré via l'interface Web, disponible sur http://localhost:631/.

Note: Si une connexion HTTPS à CUPS est utilisée, il peut s'écouler un temps très long avant que l'interface n'apparaisse lors du premier accès. Cela est dû au fait que la première requête déclenche la génération de certificats SSL, ce qui peut prendre beaucoup de temps.

Pour effectuer des tâches administratives à partir de l'interface web, une authentification est nécessaire ; consultez #Permissions.

Ajouter une file d'attente

Allez sur la page Administration.

Modifier des files d'attente existantes

Allez sur la page Imprimantes, et sélectionnez une file d'attente à modifier.

Tester une file d'attente

Allez à la page Imprimantes, et sélectionnez une file d'attente.

Interfaces graphiques

Si votre utilisateur ne dispose pas de privilèges suffisants pour administrer CUPS, les applications demanderont le mot de passe root lors de leur démarrage. Pour donner aux utilisateurs des privilèges d'administration sans avoir besoin de l'accès root, consultez #Configuration.

  • Deepin Print Manager — Interface de configuration de l'imprimante pour le bureau Deepin.
https://github.com/linuxdeepin/dde-printer || deepin-printer
  • GtkLP — Interface GTK pour CUPS.
https://gtklp.sirtobi.com/index.shtml || gtklpAUR
  • print-manager — Outil de gestion des travaux d'impression et des imprimantes (KDE).
https://invent.kde.org/utilities/print-manager || print-manager
  • system-config-printer — Outil de configuration de l'imprimante et applet d'état GTK.
https://github.com/OpenPrinting/system-config-printer || system-config-printer

Configuration

La configuration du serveur CUPS se trouve dans /etc/cups/cupsd.conf et /etc/cups/cups-files.conf. (consultez cupsd.conf(5) et cups-files.conf(5)). Après avoir modifié l'un ou l'autre de ces fichiers, redémarrez cups.service pour appliquer les changements. La configuration par défaut est suffisante pour la plupart des utilisateurs.

Permissions

Les groupes d'utilisateurs ayant des privilèges d'administration d'imprimante sont définis dans SystemGroup dans le fichier /etc/cups/cups-files.conf. Les groupes sys, root et wheel sont utilisés par défaut.

Les programmes d'aide CUPS sont exécutés sous l'utilisateur et le groupe cups. Cela permet aux programmes d'aide d'accéder aux périphériques d'impression et de lire les fichiers de configuration dans /etc/cups/, qui appartiennent au groupe cups.

Note: Préalablement à cups 2.2.6-2, le groupe lp était utilisé à la place. Après la mise à jour, les fichiers de /etc/cups devraient appartenir au groupe cups et User 209 et Group 209 définis dans /etc/cups/cups-files.conf.

Format de papier par défaut

cups est compilé avec la prise en charge de libpaper et libpaper utilise par défaut le format de papier Letter (appelé PageSize dans lpoptions). Pour éviter d'avoir à changer la taille du papier pour chaque file d'impression que vous ajoutez, modifiez /etc/papersize et définissez le format de papier par défaut de votre système. Consultez paper(1).

Fichiers journaux

Par défaut, tous les journaux sont envoyés vers des fichiers dans /var/log/cups/. En changeant les valeurs des directives AccessLog, ErrorLog, et PageLog dans /etc/cups/cups-files.conf en syslog, CUPS peut être amené à envoyer les journaux dans le journal de systemd à la place. Consultez Fedora:Changes/CupsJournalLogging pour des informations sur le changement proposé à l'origine.

cups-browsed

This article or section is out of date.

Reason: cups-browsed.service n'est pas nécessaire pour découvrir les imprimantes annoncées par DNS-SD, ce qui est fait par cups.service. Le service est uniquement nécessaire pour découvrir les imprimantes sur un serveur LDAP et celles utilisant le protocole CUPS traditionnel (serveurs CUPS ≤ 1.5). (Discuss in Talk:CUPS)

CUPS peut utiliser la navigation Avahi pour découvrir des imprimantes partagées inconnues sur votre réseau. Cela peut être utile dans les grandes installations où le serveur est inconnu. Pour utiliser cette fonctionnalité, configurez résolution du nom d'hôte .local et démarrez avahi-daemon.service et cups-browsed.service. Les travaux sont envoyés directement à l'imprimante sans aucun traitement, de sorte que les files d'attente créées peuvent ne pas fonctionner, mais les imprimantes sans pilote telles que celles prenant en charge IPP Everywhere ou AirPrint devraient fonctionner d'emblée.

Note:
  • La recherche d'imprimantes réseau peut augmenter considérablement le temps de démarrage de votre ordinateur.
  • cups-browsed.service n'est nécessaire que pour ajouter et supprimer dynamiquement des imprimantes lorsqu'elles apparaissent et disparaissent d'un réseau. Il n'est pas nécessaire si vous souhaitez simplement ajouter une imprimante réseau prenant en charge le DNS-SD/mDNS à CUPS.

Serveurs d'impression et administration à distance

Consultez CUPS/Printer sharing et CUPS/Printer sharing#Remote administration.

Autoriser l'authentification de l'administrateur via PolicyKit

PolicyKit peut être configuré pour permettre aux utilisateurs de configurer les imprimantes à l'aide d'une interface graphique sans le mot de passe administrateur.

Note: Vous devrez peut-être installer cups-pk-helper pour faire fonctionner ces règles

Voici un exemple qui permet aux membres du groupe d'utilisateurs wheel d'administrer les imprimantes sans mot de passe :

/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules
polkit.addRule(function(action, subject) { 
    si (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" && 
        subject.isInGroup("wheel")){ 
        return polkit.Result.YES ; 
    } 
}) ;

Sans serveur CUPS local

CUPS peut être configuré pour se connecter directement à des serveurs d'impression distants au lieu d'exécuter un serveur d'impression local. Cela nécessite l'installation du paquet libcups. Certaines applications nécessiteront toujours le paquet cups pour l'impression.

Note: L'accès aux imprimantes distantes sans serveur CUPS local n'est pas recommandé par les développeurs. [3]

Pour utiliser un serveur CUPS distant, définissez la variable d'environnement CUPS_SERVER à printerserver.mydomain:port. Par exemple, si vous souhaitez utiliser un serveur d'impression différent pour une seule instance de Firefox (remplacez printserver.mydomain:port par le nom/port de votre serveur d'impression) :

$ CUPS_SERVER=printserver.mydomain:port firefox

Pour rendre cette configuration permanente, créez le fichier de configuration /etc/cups/client.conf et ajoutez-y le nom d'hôte du serveur CUPS distant :

ServerName server

Vous pouvez également spécifier un port personnalisé :

ServerName server:port

Consultez [4] pour plus de détails.

Dépannage

Consultez l'article anglais CUPS/Troubleshooting.

Voir aussi