wiki/HowtoCUPS.md

205 lines
6.9 KiB
Markdown
Raw Normal View History

2018-06-12 03:10:18 +02:00
---
categories: print
title: Howto CUPS
...
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
* Documentation : <http://cups.org/documentation.php>
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
[CUPS](http://cups.org/) signifie **Common Unix Printing System**, c'est un serveur d'impression pour Linux/Unix. Il est souvent utilisé sur des postes de travail sous Linux, mais aussi sur des serveurs pour centraliser l'accès aux imprimantes et permettre des droits d'accès, des quotas, etc.
2016-12-29 11:25:39 +01:00
## Installation
~~~
2018-06-12 03:10:18 +02:00
# apt install cups smbclient ttf-liberation ttf-mscorefonts-installer
# systemctl status cups
● cups.service - CUPS Scheduler
Loaded: loaded (/lib/systemd/system/cups.service; enabled; vendor preset: enabled)
Docs: man:cupsd(8)
Main PID: 26996 (cupsd)
Tasks: 1 (limit: 4915)
Memory: 3.1M
CPU: 197ms
CGroup: /system.slice/cups.service
└─26996 /usr/sbin/cupsd -l
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
## Utilisation basique
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
Lister les imprimantes :
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
~~~
# lpstat -t
2018-06-13 21:37:05 +02:00
scheduler is running
system default destination: HP_Color_LaserJet_CP2025dn
device for HP_Color_LaserJet_CP2025dn: socket://192.168.4.56
HP_Color_LaserJet_CP2025dn accepting requests since mer. 13 juin 2018 21:21:54 CEST
printer HP_Color_LaserJet_CP2025dn is idle. enabled since mer. 13 juin 2018 21:21:54 CEST
~~~
Impression en ligne de commande :
~~~
$ export PRINTER=HP_Color_LaserJet_CP2025dn
$ echo test | lp
request id is HP_Color_LaserJet_CP2025dn-3 (0 file(s))
$ lp foo.ps
request id is HP_Color_LaserJet_CP2025dn-4 (1 file(s))
2018-06-12 03:10:18 +02:00
~~~
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
## Configuration
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
Fichiers de configuration :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
/etc/cups/
├── cupsd.conf
├── cupsd.conf.pre16-bak
├── cups-files.conf
├── interfaces
├── ppd
├── raw.convs
├── raw.types
├── snmp.conf
└── ssl
├── server.crt -> /etc/ssl/certs/ssl-cert-snakeoil.pem
└── server.key -> /etc/ssl/private/ssl-cert-snakeoil.key
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
La configuration principale se trouve dans le fichier `/etc/cups/cupsd.conf`.
2017-01-03 11:20:35 +01:00
2018-06-12 03:10:18 +02:00
On peut tester la configuration avec la commande :
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
~~~
# cupsd -t
"/etc/cups/cups-files.conf" is OK.
"/etc/cups/cupsd.conf" is OK.
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
## Administration
2017-01-03 11:20:35 +01:00
2018-06-12 03:10:18 +02:00
CUPS a une interface web d'administration accessible sur le port TCP/631 : <http://127.0.0.1:631>
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
Cette interface permet de gérer les imprimantes (génération du fichier `/etc/cups/printers.conf`),
visualiser des informations (logs, jobs…) et agir sur les jobs d'impression (annulation, etc.)
### Droits d'accès à l'interface web
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
Par défaut, l'interface est restreinte sur _localhost_
Pour autoriser son accès depuis des machines distantes, il faut ajuster les directives suivantes dans `/etc/cups/cupsd.conf` :
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
Listen *:631
<Location />
Order allow,deny
Allow from 192.0.32.0/24
</Location>
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
Il faut ensuite ajouter `Allow from 192.0.32.0/24` pour les sections et actions souhaitées.
Pour les sections et actions critiques, une authentification supplémentaire est nécessaire.
Cela se base sur les utilisateurs Unix, pour autoriser un utilisateur on l'ajoutera dans le groupe `lpadmin` :
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
# adduser jdoe lpadmin
2016-12-29 11:25:39 +01:00
~~~
2018-06-12 03:10:18 +02:00
## Gestion des imprimantes
CUPS gère plusieurs backends d'impression : _ipp://_, _socket://_ (JetDirect), _smb://_ etc.
2016-12-29 11:25:39 +01:00
### Imprimantes HP
~~~
2018-06-12 03:10:18 +02:00
# apt install hpijs hpijs-ppds hplip hplip-data
2016-12-29 11:25:39 +01:00
~~~
### Imprimantes CANON
Les fichiers PPD peuvent être souvent trouvés sur <http://software.canon-europe.com/index.asp>
Et il est parfois nécessaire d'ajouter le binaire _sicgsfilter_ téléchargeable en 32bits
sur <http://fr.software.canon-europe.com/software/0040160.asp> ou en 64bits sur
<http://fr.software.canon-europe.com/software/0040165.asp>
On le placera dans /usr/local/bin/ et on évitera ainsi une erreur _/usr/lib/cups/filter/foomatic-rip failed_ :
~~~
D [02/Jun/2011:23:23:13 +0200] [Job 14496] renderer command: /bin/cat - | sicgsfilter -MPS -NP -A1 -uanonymous -V"Test Page" -n1
D [02/Jun/2011:23:23:13 +0200] [Job 14496]
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Closing renderer
D [02/Jun/2011:23:23:13 +0200] [Job 14496] JCL: <job data>
D [02/Jun/2011:23:23:13 +0200] [Job 14496]
D [02/Jun/2011:23:23:13 +0200] [Job 14496] sh: sicgsfilter: command not found
D [02/Jun/2011:23:23:13 +0200] [Job 14496] /bin/cat: write error: Broken pipe
D [02/Jun/2011:23:23:13 +0200] [Job 14496] renderer return value: 127
D [02/Jun/2011:23:23:13 +0200] [Job 14496] renderer received signal: 127
D [02/Jun/2011:23:23:13 +0200] [Job 14496] tail process done writing data to STDOUT
D [02/Jun/2011:23:23:13 +0200] [Job 14496] KID4 finished
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Process dying with "The renderer command line returned an unrecognized error code 127.", exit stat: 1
D [02/Jun/2011:23:23:13 +0200] [Job 14496] error: Illegal seek (29)
D [02/Jun/2011:23:23:13 +0200] [Job 14496] The renderer command line returned an unrecognized error code 127.
D [02/Jun/2011:23:23:13 +0200] [Job 14496] KID3 exited with status 1
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Renderer exit stat: 1
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Renderer process finished
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Killing process 5546 (KID3)
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Process dying with "Error closing renderer", exit stat: 1
D [02/Jun/2011:23:23:13 +0200] [Job 14496] error: Illegal seek (29)
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Error closing renderer
E [02/Jun/2011:23:23:13 +0200] PID 5541 (/usr/lib/cups/filter/foomatic-rip) stopped with status 1!
~~~
### Fichiers PPD (PostScript Printer Description)
Les fichiers PPD décrivent les fonctionnalités de l'imprimante. Suivant les paquets installés, un certain nombre de modèles
2018-06-12 03:10:18 +02:00
d'imprimantes sera disponible sur le système. On pourra aussi en ajouter dans le répertoire `/usr/local/share/ppd/`.
2016-12-29 11:25:39 +01:00
Mais également lors de l'ajout d'une imprimante, on pourra tout simplement en uploader ; les fichiers PPD uploadés
2018-06-12 03:10:18 +02:00
se trouvent dans le répertoire `/etc/cups/ppd/`.
## Logs
Par défaut, les logs d'accès se trouvent dans `/var/log/cups/access_log`
et les logs d'erreurs dans `/var/log/cups/error_log`.
### Mode debug
Pour avoir un mode debug, on placera dans le fichier `/etc/cups/cupsd.conf` :
~~~
LogLevel debug
~~~
puis, après avoir reloadé le démon CUPS, on aura un maximum d'informations dans `/var/log/cups/error_log`.
## FAQ
### activation backend smb://
Pour activer le backend _smb://_ il faut installer `smbclient` qui contient notamment le binaire `smbpool`.
### Détection automatique d'imprimantes partagées
Par défaut CUPS tente de découvrir les imprimantes partagées par d'autres systèmes sur le réseau, et les affiche dans sa liste, avec une URI=/dev/null. Pour ne pas avoir ce comportement, décocher la case « Afficher les imprimantes partagées par d'autres systèmes » dans « Administration du serveur » dans l'interface d'admin, puis supprimer le cache :
~~~
# /etc/init.d/cups stop && rm /var/cache/cups/remote.cache && /etc/init.d/cups start
~~~
2016-12-29 11:25:39 +01:00
### Imprimer une page de test en CLI
2018-06-12 03:10:18 +02:00
Imprimer la page de test de CUPS avec lp, avec le nom de l'imprimante _foo_ :
2016-12-29 11:25:39 +01:00
2018-06-12 03:10:18 +02:00
~~~
2018-06-13 21:38:39 +02:00
$ lp -d foo /usr/share/cups/data/testprint
2018-06-12 03:10:18 +02:00
~~~