CUPS (Common Unix Printing System)

Sommaire

 

Sous Linux, l'impression n'est pas toujours aisée. Il faut déjà arriver à faire reconnaître son imprimante (de plus en plus de modèles sont reconnus à l'installation, notamment les imprimantes sur port USB, avec le noyau 2.4), puis trouver les bons pilotes, ce qui peut vite devenir un cauchemar. Perso, j'ai une imprimante sur port parallèle qui fonctionnait bien avec la Mandrake 7.1 des magazines, puis CUPS de la LM7.2 que j'ai achetée, n'arrivait pas du tout à sortir la moindre feuille. J'ai fini par trouver les bons pilotes dans Planète Linux n°10, après quelques journées de galère.

CUPS est rééllement un bon sytème d'impression, même s'il va sans doute encore être amélioré cette année. Il remplace le traditionnel lpr, et permet la gestion de l'impression sur un réseau, l'utilisation de plusieurs types de pilotes selon les travaux à réaliser...

Il est associé aux programmes avec interfaces graphiques xpp et qtcups (appellés Frontend), mais reste accessible en ligne de commande, avec lpr. Il gère plusieurs formats de fichiers tels que PDF, Postscript, JPEG, etc...

 

Installation (sur port parallèle)

En premier lieu, il faut optimiser la vitesse du port parallèle sur lequel l'imprimante est connectée. Pour ce faire, allez dans le BIOS, dans la section Integrated Peripheral, mettez l'option Parallel port sur ECP ou EPP+ECP, qui correspondent aux meilleurs réglages. 

Sachez que si vous possédez une imprimante de type GDI ("Winprinter"), il est peu probable que l'impression marche sous linux. Par contre si votre imprimante est "Postscript", ça risque d'aller tout seul. Postscript est le langage d'impression spécifique utilisé sous linux. Si votre imprimante n'est pas Postscript, pas de panique, vous pourrez certainement y arriver grâce à Ghostscript, qui aide à la conversion de fichiers Postscript en d'autres formats.

Dans tous les cas, il faut savoir qu'il est difficile d'arriver à une qualité d'impression équivalente à celle obtenue sous Win98. Cela dépend beaucoup des pilotes utlisés. 

Pour installer une imprimante, on peut passer par DrakConf, puis Outil de configuration des imprimantes (ou printerdrake dans un terminal). Il suffit de suivre les instructions, et de choisir entre imprimante locale, ou réseau, ainsi que les pilotes. Ceux qui portent le même nom que votre imprimante ne sont pas forcément les meilleurs, et à ce niveau, il faut faire des tests pour les détecter. Pour une HP 930C, j'utilise : 

- pilote Foomatic cdj 670 pour l'impression de texte.

- pilote Foomatic cdj 550.upp pour l'impression de photos et graphismes.

Les pilotes soit-disant de bonne qualité Gimp-print n'ont pas bien marché chez moi...

A noter qu'avec la dernière Mandrake 8.2, on atteint une niveau de qualité tout à fait honorable, preuve que les constructeurs ne sont pas tous des bloqués de la cervelle : HP nous propose un pilote foomatic+hpijs qui le fait bien...

 

Kups

Pour utiliser Kups, il suffit d'avoir installé KDE, et on peut le lancer depuis Gnome par exemple.

On peut le lancer, depuis un terminal, avec la commande : kups qui va ouvrir une interface graphique de configuration. Dans la fenêtre de gauche, l'ensemble des imprimantes est présenté sous forme d'une arborescence. En cliquant sur chaque imprimante installée, on obtient ses caractéristiques, noms, pilote utilisé dans la fenêtre de droite, et en cliquant-droit, on peut supprimer, désactiver une imprimante. L'onglet "Jobs" nous permet de visualiser en temsp réel, les différents travaux envoyés à chaque périphérique d'impression (c'est en fait l'équivalent de la commande : lpq qui renvoie la liste des travaux en cours, dans un terminal). On peut aussi imprimer des pages-test, et configurer les imprimantes.

Pour ajouter une imprimante, on clique sur Add Printer dans les menus du dessus, et on suit les instructions... normalement, le type de l'imprimante est automatiquement détecté (USB, parallèle...), et on choisit les pilotes voulus, comme avec le programme PrinterDrake.

 

XPP (X Printing Panel)

C'est le premier outil graphique pour CUPS. Il est utilisable sous n'importe quel environnement graphique, à la place des commandes lp ou lpr. On le met en oeuvre avec : xpp nomdufichier, nomdufichier étant un fichier ayant un format compatible avec CUPS. On a la possibilité de le lancer avec la commande xpp saisie dans un terminal.

Ouvrez un fichier texte dans l'éditeur avancé. Pour lancer l'impression, cliquez sur l'icône "imprimante", une fenêtre doit s'ouvrir, puis regardez le champ "Printer Command", il doit y avoir un truc comme : lpr -P%. Remplacer cette commande par xpp, et vous aurez le Panneau d'Impression X (X Printing Panel in English) qui s'ouvrira au moment de l'impression, avec la liste des imprimantes disponibles. 

On choisit alors le périphérique d'impression voulu, ou bien on indique le chemin du fichier à imprimer en cliquant sur le bouton BROWSE. Si on a un fichier déjà ouvert dans l'éditeur avancé, le fait de cliquer sur le bouton PRINT en bas à droite, imprimera ledit fichier texte. On peut bien sûr paramétrer les imprimantes avec le bouton OPTIONS : réglage des marges, du format de papier, options d'optimisation de l'impression RET pour certaines imprimantes, impression recto-verso, lumière, saturation, gamma, etc... 

Ces paramètres peuvent être enregistrés, et une imprimante par défaut définie. Bien sûr, chaque utlisateur peut avoir ses propres réglages. (voir le fichier caché .lpoptions dans votre /HOME).

Attention : si c'est le root qui configure xpp, les réglages sont valables pour tous les utlisateurs (voir dans /etc/cups/lpoptions).

 

Qtcups

Il réallise le même travail que xpp, et possède lui aussi une interface graphique qui n'est pas sans rappeller celle rencontrée sous Win98. Vous ne pouvez pas définir de périphérique d'impression par défaut, ni sélectionner directement le fichier à imprimer, mais il propose les mêmes fonctions de paramétrage. Le bouton PROPERTIES nous permet d'accéder aux réglages du format des feuilles (A4, US letter...), lumière, gamma, résolution, à ceci près que l'on a un apreçu de l'effet produit. De plus, sous KDE, il suffit de faire glisser l'icône d'un fichier sur celle de l'imprimante sur le bureau, pour lancer l'impression, cette icône "imprimante" étant associée par défaut au programme Qtcups.

Pour le lancer : qtcups dans un terminal.

 

Ligne de commande

CUPS est compatible avec l'ancien sytème d'impresion LPD. La commande la plus utilisée étant lpr, la plupart des applications utilisant cette commande pour imprimer fonctionneront avec CUPS. On utilise donc :

lpr -P nomimprimante nomfichier

Ce qui est nouveau avec la commande lpr utilisée avec CUPS, c'est que l'on a une option -o :

lpr -P nomimprimante-o page-ranges=1-3,8,10-15 -o media=Upper qui va imprimer les pages 1 à 3, 8 et 10 à 15, le papier étant introduit par le bac (Upper tray). 

Pour obtenir de l'aide sur cette commande et ses options, taper dans un terminal : lphelp nomimprimante | less. Il y a aussi : man lpr 

On peut enregistrer les réglages en cours avec : lpoptions -d nomimprimante qui choisit nomimprimante comme imprimante par défaut. 

Pour avoir les idées claires, consultez les fichiers suivants :

/etc/printcap (liste des imprimantes installées), /etc/cups/lpoptions, /etc/cups/printers.conf, /etc/cups/cupsd.conf, /var/spool/cups.

On peut enfin gérer les travaux en ligne de commande : lpq nous renseigne sur la file d'attente des jobs d'impression (queue), en donnant notamment le numéro du job, l'utilisateur...

Pour stopper une impression, il suffit de supprimer le job de la file d'attente avec la commande :

lprm -P NomImprimante jobID , l'option -P étant suivie du nom de l'imprimante qui bosse, et jobID étant le numéro identifiant le job dans la queue.

 

Quelques trucs

CUPS peut vite devenir gourmand en ressources si on ne fais pas attention à purger certains dossiers. En effet, il garde un historique des "jobs" d'impression effectués, et l'espace disque est alors utilisé. Pour éviter cela, il suffit d'éditer le fichier /etc/cups/cupsd.conf et d'ajouter la ligne : PreserveJobHistory No, et de redémarrer CUPS avec la commande : service cups restart pour valider ces changements.

Il garde aussi les anciens jobs sur le disque dur dans le répertoire /var/spool/cups.

Pour le vider, faites la manip suivante dans un terminal :

service cups stop (pour arrêter le démon de CUPS (démon ou daemon : programme tournant en tâche de fond)

rm -f /var/spool/cups/* (pour effacer tous les fichiers dans /var/spool/cups...) 

rm -f /var/spool/cups/tmp/* (...ainsi que dans /var/spool/cups/tmp)

service cups restart (et on redémarre le démon CUPS)

 

Dans le cas d'une imprimante USB non reconnue, regardez d'abord si le pilote du port USB (qui est en fait chargé sous forme d'un module du noyau) est présent, avec la commande : lsmod qui renvoie la liste des modules actuellement chargés dans le kernel. On devrait avoir une ligne "printer".

Si tel n'est pas le cas, éditez le fichier /etc/sysconfig/usb et ajoutez la ligne : PRINTER=yes 

On redémarre alors les deux services avec :

service usb restart

service cups restart

Normalement, le port USB devrait être reconnu, et l'imprimante détectée par CUPS. On choisit alors le type, les pilotes de l'imprimantes...

Je n'ai pas traité la partie "réseau" de CUPS, mais il faut savoir qu'il est utilisable avec la majorité des protocoles d'impression réseau tels que SMB (pour les réseaux "hybrides"partagés avec Win), IPP, LPD. 

 

Pour que CUPS soit activé dès le démarrage, on utilise le gestionnaire des scripts de démarrage ksysv

ksysv lance l'interface graphique de configuration de ce programme. Il est très simple d'utilisation, puisqu'il suffit de glisser-déposer les scripts dans la ligne démarrer ou arrêter. Le problème, c'est qu'on a plusieurs niveaux d'exécution. Qu'est-ce donc que cela ?

On peut régler Linux pour qu'il démarre soit en mode console, avec ou sans interface graphique, soit en mode mono ou multi-utilisateurs, etc... Vos trouverez la liste des 7 possibilités (niveau 0 à 6), dans le fichier /etc/inittab. On comprend alors que le niveau 0 correspond à "halt", le niveau 1, au mode mono-utilisateur, le niveau 5 au mode graphique (X11, le serveur graphique), le niveau 6 à "reboot" pour redémarrer, etc...

C'est pourquoi pour passer du mode graphique au mode console, on tape : /sbin/init 3 ; pour faire un reboot : /sbin/init 6 et /sbin/init 0 pour arrêter la machine.

On remarque aussi, dans le fichier /etc/inittab, la ligne : id:5:initdefault: qui indique que par défaut, Linux est démarré en mode graphique. Attention à ne pas fixer le niveau d'exécution par défaut à 0 ou à 6, sans quoi il serait impossible de démarrer la bécane.

Donc pour démarrer un service spécifique avec ksysv, il suffit de faire glisser le script correspondant dans la case voulue, au niveau d'exécution souhaité. Pour faire en sorte que CUPS soit opérationnel au lancement de mon bureau graphique, je dois le placer dans le niveau d'exécution 5, qui correspond au mode de démarrage par défaut, le mode graphique. On enregistre la configuration et on quitte le prog' ksysv.

 

Sommaire