--- categories: ['OpenBSD','Système','Impression'] date: 2020-01-19T13:47:35+02:00 description: "Gérer les impressions sous OpenBSD, grâce au projet CUPS" draft: false include_toc: true show_comments: false tags: ['OpenBSD','cups'] title: "Cups : Gestion de l'impression sous OpenBSD" translationKey: 'openbsd-cups' --- ## Description **[CUPS](http://www.cups.org/)** fournit un calque d'impression portable pour les systèmes d'exploitation basés sur UNIX. CUPS fournit des interfaces en ligne de commande de System V et Berkeley. CUPS utilise {{< abbr IPP "Internet Print Protocol" >}} (*Protocole d'Impression Internet*) comme bases pour gérer les queues et travaux d'impressions. Les protocoles des services LPD, SMB et AppSocket *(tel que JetDirect)* sont supportés avec des fonctionnalités réduites. CUPS ajoute la recherche d'imprimantes réseaux et PPD (Description d'Imprimante PostScript) basé sur les options d'impression supportées dans le monde réel sous UNIX. ## Installation **{{< inside2 l="sys/openbsd/pkg" t="Installez" a="installer" >}} les paquets : `cups cups-filters cups-libs foomatic-db gutenprint`**
*(`cups-pdf` en option)* ## Configuration ⇒ Depuis OpenBSD 6.5 : la version du driver Gutenprint a changé (v5.3.x au lieu de v5.2.x) ; modifiez les paramètres de l'imprimante pour lui changer le pilote vers cette nouvelle version ! ### shell Depuis OpenBSD 6.2, les binaires `lpq`, `lpr`, et `lprm` ne sont plus liés symboliquement à `/usr/bin`. Il est nécessaire de les utiliser en les préfixant de `/usr/local/bin/`. {{}} Pensez à éditer votre fichier `~/.kshrc`, afin de créer des alias qui vous seront utiles, en ajoutant le code suivant : `for i in lpq lpr lprm; do alias $i=/usr/local/bin/$i; done` Vous pourrez ainsi les utiliser comme avant ! {{}} ### Découverte des services multicast Pour la découverte des services multicast - mDNS *(de type {{< inside2 l="sys/openbsd/avahi" >}}, Bonjour, …)* ### Cups Il nous faut : * {{< inside2 l="sys/openbsd/rcctl" t="Activer les services" a="activer" >}} **`cupsd cups_browsed`** * puis les {{< inside2 l="sys/openbsd/rcctl" t="démarrer" a="démarrer" >}} ### Règles PF Voici les règles pare-feu si besoin : * pour l'accès à l'interface web de Cups :
`pass in on egress proto tcp from egress:network to egress port 631 flags S/SA modulate state` {{}} Ces règles sont à adapter à vos besoins, et ne sont pas nécessairement justes ! {{}} ## Administration ### Web Cups, à ce moment, devrait être accessible par votre navigateur web préféré, par exemple {{< inside2 l="sys/openbsd/firefox" t="Firefox" >}}, sur : http://localhost:631 {{}} L'interface d'administration web de Cups est celle qui fonctionne assurément, normalement. Entrez votre mot-de-passe root… et administrez ! {{}} ### Console * `cupsctl` : `# cupsctl --share-printers` * `lpadmin` : `# lpadmin -E -p printer_name -o printer-is-shared=false` * l'option `-E` active le chiffrement des données avec le service ; *elle est intégrée aussi aux autres outils ci-dessous*. * l'option `printer-is-shared` permet de partager ou non l'imprimante ; `true` autorise, `false` ne le permet pas * `lpoptions` : affiche les options d'une imprimante * `-l` : version détaillée * `lpstat` : outil pour obtenir les informations sur les imprimantes ou le serveur Cups * `-l` : affiche une liste détaillée des imprimantes, des travaux d'impression, etc. * `-p` : restitue toutes les informations de toutes les imprimantes configurées ; pour cibler une seule, il suffit de donner son nom en argument de l'option, tel que dans la commande `lpadmin` ci-dessus. * `-r` : l'état du serveur Cups * `-t` : restitue toutes les informations d'état À toutes ces commandes, il existe pléthore d'options, veuillez lire les manpages correspondants. Les deux premières commandes doivent avoir des droits d'administration, ce qui n'est pas le cas des deux autres. ### Interface Graphique Pour gérer les imprimantes en mode graphiques, il est nécessaire d'{{< inside2 l="sys/openbsd/pkg" t="installer" a="installer" >}} les packages suivants : `gtk+2-cups`, `gtk+3-cups` et/ou `gtk+4-cups` selon votre bureau graphique. {{}} Il est possible que l'administration ne soit pas complète, et de rencontrer des problèmes pour installer une ou des imprimantes par ces biais. {{}} ## Gestion ### USB #### Détection Imprimante USB Pour détecter votre imprimante usb, connectez-la sur un port usb, en premier, puis exécuter dans un terminal, la commande suivante : ```sh # usbdevs -vd Controller /dev/usb3: addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x8086), rev 1.00 uhub3 port 1 powered port 2 addr 2: full speed, self powered, config 1, USB MFP(0x082f), EPSON(0x04b8), rev 1.00, iSerialNumber L83010704250947490 ugen0 ``` Il faut repérer sur la ligne `Controller /dev/usb` quel numéro est affiché au périphérique `ugen` et `usb`, puis donner à ce périphérique les droits nécessaires - dans ce cas-là : `# chown _cups /dev/ugen0.* /dev/usb3` ou pour une {{< abbr "MFP" "Multi Functions Printer" >}} (avec scanner intégré : ```cfg # chown _cups:_saned /dev/ugen0.* /dev/usb3 # chmod 0660/dev/ugen0.* /dev/usb3 ``` {{}} Pour préserver ces changements, au prochain redémarrage, ajoutez la commande à votre fichier `/etc/[rc.local](http://man.openbsd.org/rc.local)`. Bien-sûr, modifiez le numéro des périphériques `ugen` et `usb` utilisés. Une autre méthode est d'utiliser les scripts `attach`/`detach` du service `hotplugd` ! {{}} #### Configuration Imprimante USB Pour pouvoir utiliser correctement votre imprimante sur port usb, il est nécessaire de désactiver [ulpt(4)](http://man.openbsd.org/ulpt.4) du noyau (cf: [config(8)]http://man.openbsd.org/config.8)), autrement votre imprimante ne sera pas "visible", car non disponible par le biais de la bibliothèque `libusb`. ⇒ **Depuis OpenBSD 7.0**, il suffit de remplir/créer le fichier `/etc/bsd.re-config` avec :
`disable ulpt` ```sh # echo 'disable ulpt' >>/etc/bsd.re-config ``` puis redémarrer la machine ! ---- ⇒ **Avant OpenBSD 7.0 :** Pour cela, tapez :
`# printf 'disable ulpt\nq\n' | config -ef /bsd` Puis, relinker le noyau :
`# sha256 /bsd >/var/db/kernel.SHA256` --- ### Port parallèle Pour pouvoir imprimer sur une imprimante port parallèle, le service cups a besoin d'avoir accès aux périphériques spécifiques. Exécutez la commande suivante :
`chown _cups /dev/lp[a,t]0` {{}} Pour préserver ces changements, au prochain redémarrage, ajoutez la commande à votre fichier `/etc/rc.local` ! {{}} ### Imprimante partagée #### Par mDNS Il est nécessaire qu'{{< inside2 l="sys/openbsd/avahi" >}} soit installé et fonctionnel ; de même, le service `cups_browsed` doit être actif sur votre station ! Elle peut être administrée soit par l'interface d'administration web de Cups, soit avec des droits administrateurs… #### En utilisant DNS-SD Veuillez lire le fichier pkg-readme de cups ! --- ## Documentation Après l'installation, n'oubliez pas de **lire le fichier** : * `/usr/local/share/doc/pkg-readmes/cups`, * `/usr/local/share/doc/pkg-readmes/cups-filters`, * et au cas où : `/usr/local/share/doc/pkg-readmes/cups-pdf`, ainsi que sous `/usr/local/share/doc/cups-pdf/README`. * voire aussi : `/usr/local/share/doc/pkg-readmes/foomatic-db-engine`. ### manpage Depuis OpenBSD 6.2, l'accès aux pages de manuel est sensiblement différent : `man -m /usr/local/man lpr` Cela est vrai pour les binaires `lpq`, `lpr` et `lprm` ! --- ## Historique J'ai écrit historiquement cette documentation sur le wiki de la communauté "OpenBSD Pour Tous". ---