Nous avons plusieurs ordinateurs sous Ubuntu ou Debian, ainsi qu'un serveur également sous Debian. Nous avons une imprimante/scanner pixma 610, qui était reliée à un des ordinateurs. Nous avons décidé de brancher l'imprimante sur le serveur, et de le configurer en serveur d'impression afin de pouvoir imprimer depuis tous les ordinateurs.

La manipulation, sans être extrêmement complexe, n'est pas triviale. Je la pose donc par écrit, tout d'abord pour m'en souvenir si je dois un jour la refaire, d'autre part, parcequ'elle pourrait être utile à d'autres personne.

configuration de l'imprimante

Installation des drivers sur le serveur

La première étape consiste à branche l'imprimante sur le serveur, et à installer les drivers afin qu'elle soit reconnue par le serveur. Pour cela, il faut se rendre sur le site autrichien de canon. En effet, il semble, d'après plusieurs commentaires lus sur les forums ubuntu que ce soit le seul endroit où tous les paquets nécessaires soient disponibles. On trouve alors la page de téléchargement des drivers. Il faut prendre les 4 paquets: scangearmp-common, scangearmp-mp610series, cnijfilter-common et cnijfilter-mp610series. Par chance, il existe des paquets Debian. Mais malheureusement, à cause de quelques utilitaires, ils dépendent de librairies graphiques que je ne souhaitais pas installer sur mon serveur (libxi6, libxext6, gtk, pango, cairo, etc).

Sous debian, il est possible d'installer un paquet sans tenir compte des dépendances avec l'option --force-depends de dpkg, mais cette solution n'est pas pérenne car apt proposera ensuite systématiquement la désinstallation de ces paquets. Il est également possible, grâce à equivs, de faire croire au système qu'une librairie est installée, sans que ce ne soit le cas. Je ne souhaitais pas non plus utiliser cette solution, car si plus tard, je veux installer un paquet qui dépende d'une de ces librairies, le paquet s'installerait correctement sans me prévenir qu'il y a un problème. J'ai donc extrait les paquets avec dpkg -x et dpkg -e. Puis j'ai édité les fichiers DEBIAN/control pour supprimer les dépendances aux librairies graphiques, et pour finir j'ai reconstruit les paquets avec dpkg -b. Cette étape n'est pas obligatoire, il est possible, pour plus de simplicité, d'installer toutes les dépendances demandées par les paquets des drivers, mais je préférais la réaliser afin de garder mon serveur un peu plus propre.

J'ai ensuite installé les fichiers ppd destinés à améliorer la qualité d'impression sous linux. Une fois téléchargée l'archive, l'installation est simple et bien documentée dans le fichier README. Je n'ai pas testé l'imprimante avant l'installation de ces fichiers; je ne sais donc pas dans quelle mesure ils améliorent l'impression.

Installation et configuration de cups

Il faut maintenant installer le paquet cups sur le serveur. Il faut ensuite modifier la directive Listen du fichier /etc/cups/cupsd.conf afin de rendre accessible cups depuis l'extérieur. La directive correspondant à ma configuration était:

Listen 192.168.1.2:631

192.168.1.2 est l'adresse du serveur sur le réseau local. 631 est le port par défaut d'ipp. J'ai également du modifier le firewall du serveur pour laisser passer le trafic venant du réseau local sur le port 631.

J'ai ensuite défini les droits d'accès et d'administration au serveur. J'ai laissé l'accès normal sans authentification à partir du réseau local. J'ai mis en place l'authentification pour la partie administration. Il y a deux possibilités: soit laisser l'accès à des utilisateurs qui ont un compte unix sur le serveur, soit recourir à des utilisateurs virtuels. J'ai choisi cette dernière solution. J'ai donc installé le paquet cups-client pour pouvoir utiliser la commande lppasswd qui m'a permis de créer ces utilisateurs, et de leur attribuer un mot de passe.

Voici la portion de mon fichier /etc/cups/cupsd.conf qui définit les droits d'accès:


DefaultAuthType BasicDigest

<location>
Order allow,deny
Allow From 127.0.0.1
Allow From @LOCAL
</location>

<location /admin>
AuthType Default
Require valid-user
Order allow,deny
Allow From 127.0.0.1
Allow From @LOCAL
</location>
<location /admin/conf>
AuthType Default
Require valid-user
Order allow,deny
Allow From 127.0.0.1
Allow From @LOCAL
</location>

Maintenant que cups est installé, il faut configurer l'imprimante. J'ai ouvert un navigateur à l'adresse http://192.168.1.2:631/, et j'ai suivi la procédure indiquée pour installer et configurer l'imprimante, il n'y avait aucune difficulté. J'ai lancé une page de test de l'impression pour vérifier que tout fonctionnait correctement.

Il est à noter que l'accès à la partie administration de cups se fait par défaut en https.

configuration des clients

Une fois cups installé, le plus dur est fait, mais il faut encore configurer les clients pour qu'ils utilisent le serveur d'impression. Il m'a fallu ajouter dans le fichier ~/.cups/client.conf, les deux lignes suivantes:

Encryption IfRequested
ServerName 192.168.1.2

Pour l'impression en console, il faut utiliser la commande lpadmin -d pour définir l'imprimante par défaut. On peut alors utiliser la commande lp sans devoir spécifier l'imprimante à chaque fois. Il est également recommandé d'installer le paquet cups-bsd afin de disposer des commandes lpr, lpq, lprm, etc.

configuration du scanner

L'imprimante étant multifonctions, j'ai aussi configuré le scanner. J'ai installé le paquet sane-utils sur le serveur. Le démon saned peut être lancé soit en permanence, soit par inetd (comportement par défaut). Comme je voulais qu'il soit lancé en permanence, j'ai du lancer dpkg-reconfigure sane-utils pour demander ce comportement.

J'ai ensuite édité le fichier /etc/sane.d/saned.conf pour y ajouter la ligne 192.168.1.0/24 afin que saned réponde aux requêtes venant du réseau local. J'ai également dû charger le module nf_conntrack_sane, puis modifier le firewall du serveur pour laisser passer le trafic venant du réseau local sur le port 6566.

Enfin, sur les postes clients, j'ai modifié les fichiers /etc/sane.d/net.conf pour qu'ils contiennent la ligne suivante: 192.168.1.2 (l'adresse du serveur).

L'imprimante/scanner est enfin configurée pour être utilisée en réseau.

conclusion

Je suis assez content d'avoir réalisé cette opération. Auparavant, pour imprimer un fichier, je devais le mettre sur clé usb puis aller l'ouvrir sur l'ordinateur connecté à l'imprimante, ça va être beaucoup plus pratique maintenant.

Cela dit, j'ai trouvé l'installation des drivers laborieuse. Le fait de devoir se rendre sur le site autrichien pour trouver les bons fichiers est complètement ubuesque. Heureusement que j'ai trouvé cette information par hasard sur les forums ubuntu. D'autre part, j'aurais aimé que les utilitaires de canon soient dans des paquets à part, cela m'aurait évité de devoir extraire puis reconstruire les paquets. Je ne sais d'ailleurs pas à quoi servent ces outils, l'impression fonctionne sans que je n'ai eu à les utiliser. Enfin, les paquets ne sont disponibles que pour une architecture 32bits. Si mon serveur avait été en 64bits, l'opération aurait été encore plus compliquée.