Une brève introduction à l'impression en réseau avec CUPS

Gazette Linux n°117 — Août 2005

Edgar Howell

Article paru dans le n°117 de la Gazette Linux d'août 2005.

Traduction française par Jean-Baka Domelevo-Entfellner .

Relecture de la traduction française par Joëlle Cornavin .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Fatigué de me battre avec des imprimantes non prévues pour Linux et les compromis sans fin qu'elles impliquent, j'ai finalement décidé d'acheter une imprimante laser couleur dotée d'une carte réseau. Plusieurs facteurs ont contribué à cette décision :

Mais les conséquences d'une telle décision n'étaient pas triviales. La distribution SuSE (au moment où j'écris cet article, la version actuelle est la 9.3, et j'en suis à la 9.2) installe CUPS en arrière-plan depuis plusieurs versions déjà. Puisque les commandes de l'imprimante sont plus ou moins les mêmes que celles utilisées sous lprng, je n'ai jamais vraiment eu besoin d'apprendre grand chose sur CUPS. Enfin, jusqu'à ce que l'imprimante réseau arrive... Et là c'est très vite devenu amusant.

Juste un exemple des problèmes qui se sont posés : bien que la documentation affirme que le mot de passe demandé lorsqu'on se connecte pour effectuer des tâches d'administration est le mot de passe root, cela n'a jamais fonctionné pour ce qui me concerne.

Cependant, comme d'habitude, si vous savez ce qu'il faut faire, le fonctionnement de CUPS n'a rien de compliqué. En supposant que CUPS a déjà été installé sur la machine en question, voici ma liste des étapes à respecter pour y installer une imprimante réseau sous CUPS. Vous devrez le faire sur chaque machine qui aura à accéder à cette imprimante. Notez que dans ce qui va suivre, les instructions d'installation du fabricant ne sont d'aucune utilité.

Veillez à choisir une imprimante pour laquelle le fabricant fournit une PPD (Postscript Printer Definition, définition Postscript de l'imprimante) puisque seul le fabricant peut produire la PPD nécessaire pour une utilisation optimale de son matériel. En fait, il est important de savoir si l'imprimante est connectée directement à un PC ou via un réseau local. L'imprimante que j'ai choisie n'avait pas de PPD sur les cédéroms fournis, mais un peu de temps passé à faire des recherches sur Internet m'a suffi à trouver un fichier qui comprenait deux définitions, une pour le modèle noir&blanc et une pour le modèle couleur.

En tant qu'utilisateur root, suivez les étapes ci-dessous :

  1. Dans /etc/cups/cupsd.conf, commentez les lignes AuthType, AuthClass et AuthGroupName

  2. Ajoutez << cupsd : ALL >> dans le fichier /etc/hosts.allow

  3. Copiez le fichier PPD de l'imprimante dans /usr/share/cups/model/

  4. Redémarrez CUPS par la commande /etc/init.d/cups restart

  5. En tant qu'utilisateur normal (non root), saisissez la commande suivante (tirée presque textuellement de la documentation de CUPS) :

    
/usr/sbin/lpadmin -p net_printer -E -m printer.ppd \
    -v socket://192.168.0.1
    
    1. net_printer est le nom affecté à l'imprimante et peut être une chaîne de caractères quelconque. Si vous n'avez qu'une imprimante, vous n'aurez pas besoin d'utiliser son nom dans des commandes d'impression.

    2. printer.ppd est le nom du fichier PPD que vous avez placé dans /usr/share/cups/model/.

    3. Auparavant j'avais assigné l'adresse IP par le biais du panneau de commandes en façade de l'imprimante mais CUPS fournit une commande, arp, grâce à laquelle on peut le faire en utilisant l'adresse Ethernet MAC.

  6. Vérifiez ensuite l'état des imprimantes : lpstat -p -d. Voici à quoi devrait ressembler le résultat :

    
printer net_printer is idle.  enabled since Jan 01 00:00
    system default destination: net_printer
    

La ligne system default destination: net_printer est importante. C'est là que Mozilla, Opera, OpenOffice et consorts imprimeront, sauf indication contraire de votre part quand vous leur demandez d'imprimer. L'interface web de CUPS http://localhost:631/admin offre un moyen pratique de changer l'imprimante par défaut.

Les nouveaux convertis au monde Linux devraient noter qu'une PPD est analogue au pilote de sinistre mémoire, quoique relativement différent. Comme avec un pilote, on a besoin sous CUPS d'un fichier PPD pour l'imprimante. Mais il ne s'agit pas de code exécutable qui peut rendre votre système instable. Peut-être vaut-il mieux le comparer à un fichier de configuration : pour l'essentiel, il contient simplement des données en texte clair qui informent le système d'impression (CUPS) des possibilités qu'offre l'imprimante et de la manière de formater les données en conséquence.

Par ailleurs, chaque machine devant envoyer des travaux d'impression à l'imprimante doit avoir la PPD correcte, comme c'est le cas avec un pilote : la machine à l'origine de l'impression doit envoyer quelque chose de compréhensible pour l'imprimante.

En suivant les étapes ci-dessus, j'ai mis moins de 15 minutes pour configurer un ordinateur portable sous SuSE 8.0 afin qu'il imprime via l'imprimante réseau. Ce temps comprend le temps qu'il m'a fallu pour supprimer lprng et installer CUPS à partir du cédérom de la distribution !

Gardez présent à l'esprit que l'exposé ci-dessus ignore 99.99 % des possibilités de CUPS et que rien n'est sécurisé. Quiconque ayant accès à votre réseau pourrait démarrer des travaux d'impression et gaspiller du toner jusqu'à ce qu'il n'y ait plus de papier.

Mais dans le cadre d'un système domestique simple protégé par un pare-feu, cela vous permettra d'utiliser votre imprimante réseau sous CUPS, tout en vous épargnant le temps nécessaire à l'apprentissage de tous les aspects que nous avons ignorés pour le moment.

Edgar est consultant dans la région de Cologne et de Bonn (Allemagne). Son travail quotidien consiste à assister ses clients pour établir la paie, à maintenir d'anciens programmes IBM en assembleur, quelques autres en COBOL à l'occasion et par ailleurs à utiliser QMF, PL/1 et DB/2 sous MVS.

Note

Sera rejeté tout message électronique dont le sujet ne contient pas « linuxgazette ».