CUPS est un système modulaire d'impression pour les systèmes UNIX. Il comprend un spooler (file d'attente), une gestion de l'impression à travers le réseau et un système de drivers très ouvert permettant à des fabriquant de fournir leur propre mouture.
Mon cas d'école est l'installation sur une machine faisant office de serveur d'impression, d'une imprimante Epson Stylus Photo RX640, ainsi que d'une imprimante virtuelle pour les sorties en PDF.
Pour commencer, un petit lot de paquets à installer
urpmi cups cups-common cups-drivers ghostscript gutenprint-foomatic
Ceci fait, un petit (re)démarrage de CUPS s'impose
service cups restart
Maintenant un démon cupsd devrait être chargé.
Pour que votre imprimante soit reconnue, il faut que CUPS dispose d'un pilote (appelé filtre) qui lui soit dédié et il y a à ma connaissance cinq sources différentes de pilotes d'impression pour Linux :
exception fait des pilots commerciauxturbolinux (qui restent la solution de dernier recours), la meilleur solution pour savoir quel pilote est le plus apte à contrôler votre imprimante est d'interroger la base OpenPrinting.
Si le pilote conseillé est un Gutenprint ou foomatic, il y a de forte chance que vous l'ayez déjà installé, passez donc à l'étape configuration
. Dans mon cas, le pilote conseillé est celui d'Epson qu'il va donc me falloir installer.
Epson fait parti des rares fabriquant qui non seulement produisent des drivers Linux, mais en plus les fournissent sous licence GPL. Avec les sources donc. Donc que ce soit imprimantes ou scanners, mon choix se portent donc maintenant systématiquement sur Epson. Ces pilotes sont disponibles sur le site de la société Avasys.
Pour installer le driver d'Avasys, quelques étapes sont nécessaires. Une fois le driver téléchargé, il faut allumer l'imprimante, vérifier les connections, et installer le paquet.
urpmi pipslite-cups-1.0.2-2.i386.rpm
Ensuite il faut générer le driver CUPS, le fichier PPD :
/usr/share/pipslite/setup
Ceci fait, il faut l'installer par la commande suivante :
/usr/bin/pipslite-install
Voilà, le plus dur est fait, le driver est en place, vous pouvez passer à l'étape suivante.
A ce stade, le pilote, quel que soit votre choix, est installé. Le paramétrage de CUPS est lui très simple et vous n'aurez besoin que d'un navigateur Web positionné à l'addresse https://localhost:631 si l'installation est locale, ou https://machine_cups:631 pour une machine distante.
Si l'interface met du temps à s'afficher, aller vite à la section Dépannage.Sinon, une fois dans l'interface visible, nous sommes pret à installer l'imprimante. Pour cela, cliquez sur l'onglet administration. Là devrait apparaître la liste des imprimantes reconnues par Cups, sélectionnez la votre. Ensuite vous est demandé le driver à utiliser. Là, tout dépend de ce que vous avez installé comme pilote et des conseils donnés par OpenPrinting.org. CUPS étant un système sécurisé, vous serez amené à un moment ou à un autre à saisir le mot de passe root. Lorsque vous avez choisi, validez, l'imprimante est installée.
Si vous cliquez sur l'onglet Imprimantes, vous devriez voir une ligne lui correspondant. Pour tester, il suffit de cliquer sur Imprimer la page de test CUPS. Et là si tout va bien, la page de test devrait sortir...
Une telle imprimante va générer un fichier PDF dans un dossier donné, par exemple en /tmp/pdf. Il faut donc d'abord créer ce dossier et lui donner les bons droits :
mkdir /tmp/pdf
chown :lp /tmp/pdf
chmod g+rwX /tmp/pdf
Ensuite, il suffit dans l'interface de CUPS d'aller sur l'onglet Administration puis de cliquer sur Ajouter une imprimante. Donnez-lui comme nom PDF puis passez à la suite.
Dans la liste, sélectionnez PDF Writing, puis passez à la suite. CUPS vous demande alors l'URI de l'imprimante et toute l'astuce est là, nous allons donner notre chemin : pdf:/tmp/pdf.
Choisissez ensuite la marque : Generic, puis le modèle : Generic PostScript Printer Foomatic/Postscript.
Il ne reste plus qu'à valider, et comme précédemment aller dans l'onglet imprimante pour lancer une page de test et vérifier que le fichier est bien là.
Si rien ne marche comme prévu, passez CUPS en mode debug en passant de info à debug l'entrée levelinfo dans /etc/cups/cupsd.conf. Ensuite relancez cups et faite tail sur les logs.
Prenez soin de remettre info lorsque le système fonctionne pour ne pas vous retrouver avec des logs énormes.
Attention ceci qui suit est une astuce classifiée galactique
.
Si le temps de connexion à la page d'administration vous parait trop long, genre infini, allez sur la machine d'impression, montez la verbosité et fait une tail -f /var/log/cups/error_log. Regardez alors si vous voyez apparaître la ligne Generating SSL server key.... Si tel est le cas, j'ai peut-être la solution...
En gros, le système essaye de générer une clef pour assurer le cryptage entre votre navigateur web et le serveur d'impression. Hors, pour une raison qui m'est totalement obscure, le système n'a pas assez d'entropie pour pouvoir générer suffisamment de nombres aléatoires (l'entropie d'un système linux est vérifiable par la commande sysctl kernel.random.entropy_avail).
Pour augmenter l'entropie, deux solutions. La première est de générer suffisamment de "bruit" sur la machine par exemple en faisant un find /. La seconde, est d'installer le paquet urpmi rng-utils et de taper, sur le serveur d'impression, la commande rngd -r /dev/urandom -o /dev/random. Et là, pouf, la connexion se débloque et le navigateur affiche la page d'administration.
Merci milles fois à Ross sans qui j'aurais sûrement passé ma soirée à tenter de comprendre...
Si vous obtenez l'erreur Type de fichier non reconnu "mime/postscript, c'est qu'il vous manque ghostscript sur votre machine. Faites un urpmi ghostscript et retentez l'impression de la page de test.
Autre possibilité, le fichier /etc/cups/pstoraster.convs n'est pas créé correctement. En ce cas, créez le et y mettre le contenu suivante :
application/vnd.cups-postscript application/vnd.cups-raster 100 pstoraster
Certains pilotes ne sont pas au courrant que GhostScript ne s'apelle plus gs mais... ghostscript. La solution est donc de créer un lien symbolique :
ln -s /usr/bin/ghostscript /usr/bin/gs
Pour que CUPS puisse fonctionner il faut que le périphériques (ex. /dev/lp0) soit donné au groupe lp avec les droits de lecture ET écriture. Pour changer cela il faut identifier le device de votre imprimante :
chown :lp /dev/lp0
chmod g+rw /dev/lp0
La même opération est à effectuer sur un dossier devant recevoir des fichiers PDF générés par CUPS.
A ce stade l'imprimante est fonctionnelle sur le serveur, reste à paramétrer le poste client. Il faut évidement y installer cups par un urpmi cups-common. Attention, il n'est nullement besoin d'installer plus que cela. En effet, si vous installiez cups en complet, vous seriez vous même un serveur et cela n'a aucun intérêt. Vous seriez obligé d'installer à nouveau les pilotes pour chaque imprimante utilisée.
La bonne solution est donc de n'installer que le strict minimum, à savoir cups-common et de configurer votre machine en client du serveur d'impression. Cela se fait très simplement en modifiant (ou en créant) le fichier /etc/cups/client.conf. Si le nom de la machine à laquelle est connecté l'imprimante est serveur_impression, vous devez mettre dans ce fichier :
ServerName serveur_impression
C'est à ce stade que l'on comprend l'intérêt réel de cups. Vous n'avez en effet nul besoin de drivers sur les postes clients comme c'est le cas sous Windows. La raison en est que tout est transformé en postscript. Lorsque votre poste client demande l'impression d'un texte, le driver de kde par exemple, va transformer le document en postscript et l'envoyer au serveur d'impression qui va, via le driver que nous avons installé, transformer ce postscript en un langage compréhensible par l'imprimante.
Pour s'en convaincre, il suffit d'installer sous Gnome le paquet gnome-cups-manager et de le lancer. Nos deux imprimantes devraient directement apparaître sans avoir touché à rien. Un click-droit sur une imprimante pour en afficher les propriétés, et lancer une page d'impression.
Sous KDE c'est dans panneau de configuration/périphériques/imprimantes que cela se passe. Dans la liste Système d'impression utilisé, sélectionnez CUPS (Common Unix Print System). Cliquez sur Appliquer et vois imprimantes devraient apparaître. Faites un click droit dessus et choisissez Tester l'imprimante.., puis Imprimer la page de test.
Se reporter à ce tutoriel.
CUPS est capricieux, pointilleux surtout, mais extrêmement puissant. Il permet de transformer n'importe quelle machine en serveur d'impression fiable et efficace, même sous une forte demande avec de nombreuses imprimantes connectées. Et finalement, une fois de plus, la mauvaise réputation de l'impression sous Linux tient plus à une déficience des fabricants en terme de pilote que dans la machinerie interne.
Merci.
Grâce à vos explications claires (c'est rare), j'ai pu transposer tout ça à ma Brother (driver Linux du fabricant) et je peux enfin imprimer depuis le Gimp.
Poster un nouveau commentaire