SDB:CUPS en quelques mots

Aller à : navigation, rechercher


Cet article s'adresse à des utilisateurs Linux expérimentés. Il ne prévoit pas d'explication détaillée. Tous les points importants relatifs à CUPS sont présentés de manière brève et concise.

Aperçu du système d'impression CUPS

Vous trouverez une vue d'ensemble dans le texte suivant de la documentation en français de CUPS : « Un aperçu de CUPS (Common UNIX Printing System), Version 1.1 », à l'adresse http://localhost:631/overview.html ou en anglais dans [file:/usr/share/doc/packages/cups/overview.html file:/usr/share/doc/packages/cups/overview.html].

La page d'accueil de CUPS est : http://www.cups.org/

Comment se déroule le traitement d'un travail d'impression :

  1. Cette étape a lieu sur les systèmes client comme sur les systèmes serveur. Un client est un ordinateur sur lequel ne se déroule que cette étape. Aucune file d'attente n'est créée sur un ordinateur client.

Un outil en ligne de commande ou un logiciel applicatif génère un travail d'impression et le transmet au spouleur : les logiciels applicatifs appellent un outil en ligne de commande (par exemple, Mozilla) ou utilisent directement les fonctions de la bibliothèque de CUPS (par exemple, kprinter). Un travail d'impression se compose d'informations pour le spouleur et des données à imprimer, ainsi que d'informations optionnelles pour le filtre. Par exemple, avec un outil en ligne de commande :

  lp -d file_attente -t titre -o option1=valeur1 -o option2=valeur2 fichier1 fichier2
    • 'file_attente' et 'titre' sont des informations pour le spouleur
    • 'option1=valeur1' et 'option2=valeur2' sont des informations pour le filtre
    • 'fichier1' et 'fichier2' correspondent aux données à imprimer.
  1. Les étapes suivantes n'ont lieu que sur un serveur CUPS. Un ordinateur sur lequel se déroulent les étapes suivantes est un serveur. Un ordinateur sur lequel est créée une file d'attente est un serveur.

Spouleur (le démon cupsd) :

    1. Enregistrer le travail d'impression dans le répertoire /spool :
      • Enregistrer les informations pour le spouleur et le filtre dans /var/spool/cups/c<numero-travail>
      • Enregistrer les données provenant des fichers à imprimer dans le répertoire /var/spool/cups/d<numero-travail-numero-fichier>
    2. Filtrer les données à imprimer et envoyer les données propres à l'imprimante à cette dernière :
      • Démarrer le système de filtrage :
        1. Indiquer quel filtre sera nécessaire pour générer les données propres à l'imprimante et configurer ce qu'on appelle les « chaînes de filtrage » ou les « tubes utilisés comme filtres ».
        2. Démarrer le programme des chaînes de filtrage avec des paramètres définis en conséquence.
      • Démarrer le « backend » (un « backend » est un programme de sortie qui s'interface avec le programme principal) pour transmettre les données propres à l'imprimante, depuis le tube utilisé comme filtre vers l'imprimante.
    3. Terminer le travail d'impression :
      1. Attendre que le backend ait terminé.
      2. Supprimer les fichiers concernés du répertoire /spool.

Le spouleur

À quoi sert le spouleur :

La mission première du système de spouleur est de déplacer des données de l'émetteur vers le destinataire.

  1. Recevoir les données (mais seulement en provenance des émetteurs autorisés).
  2. Stocker temporairement les données (jusqu'à ce que le destinataire soit prêt à les recevoir).
  3. Envoyer les données à des destinataires autorisés (et éventuellement intercaler au préalable des filtres appropriés).
  4. Préparer et mettre à disposition les informations sur l'état des données (par exemple pour la commande 'lpstat -W completed -o').

Détails :

  • /usr/sbin/cupsd
    • Le démon 'cupsd' est le serveur associé au protocole IPP.
    • On peut considérer le protocole IPP comme une extension du protocole HTTP. Vous trouverez des détails sur le protocole IPP dans les RFC 2910 et RFC 2911.
    • Le démon cupsd écoute les travaux IPP sur le port TCP 631, comme 'lp -d file_ attente fichier' ou 'lpstat -t'.
    • Le démon cupsd écoute les travaux HTTP sur le port TCP 631, comme http://localhost:631/printers/
    • Le démon cupsd utilise le port UDP 631 pour envoyer et recevoir ce qu'il est convenu d'appeler les informations de « navigation IPP ». On peut par exemple faire appel à 'netcat -u -l -p 631' pour récupérer ce type d'informations (dans la mesure où le démon cupsd n'occupe pas encore le port UDP 631).
    • Fichier de configuration pour le démon cupsd : /etc/cups/cupsd.conf
  • /usr/lib/cups/daemon/cups-lpd
    • Le démon cups-lpd est le serveur pour le protocole LPD (RFC 1179).
    • Le démon cups-lpd accepte les travaux d'impression qui arrivent via le protocole LPD sur le port TCP 515.
    • Les démons xinetd ou inetd encapsulent le démon cups-lpd.
    • Fichiers de configuration : soit /etc/xinetd.d/cups-lpd soit dans /etc/inetd.conf, la ligne 'cups-lpd'.
  • Documentation :
    • Le « Manuel de l'administrateur CUPS » est disponible en français à l'adresse http://localhost:631/sam.html ou en anglais dans [file:/usr/share/doc/packages/cups/sam.html file:/usr/share/doc/packages/cups/sam.html]

Fichiers PPD

Qu'est-ce qu'un fichier PPD et comment fonctionne-t-il :

Un fichier PPD contient les options propres à l'imprimante (et rien d'autre) ainsi que les fragments de code PostScript correspondants à envoyer à l'interpréteur PostScript pour activer une option donnée.

En fonction des options propres à l'imprimante définies pour un travail d'impression donné (par exemple, '-o PageSize=A4'), le système de filtrage lit les fragments de code PostScript appropriés (les 'PostScript Invocation Values') dans le fichier PPD et les insère dans le flux de données PostScript.

Voici la syntaxe d'un élément d'option dans le fichier PPD comportant deux exemples d'éléments :

* mot-clé principal mot-clé option / chaîne traduction : " Valeur d'invocation PostScript "
*PageSize Letter/letter paper: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
*PageSize A4/A4 paper: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"

Vous trouverez d'autres informations dans le document « Adobe PostScript Printer Description File Format Specification, Version 4.3 ».

Détails :

  • /etc/cups/ppd/
    • Ce répertoire contient les fichiers PPD que le démon cupsd utilise réellement.
    • Les déclarations (en particulier les éléments '*Default...') d'un fichier PPD dans le répertoire /etc/cups/ppd/ peuvent différer des déclarations contenues dans le fichier PPD d'origine indiqué lorsque la file d'attente a été créée.
  • /usr/share/cups/model/
    • Ce répertoire contient les fichiers PPD d'origine provenant des paquetages :
      • cups : fichiers PPD de CUPS
      • cups-drivers : fichiers PPD Foomatic (LinuxPrinting.org)
      • cups-drivers-stp : fichiers PPD Gimp-Print
      • manufacturer-PPD : fichiers PPD soumis à licence libre par les fabricants d'imprimantes
    • On peut copier dans ce répertoire des fichiers PPD supplémentaires (par exemple, les fichiers PPD des fabricants d'imprimantes) pour les mettre à la disposition des outils de configuration des imprimantes.
  • La base de données des imprimantes LinuxPrinting.org
    • La base de données des imprimantes LinuxPrinting.org se compose de fichiers XML à partir desquels sont générés les fichiers PPD Foomatic.
    • La base de données des imprimantes LinuxPrinting.org (en anglais) est disponible à l'adresse : http://www.linuxprinting.org/database.html

Le filtrage

Que fait le système de filtrage et comment fonctionne-t-il :

  • La mission première du système de filtrage est de transformer les données originelles du travail d'impression (ASCII, PostScript, PDF) en données propres à l'imprimante (PostScript, PCL, ESC/P).
  • Le filtrage se déroule en principe selon les étapes suivantes :
    1. Déterminer le type MIME des données originelles conformément à /etc/cups/mime.types. S'il ne s'agit pas de 'application/postscript', la conversion a lieu en PostScript conformément à ce qui est indiqué dans /etc/cups/mime.convs. Par exemple, 'text/plain' est converti en PostScript avec /usr/lib/cups/filter/texttops.
    2. Insérer les 'PostScript Invocation Values' dans le flux de données PostScript conformément aux lignes suivantes du fichier /etc/cups/mime.convs :
type MIME en entrée type MIME en sortie coût filtre
application/postscript application/vnd.cups-postscript 66 pstops
    1. Si l'on fait appel à une imprimante non PostScript avec un fichier PPD Foomatic, les données PostScript sont converties en données propres à l'imprimante, conformément aux lignes suivantes de chaque fichier PPD Foomatic (Version 3.x) :
mot-clé principal type MIME en entrée coût filtre
*cupsFilter: "application/vnd.cups-postscript foomatic-rip"
Si l'on fait appel à une imprimante non PostScript avec un fichier PPD Foomatic, foomatic-rip ainsi que Ghostscript servent d'interpréteur PostScript. Pour convertir les données PostScript en données propres à l'imprimante, foomatic-rip effectue les étapes suivantes :
      1. Créer une ligne de commande Ghostscript avec les paramètres Ghostscript nécessaires conformément aux options propres à l'imprimante définies dans le travail d'impression concerné.
      2. Dans certains cas, un « postfiltre » est introduit après la commande Ghostscript (au moyen d'un « tube ») :
        • Pour les imprimantes PCL :
          Certaines options sont prises en compte grâce à des modifications sur le flux de données PCL (par exemple, le choix de l'alimentation en papier via "perl -e").
        • Pour quelques imprimantes GDI :
          Convertir la sortie Ghostscript en données propres à l'imprimante (par exemple, avec pnm2ppa pour les imprimantes PPA de HP).
      3. Exécuter la ligne de commande Ghostscript (ou le « tube »).
  • Si l'on a utilisé un fichier non Foomatic pour une imprimante non PostScript (par exemple, un fichier PPD Gimp-Print issu du répertoire /usr/share/cups/model/stp/), les lignes '*cupsFilter' du fichier PPD risquent de ressembler à :
  *cupsFilter: "application/vnd.cups-raster 100 rastertoprinter"
  *cupsFilter: "application/vnd.cups-command 33 commandtoepson"
et, avec les déclarations du répertoire /etc/cups/mime.convs, on observe un autre déroulement du filtrage.

Vous trouverez d'autres informations sur le filtrage dans les articles de la base de données d'assistance « Using Your Own Filters to Print with CUPS » : en:SDB:Using Your Own Filters to Print with CUPS.

Détails :

  • /usr/lib/cups/filter/

Ce répertoire contient les différents programmes de filtrage qu'utilise le système de filtrage CUPS, si un fichier PPD a été spécifié lors de la configuration de la file d'attente concernée.

    1. /usr/lib/cups/filter/*tops (par exemple, /usr/lib/cups/filter/texttops) pour convertir les données originelles (par exemple, 'text/plain') en PostScript.
    2. /usr/lib/cups/filter/pstops pour insérer les 'PostScript Invocation Values' et éventuellement pour reformater les données PostScript (par exemple, en réduisant l'impression de deux pages sur une seule feuille).
    3. /usr/lib/cups/filter/foomatic-rip pour convertir des données PostScript en données propres à l'imprimante (par exemple, PCL ou ESC/P).
  • /etc/cups/interfaces/

Ce répertoire contient le filtre qu'utilise CUPS si un « System V style Interface Script » a été spécifié à la place d'un fichier PPD lors de la création de la file d'attente dont il est question. Un « System V style Interface Script » est un programme de filtrage à part, ou « script de filtrage , chargé de produire les données propres à l'imprimante pour tous les types de données que l'on peut être amené à rencontrer avec des données originelles à imprimer. D'autres informations au sujet du « System V style Interface Script » sont disponibles dans l'article que vous trouverez dans la base de données d'assistance « Using Your Own Filters to Print with CUPS » : en:SDB:Using Your Own Filters to Print with CUPS

  • "raw"

Si, lors de la configuration de la file d'attente, on a indiqué ni fichier PPD ni « System V style Interface Script », il n'est en principe pas possible de procéder à un filtrage. Les données originelles à imprimer sont envoyées telles quelles (donc « brutes ») directement du backend au destinataire (normalement à l'imprimante). Il n'est pas possible de convertir le saut de ligne (par exemple, -> CR+LF) ni d'ajouter un changement de page en fin de ligne. Pour cela, on peut utiliser un « System V style Interface Script ».

Les backends

Qu'est-ce qu'un backend CUPS et comment fonctionne-t-il :

Habituellement, le backend obtient du filtre les données propres à l'imprimante et les renvoie à l'imprimante ou à un autre destinataire.

Les différences entre backend et filtre sont les suivantes :

  • Un seul backend, mais d'ordinaire plusieurs filtres (une chaîne de filtrage) sont activés pour traiter un travail d'impression. Exceptions : « System V style Interface Script  (un seul filtre) et l'impression « brute » (sans filtre).
  • Dans la chaîne de traitement, le backend est toujours le dernier programme exécuté pour traiter un travail d'impression.

Le système d'impression considère que le travail d'impression n'est complètement achevé que quand le backend a terminé. Le backend a terminé lorsque la transmission des données au destinataire est achevée. Si la suite du traitement s'interrompt côté destinataire (par exemple, quand l'imprimante n'est pas en mesure de sortir sur papier les données propres à l'imprimante), le système d'impression ne le remarque plus.

Si la transmission des données échoue irrévocablement côté destinataire (le backend fait normalement plusieurs tentatives), le backend signale une erreur au système d'impression (plus précisément, au démon cupsd). Le backend décide si d'autres tentatives, et combien, sont souhaitables avant de signaler que la transmission est impossible. D'autres essais étant alors inutiles, le démon cupsd désactive la sortie sur papier sur la file d'attente en question. Une fois que la cause du problème a été résolue, le gestionnaire système doit activer à nouveau la sortie papier avec /usr/bin/enable.

Vous trouverez d'autres informations sur les backends dans le « CUPS Software Programmers Manual » à l'adresse http://localhost:631/spm.html ou dans [file:/usr/share/doc/packages/cups/spm.html file:/usr/share/doc/packages/cups/spm.html]

Détails :

/usr/lib/cups/backend/
Ce répertoire contient les différents backends.

Choisissez le backend approprié en fonction de le la façon d'accéder à l'imprimante depuis l'ordinateur sur lequel le système CUPS s'exécute ou selon le type du destinataire.

La destination vers laquelle un backend envoie les données peut être n'importe quel « URI » (Uniform Resource Identifier) pour lequel il existe un backend approprié. La première partie de l'élément 'DeviceURI' dans le fichier /etc/cups/printers.conf définit le backend, le reste lui sert de paramètres.

backend syntaxe de l'URI URI exemple
parallel parallel:/dev/lp* parallel:/dev/lp0
usb (traditional) usb:/dev/usb/lp* usb:/dev/usb/lp0
usb (nouveau) usb://<marque>/<modele>?serial=<numero> usb://ACME/FunPrinter%201000?serial=A1B2C3
ipp ipp://<serveur-ipp.domaine>/printers/<file> ipp://serveur-cups.domaine/printers/funprinter1000
lpd lpd://<serveur-lpd.domaine>/<file> lpd://192.168.101.202/lpt1
socket socket://<hote.domaine>:<port> socket://192.168.101.202:9100
smb voir la page de manuel smbspool(8) smb://utilisateur:motdepasse@workgroup/serveur-smb/partage

Si 'utilisateur' et 'motdepasse' sont nécessaires pour le backend smb, le propriétaire, le groupe et les droits d'accès concernant le fichier /etc/cups/printers.conf doivent être définis de manière assez restrictive. Les éléments 'utilisateur' et 'motdepasse' ne sont pas affichés avec la commande 'lpstat -v'.

Il est également possible d'appeler chaque backend directement. Par exemple, les backends 'parallel' et 'usb' fournissent l'identification IEEE-1284 des imprimantes connectées :

root@hote# /usr/lib/cups/backend/parallel
direct parallel:/dev/lp0 "ACME FunPrinter 1000" "Parallel Port #1"
root@hote# /usr/lib/cups/backend/usb
direct usb://ACME/USB%20Printer?serial=1234 "ACME USB Printer" "USB Printer #1"
direct usb:/dev/usb/lp1 "Unknown" "USB Printer #2"
...

Lors du démarrage, le démon cupsd appelle une fois l'un après l'autre tous les backends présents dans le répertoire /usr/lib/cups/backend/. Le démon cupsd peut ainsi déterminer quels sont les backends opérationnels sur le système concerné. Seuls les backends opérationnels sont disponibles pour la configuration des files d'attente. Les backends opérationnels sont indiqués par 'lpinfo -v'.

Outils en ligne de commande

Généralités sur les outils en ligne de commande :

  • Ne procédez à aucune modification manuelle dans les fichiers de configuration du répertoire /etc/cups/ s'il n'existe pas d'outils en ligne de commande appropriés.

Raison :
Les fichiers de configuration ne sont pas rechargés pour chaque travail d'impression. Au lieu de cela, le démon cupsd se contente de conserver le maximum d'informations dans la mémoire centrale et les réécrit en fonction des besoins dans les fichiers de configuration. Exception : /etc/cups/cupsd.conf
Le démon cupsd doit être redémarré une fois les modifications effectuées dans ce fichier de configuration pour qu'elles entrent en vigueur. Consultez dans le « Manuel de l'administrateur CUPS » la section « Redémarrer le serveur CUPS » : http://localhost:631/sam.html#RESTARTING ou dans [file:/usr/share/doc/cups/sam.html#RESTARTING file:/usr/share/doc/cups/sam.html#RESTARTING]

  • Ne copiez jamais les fichiers de configuration d'autres systèmes dans votre système, à moins que vous ne sachiez exactement ce que vous faites. Utilisez à la place les outils en ligne de commande.

Par exemple, pour créer les mêmes files d'attente sur plusieurs machines (comme sur un serveur de sauvegarde), ne copiez ni /etc/cups/printers.conf ni /etc/cups/ppd/*, mais créez un script contenant les lignes de commande appropriées (le plus souvent une série d'appels à lpadmin) et lancez-le sur les différentes machines. Vous obtenez ainsi tous les messages d'erreurs concernant chacune d'elles (par exemple, s'il manque un fichier PPD sur une machine ou si un backend n'est n'est pas disponible ou n'est pas opérationnel). Le script fournit en outre un fichier journal des paramètres qui vous permet de rétablir ces derniers à volonté à chaque exécution du script.

  • Si vous avez un doute à propos de l'outil graphique le plus approprié pour certaines configurations spéciales, préférez les outils en ligne de commande.
  • L'ordre des options est important dans de nombreux cas. Consultez les pages de manuel. Voici par exemple une série de commandes, toutes différentes :
  lpadmin -E -p file,
  lpadmin -p file -E
  lpadmin -E -p file -E

Détails :

Outils en ligne de commande pour créer ou modifier des files d'attente :

  • Exemple de création d'une file d'attente :
  root@hote# lpadmin -p funprinter1000 -v parallel:/dev/lp0 -E -P /usr/share/cups/model/Postscript.ppd.gz
Vérification des travaux créés par un outil en ligne de commande
  utilisateur@hote$ lpstat -a funprinter1000 -p funprinter1000 -v funprinter1000
  funprinter1000 accepting requests since Jan 01 00:00
  printer funprinter1000 is idle.  enabled since Jan 01 00:00
  device for funprinter1000: parallel:/dev/lp0
ou affichage du fichier /etc/cups/printers.conf :
  <Printer funprinter1000>
  Info funprinter1000
  DeviceURI parallel:/dev/lp0
  State Idle
  Accepting Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  </Printer>
ou interrogation via l'interface web : http://localhost:631/printers/funprinter1000
  • Modification de la file d'attente (par exemple, description et emplacement) :
  root@hote# lpadmin -p funprinter1000 -D "ACME FunPrinter 1000" -L "2. floor: room 3"
  • Affichage des options propres à l'imprimante et leurs réglages par défaut dans le fichier /etc/cups/ppd/funprinter1000.ppd :
  utilisateur@hote$ lpoptions -p funprinter1000 -l
  Resolution/Output Resolution: 150dpi *300dpi 600dpi 1200dpi 2400dpi
  PageSize/Media Size: Letter Legal Executive *A4 A5
  ...
Voici la syntaxe du résultat :
  motcle-principal/chaine-traduction motcle-option motcle-option motcle-option ...
Le réglage par défaut est signalé par un '*' devant un mot-clé d'option.
  • Modification des réglages par défaut propres à l'imprimante dans le fichier /etc/cups/ppd/funprinter1000.ppd :
  root@hote# lpadmin -p funprinter1000 -o Resolution=600dpi -o PageSize=Letter
Voici la syntaxe :
  lpadmin -p file -o motcle-principal1=motcle-option1 -o motcle-principal2=motcle-option2 ...
Ne faites pas intervenir 'lpoptions' ici. Consultez l'article dans la base de données d'assistance « Print Settings with CUPS » : en:SDB:Print Settings with CUPS

Les utilisateurs normaux peuvent enregistrer leurs propres réglages par défaut pour 'lpoptions' dans le fichier ~/.lpoptions : Consultez à ce sujet l'article mentionné ci-dessus.

  • Utilisez 'Accepter' ou 'Refuser' les travaux d'impression pour une file d'attente pour accepter ou refuser, ainsi que /usr/bin/enable ('enable' est une commande intégrée de Bash) ou 'disable' pour démarrer ou arrêter l'impression dans une file d'attente (par exemple, pour éviter de perdre des travaux d'impression pendant les opérations de maintenance effectuées sur l'imprimante).
  • Suppression de la file d'attente :
  root@hote# lpadmin -x funprinter1000

Outils en ligne de commande d'usage quotiden :

  • Évitez les commandes de type BSD 'lpr', 'lpq' et 'lprm', car elles ne prennent en charge ici que peu d'options génériques.

Faites appel à la place aux commandes de type Système V, 'lp', 'lpstat' et 'cancel'.

  • Utilisez 'lpoptions' pour enregistrer les réglages des options propres à l'imprimante dans le ficher ~/.lpoptions, par exemple :
  utilisateur@hote$ lpoptions -o Resolution=1200dpi -p funprinter1000
  • Les options d'impression généralement disponibles sont décrites dans le « CUPS - Manuel de l'utilisateur », dans la section « Options standard d'imprimante » : http://localhost:631/sum.html#STANDARD_OPTIONS ou dans [file:/usr/share/doc/packages/cups/sum.html#STANDARD_OPTIONS file:/usr/share/doc/packages/cups/sum.html#STANDARD_OPTIONS]

L'interface web du démon cupsd

Chaque démon du réseau dispose d'une interface web HTTP. L'URL réservée à un démon cupsd local opérationnel est http://localhost:631/ et http://hote.domaine:631/ correspond à l'URL d'un démon cupsd distant sur l'ordinateur 'hote.domaine'. Pour pouvoir y accéder, il faut que l'ordinateur et le démon cupsd en question l'autorisent.

Détails :

Au quotidien, l'interface web est souvent la meilleure source d'informations sur les files d'attente et les travaux d'impression. Par exemple, http://localhost:631/printers/ fournit une vue d'ensemble de toutes les files d'attente d'un démon cupsd local. On peut également citer le cas des travaux d'impression réalisés par la file d'attente 'funprinter1000' sur l'ordinateur 'hote.domaine' qu'affiche une URL du type http://hote.domaine:631/printers/funprinter1000?which_jobs=completed.

L'interface web est la meilleure façon d'obtenir de la documentation pertinente sur le démon cupsd en question (et sa version), par exemple : http://localhost:631/documentation.html pour la documentation du démon cupsd local ou une URL du type http://hote.domaine:631/documentation.html pour la documentation concernant un démon cupsd distant sur l'ordinateur 'hote.domaine'.

On peut même accéder aux fichiers PPD du répertoire /etc/cups/ppd/ depuis l'interface web. Par exemple, le fichier PPD de la file d'attente 'funprinter1000' sur l'ordinateur local (/etc/cups/ppd/funprinter1000.ppd) avec l'URL http://localhost:631/printers/funprinter1000 et une URL du type http://hote.domaine:631/printers/file.ppd pour le fichier PPD de la file d'attente 'file' sur l'ordinateur 'hote.domaine'.

Configurer CUPS dans le réseau

Le principe de CUPS pour imprimer en réseau :

  • Serveur réseau CUPS (l'ordinateur sur lequel ont lieu le spoulage et le filtrage) :
    • Le démon cupsd d'un serveur réseau CUPS envoie des informations à propos de ses files d'attente sur une liste quelconque d'adresses IP (adresses d'hôtes et/ou adresses de diffusion). Le réglage par défaut est une liste vide.
    • La transmission est répétée après un intervalle de temps prédéfini. La valeur par défaut est 30 secondes.
  • Clients (les ordinateurs qui n'envoient que des travaux d'impression aux serveurs) :
    • Un démon cupsd local devrait s'exécuter sur chaque client car, par défaut, un démon cupsd écoute les informations provenant des serveurs. Il existe une liste de serveurs dont les informations sont acceptées. Par défaut, les informations sont acceptées par tous les serveurs.
    • Les informations concernant une file d'attente donnée sont supprimées sur le client si aucune information nouvelle sur la file d'attente n'arrive dans un intervalle de temps donné. La valeur par défaut est 300 secondes.

De cette façon, les files d'attente du serveur sont directement disponibles sur le client et les utilisateurs connectés aux clients peuvent parcourir (en anglais, « to browse ») les files d'attente réparties dans le réseau sur les différents serveurs, c'est pour ça qu'on appelle l'ensemble « navigation ».

La « navigation » est activée par défaut. Toutes les informations de navigation entrantes sont acceptées, mais aucune n'est envoyée (voir ci-dessus).

Configuration du serveur réseau CUPS :

  1. Configurez sur le serveur les files d'attente pour l'imprimante associée au serveur.
  2. Autorisez l'accès aux files d'attente à l'ordinateur client.
  3. Activez l'envoi des informations de navigation à l'ordinateur client.

Les sous-réseaux facilitent la configuration car il suffit alors d'envoyer les informations de navigation à une adresse de diffusion fixe au lieu d'une liste d'adresses d'hôtes individuelles et qui nécessitent une maintenance constante.

L'accès aux files d'attente d'un serveur est indépendant du fait de savoir à quels ordinateurs les serveurs envoient les informations de navigation. Un serveur peut accorder à tous les clients du réseau l'accès à ses files d'attente et n'envoyer des informations de navigation qu'à une partie des clients. Cependant, un serveur ne devrait pas envoyer d'information de navigation à des clients qui n'ont pas accès à ses files d'attente.

Ce qui n'est pas possible :

N'envoyer des informations de navigation que sur une partie des files d'attente d'un serveur.

Dans le cas d'une grande entreprise, il n'est pas possible de n'avoir qu'un gros serveur et d'envoyer des informations de navigation pour une partie des files d'attente aux clients du département ou du bâtiment et d'envoyer des informations de navigation pour une autre partie des files d'attente à d'autres clients.

Plusieurs serveurs (un par département ou bâtiment) sont nécessaires pour cela.

Détails :

  1. Configuration des files d'attente pour les imprimantes associées au serveur :

Les imprimantes qui appartiennent à un serveur sont précisément celles pour lesquelles le filtrage a lieu sur le serveur.

    1. Configurez les imprimantes de façon à ce que l'impression fonctionne correctement sur le serveur pour les utilisateurs normaux.

En cas de problèmes :

      1. Définissez le 'LogLevel debug' dans le fichier /etc/cups/cupsd.conf.
      2. Arrêtez le démon cupsd.
      3. Déplacez le fichier /var/log/cups/error_log* dans un autre endroit (ou supprimez-le) pour éviter de faire des recherches dans des fichiers journaux volumineux.
      4. Démarrez le démon cupsd.
      5. Essayez à nouveau l'action qui a causé le problème.
      6. Maintenant, le fichier /var/log/cups/error_log* contient de nombreux messages utiles lors du dépannage.
    1. Autorisez aux ordinateurs clients l'accès aux files d'attente :

Voici, pour SUSE LINUX 9.0, le paramétrage correct dans le fichier /etc/cups/cupsd.conf :

    BrowseAllow @LOCAL
    .
    .
    .
    <Location />
    ...
    Allow From @LOCAL
    </Location>
Ainsi, tous les ordinateurs LOCAL accèdent au démon cupsd. Les ordinateurs LOCAL sont ceux dont l'adresse IP appartient à une interface (plus précisément : des interfaces dont le drapeau IFF_POINTOPOINT n'est pas défini) et dont l'adresse IP appartient au même réseau que le serveur CUPS. Chaque paquet est rejeté immédiatement par tous les autres ordinateurs. Vous trouverez d'autres précisions dans sur 'BrowseAllow' dans l'article de la base de données d'assistance en:SDB:Printer Configuration from SUSE LINUX 9.0 on

Pour restreindre davantage l'accès ou ne pas l'autoriser aux ordinateurs non LOCAL, adaptez les éléments ci-dessus en conséquence. Les possibilités sont commentées dans le fichier /etc/cups/cupsd.conf. Il est recommandé d'utiliser des adresses IP plutôt que des noms.

    1. Activez l'envoi des informations de navigation à l'ordinateur client :

Dans le fichier /etc/cups/cupsd.conf, activez l'élément 'BrowseAddress @LOCAL' pour envoyer les informations de navigation à tous les ordinateurs LOCAL ou insérez des éléments du type 'BrowseAddress adresseIP.hote.client' ou 'BrowseAddress adresseIP.diffusion.reseau'. Les possibilités sont commentées dans le fichier /etc/cups/cupsd.conf.

    1. N'oubliez pas de consulter la section « Redémarrer le serveur CUPS » dans le « Manuel de l'administrateur CUPS » (voir plus haut).

L'envoi d'informations de navigation aux ordinateurs clients est sommme toute optionnel :

    • S'il est omis, les ordinateurs clients ne reçoivent pas automatiquement les informations sur les files d'attente présentes sur le serveur.
    • Cependant, en raison de l'étape précédente, les ordinateurs clients peuvent accéder aux files d'attente du serveur.

Dans les grands réseaux en particulier, il peut être rationnel d'accorder l'accès à tous les clients, mais de n'envoyer des informations de navigation qu'à une partie des clients (par exemple, seulement aux clients situés dans le même département ou le même bâtiment que le serveur).

  1. Configuration des ordinateurs clients :
    • Recommandé :
      1. Activer /etc/init.d/cups, de façon à ce que le démon cupsd soit redémarré lors de l'amorçage de l'ordinateur client.
      2. Démarrer le démon cupsd.

C'est un réglage par défaut sous SUSE LINUX 9.1. Il peut être effectué soit avec l'Éditeur de niveaux d'exécution de YaST soit avec 'insserv'. Il est normalement recommandé de ne rien configurer d'autre, en particulier :

      • Aucune file d'attente locale sur des ordinateurs clients.
      • Aucune modification des réglages par défaut concernant le démon cupsd sur des ordinateurs clients.
    • Cas particuliers :
      • Optionnel :

Ajoutez dans /etc/cups/cupsd.conf des éléments du type 'BrowseAllow IP.du.serveur.desire' et 'BrowseDeny IP.du.serveur.indesirable' pour rejeter tout paquet (donc les informations de navigation aussi) provenant des serveurs indésirables. Il est recommandé d'utiliser des adresses IP plutôt que des noms. Dans certains cas, il peut être utile d'adapter l'élément 'BrowseOrder'. S'il y a ses serveurs qui n'envoient pas d'informations de navigation mais dont les files d'attente sont accessibles (par exemple, des serveurs situés dans d'autres départements ou d'autres bâtiments), on peut envisager d'interroger activement les serveurs sur les informations de navigation (en anglais, « polling », scruter) : Pour ce faire, ajoutez un élément du type 'BrowsePoll adresseIP.du.serveur:631' pour chaque serveur dans le fichier /etc/cups/cupsd.conf. Il est recommandé d'utiliser des adresses IP plutôt que des noms et le port par défaut sur le serveur est le port 631. Après le redémarrage du démon cupsd, un démon cups-polld est lancé pour chaque déclaration 'BrowsePoll'.

      • Si la navigation est en règle générale indésirable :

Réglez 'Browsing Off' dans /etc/cups/cupsd.conf. Cela ne signifie pas que les files d'attente sur le serveur deviennent dorénavant inaccessibles. On peut encore utiliser par exemple des outils en ligne de commande mais maintenant, le serveur doit être indiqué explicitement (en principe avec l'option '-h'. Consultez les pages de manuel).

      • Configuration « client seulement » :

Si la navigation est en règle générale indésirable, il n'y aucune raison d'avoir à lancer un démon cupsd sur le client. Dans ce cas, il faudrait configurer en mode « client seulement », soit avec YaST ou manuellement comme suit :

        1. Arrêtez et désactivez le démon cupsd (Éditeur de niveaux d'exécution de YaST ou 'insserv').
        2. Dans le fichier /etc/cups/client.conf, ajoutez un élément du type 'ServerName adresseIP.du.serveur'.

Ce type d'élément ne devrait pas coexister avec un démon cupsd local actif. Un seul élément au maximum de ce genre est possible. C'est pourquoi le serveur utilisé de préférence devrait être enregistré ici. L'accès à un autre serveur est possible s'il est indiqué explicitement (option '-h') avec les outils en ligne de commande ou si la variable d'environnement 'CUPS_SERVER' est positionnée en conséquence. Certains logiciels applicatifs ignorent l'élément 'ServerName'. Dans ce cas, il peut être utile de définir 'CUPS_SERVER' ou d'indiquer explicitement le serveur au logiciel applicatif (par exemple, avec l'option '-h' dans la commande d'impression).

      • Installations client minimalistes :

Les conditions minimales requises pour communiquer avec des serveurs CUPS consistent en l'installation des paquetages 'cups-libs' et 'cups-client'. Il devient alors possible de communiquer avec les serveurs au moyen des outils en ligne de commande. Le minimum le plus strict pour communiquer avec un serveur CUPS est de n'installer que le paquetage 'cups-libs'. Dans ce cas, on ne pourra utiliser que des programmes (comme 'kprinter' par exemple) qui font directement appel aux fonctions de bibliothèque de CUPS. <keyword>cups,imprimer,imprimante,ppd,backend,filtre</keyword>