---
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".
---