Divers scenarii de configurations

Accéder à http://localhost:631/admin/?op=add-printer pour effectuer l'installation d'une imprimante sur le serveur par l'interface web.

Il faut commencer par entrer un nom. Celui-ci n'a d'importance que si vous configurez plusieurs imprimantes ; il apparaît dans les options des programmes d'impression, ou dans l'option -P de lpr.

Ensuite, pour faire les choses proprement et complètement, vous avez la possibilité de saisir un emplacement et une description.

Les caractéristiques logiques et physiques des imprimantes seront définies dans les pages de saisie suivantes...

Une imprimante locale

Page suivante, il faut choisir un protocole d'impression sur le port parallèle . Des protocoles spéciaux sont proposés pour les imprimantes de marques Epson ou Canon. Ensuite, à l'écran suivant on entre la marque de l'imprimante, et au dernier, son modèle.

Une imprimante locale en port USB

Il nécessaire d'avoir inclut dans le noyau le support pour l'USB :

Ensuite, installer le paquet hotplug , les scripts qu'il contient permettent une gestion transparente des périphériques hotplug.

La configuration de l'imprimante se déroule via le menu de CUPS à l'adresse :

http://localhost:631/admin/?op=add-printer

La configuration est identique quelque soit le type de connectique reliant l'imprimante au serveur CUPS, USB, série, parallèle.

Choix des drivers

Parfois, plusieurs drivers sont proposés pour la même imprimante, par exemple un driver cupsomatic et un driver gimp-print. Vous pouvez faire des essais pour voir ce qui vous convient le mieux. Pour les imprimantes Epson, le driver gimp-print offre une qualité supérieure, pour les autres à vous de voir.

Après ça, l'imprimante est prête à fonctionner. Vous pouvez

Toutes les options de configuration peuvent être ensuite personnalisées par chaque utilisateur (dans son environnement).

9.3.4 Imprimer sur un serveur

Serveur CUPS distant

Sur chaque client GNU/linux, éditer le fichier /etc/cups/client.conf et indiquer le nom du serveur CUPS (directive ?ServerName).

Serveur LPD distant

Si vous voulez imprimer sur un serveur Unix utilisant LPD ou sur une imprimante en réseau compatible avec ce protocole, il faut choisir le protocole LPD/LPR. Par la suite, il vous est demandé une URI, de la forme

  lpd://serveur/imprimante

Le point épineux est le modèle. S'il s'agit d'une imprimante Postscript réseau, sa marque et son modèle sont en général présents, sinon choisissez une imprimante PostScript générique (par exemple, HP Laserjet ou Color Laserjet quelquechose + Postscript). S'il s'agit d'un serveur LPD, il faut déterminer ses capacités. La plupart n'acceptent que le Postscript, auquel cas il faut utiliser là aussi un driver Postscript générique.

Serveur Windows distant

Pour imprimer vers une imprimante partagée par un serveur NT, le serveur CUPS utilise samba, et plus précisément le programme smbspool disponible dans le paquet smbclient .

L'imprimante doit donc être installée avec une adresse de la forme :

   smb://login:password@GROUP/serveur/imprimante

(login, password, et GROUP sont optionnels).

Ensuite, il faut impérativement sélectionner le driver de l'imprimante située à l'autre bout du serveur, car Windows ne fait pas de retraitement.

Plusieurs personnes signalent des problèmes en imprimant vers des serveurs Windows 2000 ou Windows NT, engendrant dans http://localhost:631/printers/ des messages d'erreur du type CUPS Unable to connect to SAMBA host

En attendant que ce problème soit réglé dans samba, il est possible d'imprimer en remplaçant le fichier smbspool par celui que vous pourrez trouver sur

http://people.debian.org/~joss/misc/smbspool .

Astuce

Si l'impression ne fonctionne pas, essayer d'abord d'imprimer un simple fichier texte directement en utilisant smbspool (cf man smbspool pour les arguments, tout les arguments sont obligatoires).

Les classes d'imprimantes

Les classes d'imprimantes ne sont pas très utiles au tout-venant, mais sont indispensables dans certaines circonstances.

Imaginez que vous ayiez une batterie de 12 imprimantes dans un local dédié et qu'une centaine de personnes s'en servent. Vous voulez donc répartir la charge. Il serait trop compliqué d'associer une imprimante à chaque utilisateur, et pas très pratique de laisser l'utilisateur choisir (suivant quels critères ?).

CUPS apporte une solution très simple avec les classes.

Il vous est alors demandé le nom de la classe, telle qu'elle apparaîtra (à savoir comme une autre imprimante), puis le nom des imprimantes à associer à cette classe. Par la suite, les travaux d'impression envoyés sur l'imprimante virtuelle qui représente cette classe seront répartis entre les différentes files d'attente de manière à répartir la charge.

9.3.5 Impression à partir de clients non UNIX

Client Windows 95 ou Windows 98

L'impression à partir de ces OS requière la présence sur le serveur CUPS du serveur SAMBA (paquets samba-common et samba).

L'impression s'effectue en mode "raw".

C'est à dire que Windows par l'intermédiaire des pilotes d'impressions génère un fichier directement compréhensible par l'imprimante. Windows communique ce fichier au serveur Samba, qui le transmet à CUPS. CUPS l'envoie à l'imprimante en mode "raw".

Dans le fichier /etc/samba/smb.conf , vous devez avoir les paramètres suivants :

  ["global"]
   printing = cups
   printcap name = /etc/printcap.cups
   load printers = yes

  ["printers"]
   comment = All printers
   browseable = yes
   path = /tmp
   printable = yes
   public = yes
   writable = yes
   create mode = 0700
   guest ok = yes

Dans le fichier /etc/cups/mime.convs , vous devez avoir la ligne suivante décommentée :

 application/octet-stream   application/vnd.cups-raw   0   -

Dans le fichier /etc/cups/mime.types , vous devez avoir la ligne suivante décommentée :

 application/octet-stream

Sur le poste Windows aller dans le panneau de gestion des imprimantes, et cliquer sur "ajouter une imprimante". Selectionner une imprimante en réseau et suivre les instructions. Cette installation requière les pilotes d'impression pour Windows.

Parfois, les pilotes d'impression refusent de comprendre que l'imprimante est distante, ils ne fonctionnent que lorsque l'imprimante est reliée directement au poste client.

La solution, est d'utiliser un pilote générique Postscript, ce pilote est disponible à l'adresse :

http://www.adobe.com/support/downloads/main.html#Printer

Il est à remarquer que ce pilote fonctionne parfois mieux avec CUPS que les pilotes d'impression natifs. Ce pilote génère un fichier postscript niveau 2 ou 3 compréhensible par CUPS.

Le fichier téléchargé sur le site d'Adobe est un executable pour Windows. Ce programme permet de selectionner une imprimante réseau, visible via le serveur Samba. Il installe et configure les pilotes d'impressions pour Windows.

Client Windows 2000 ou Windows XP Windows 2000 et Windows XP savent gérer de façon native le protocole IPP. L'installation nécessite les pilotes d'impressions pour Windows 2000 ou XP.

L'installation d'une imprimante distante s'effectue via le panneau de configuration des imprimantes. Il faut cliquer sur "ajouter une imprimante", selectionner une imprimante en réseau et suivre les instructions.

Le problème est que si on fournit le chemin de l'imprimante distante tel quel, Windows ne la detecte pas.

Exemple de chemin d'imprimante :

http://monserveur:631/printers/monimprimante

La solution est d'ajouter l'imprimante dans une classe et de fournir à Windows le chemin de la classe :

http://monserveur:631/classes/maclasse

(Alexandre Ratti) Ce bug est apparemment corrigé par le Service Pack 1.

Client Macintoch (version 9)

L'impression à partir d'un Mac nécessite la présence sur le serveur CUPS du serveur NETATALK (paquet netatalk). Linux doit être compilé avec le support réseau "Appletalk protocol support".

L'impression s'effectue en mode "raw" (cf. Impression d'un client Windows 95 ou 98).

Dans le fichier /etc/netatalk/papd.conf, vous devez configurer chaques imprimantes (exemple pour une imprimante Brother) :

  Brother:\ 
        :pr=||/usr/bin/lpr -P Brother:\
        :op=lp:\
        :pd=/etc/cups/ppd/Brother.ppd:

Sur le Mac, vous devez télécharger les drivers génériques Postscript fournit par Adobe, à l'adresse :

http://www.adobe.com/support/downloads/main.html#Printer

Le fichier téléchargé sur le site d'Adobe est un executable pour Macintoch. Ce programme permet de selectionner une imprimante réseau, visible via le serveur Netatalk. Il installe et configure les pilotes d'impressions pour Macintoch.

Ces pilotes génèrent des fichiers postscript niveau 2 ou 3 compréhensible par CUPS.

Client Macintoch (version X)

Apple a acheté une license pour CUPS auprès de Easy Software Products . CUPS est intégré dans ?MacOS X version 10.2.

Je n'ai à l'heure actuel pas testé la version 10.2 de ?MacOS X.

Pour ?MacOS X antèrieur à la version 10.2, il existe plusieurs solutions pour pouvoir imprimer vers un serveur CUPS.

La première solution, est de se souvenir que ?MacOS X intègre la couche "classic" c'est à dire ?MacOS 9. On peut alors utiliser la méthode décrite précédement pour ?MacOS 9.

La deuxième solution est de configurer le serveur CUPS comme serveur LPD, en installant le paquet cupsys-bsd, et en autorisant la compatibilité avec les serveurs BSD LPD.

Cette manipulation modifie le fichier /etc/inetd.conf en ajoutant la ligne :

  printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd\
   cups-lpd -o document-format=application/octet-stream

Puis, sur la Mac, executer le "print center" dans le dossier "Applications/Utilities". Et ajouter une imprimante LPR en specifiant l'adresse IP ou le nom du serveur CUPS. Il faut aussi selectionner un fichier de description Postscript de l'imprimante (fichier PPD) ou un fichier PPD générique.

L'absence de fichier PPD pour l'imprimante réseau, ou la non impression de document via le fichier PPD générique, vous feront certainement préférer la première methode, ou passer à la version 10.2 de ?MacOS X.

Le point de vue de l'utilisateur

Comment imprimer

Comme expliqué en introduction, l'impression est lancée via la commande lpr. CUPS est capable d'imprimer directement les fichiers au format Postscript, PDF, texte brut, ainsi que les formats d'image les plus courants.

En mode graphique, les logiciels bien écrits sont capables de détecter les différentes imprimantes, les autres vous demanderont une commande à exécuter pour imprimer : donnez-leur lpr pour imprimer sur l'imprimante par défaut, ou lpr -Pimprimante pour imprimer sur l'imprimante imprimante.

Personnalisation de l'impression

L'impression est configurable très simplement pour chaque utilisateur par le programme xpp, contenu dans le paquet du même nom. Il vous présente la liste des imprimantes disponibles, et on peut paramétrer l'impression pour chacune d'entre elles en cliquant sur Options (on s'en serait douté me direz-vous). N'oubliez tout de même pas de cliquer sur Save settings pour enregistrer vos modifications.

De plus, xpp permet de paramétrer facilement des « sous-configurations » (instances) personnelles pour CUPS. Ceci permet d'enregistrer différentes configurations fréquemment utilisées pour une imprimante.

Par exemple, si vous imprimez souvent en qualité « brouillon », il vous suffit de :

Lorsque vous imprimerez avec xpp, vous pourrez directement sélectionner la configuration brouillon (cela fonctionne aussi avec lpr -Pbrouillon fichier).

Le défaut de xpp étant de ne pas être francisé, on pourra lui préférer gtklp, suivant les goûts.

Il existe aussi qtcups, dont la fonction première est de ressembler au panneau d'impression de Windows, ce qui peut servir à ne pas dérouter certains.

L'existence de lpoptions 2 permet d'effectuer ces réglages en ligne de commande. On se réfèrera à la page de manuel pour une description plus complète.