Le fichier de configuration d'une imprimante est /etc/printcap
. Voici un exemple simple de configuration d'imprimante :
#----------------------------------------# # simple, un modele simple pour printcap # #----------------------------------------# # cf. /var/lib/apsfilter # sd nom du repertoire de la file d'attente # # lp nom du port auquel l'imprimante est connecte # /dev/lp1 pour LPT1 # /dev/ttyS0 pour COM1 # /dev/ttyS1 pour COM2 # /dev/null pour des tests sans gacher de papier... # # if charge un filtre # # lf specifie le fichier journal d'erreurs # dans cet exemple, il faudra creer le fichier /usr/spool/lp1/simple.log # et lui affecter le groupe lp et les droits 664 : # chgrp lp /usr/spool/lp1/simple.log # chmod 664 /usr/spool/lp1/simple.log # # mx#0 desactive des limites de taille de fichiers a imprimer # # sh desactive la page d'en tete # # sf desactive le saut de page # simple|simple-printer|Un simple printer qui ecrit dans un fichier:\ :sd=/usr/spool/lp1:\ :lp=/dev/null:\ :if=/root/simple-if.tcl:\ :lf=/usr/spool/lp1/simple-log:\ :mx#0:\ :sh:\ :sf:
Pour économiser du papier, cette imprimante imprimera sur le périphérique /dev/null
(corbeille, ou trou noir). Une fois installée et les essais terminés, on n'aura qu'à remplacer la ligne :lp=/dev/null:\
par :lp=/dev/lp1:\
.
La déclaration pour chaque imprimante doit tenir sur une seule ligne, le charactère \
permet de faire tenir les différents champs sur plusieurs lignes (il ne doivent cependant pas être suivis par un espace ou une tabulation).
Le filtre utilisé est un programme Tcl qui écrit la date courante suivi par l'entrée standard dans le fichier /tmp/simple.out :
#!/usr/bin/tclsh set outfile [open /tmp/simple.out w] puts $outfile "------------------------------------------------" flush $outfile exec date >@ $outfile puts $outfile "------------------------------------------------" while { [gets stdin line] != -1} { puts $outfile $line } close $outfile
Le journal des messages d'erreur peut être crée comme suit (on fabrique un fichier vide, puis on lui attribue les droits qu'il faut) :
cd /usr/spool/lpd touch simple-log chgrp lp simple-log chmod ug=rw,o=r simple-log
Pour utiliser une telle imprimante, il faut éditer le fichier d'initialisation /etc/rc.d/rc.local
, et rajouter les lignes suivantes :
echo "Configuration de l'imprimante simple..."
/usr/sbin/lpc up simple
et taper en ligne de commande :
lpr -Psimple
fichier
On peut par ailleurs ajouter un répertoire spécial pour cette imprimante dans la file d'attente (là où sont mis les fichiers en attendant qu'ils puissent être imprimés), comme /usr/spool/lpd/simple
, a condition de le préciser en remplacant dans le fichier /etc/printcap
la ligne indiquant le répertoire de la file d'attente :
sd=/var/spool/lpd/simple:\
Voici un exemple d'utilisation. Il faut d'abord relancer lpd
:
lpc restart all
La présence du fichier /tmp/simple.out
est la preuve que le système est bien configuré (cette impression peut se faire sans qu'une imprimante ne soit réelement connectée, elle permet juste de vérifier que le fichier /etc/printcap
ainsi que le démon lpd
et les commandes telles que lpr
, lpq
, lprm
et lpc
fonctionnent) :
ls -l | lpr -Psimple
Le fichier simple.out
doit alors ressembler à ca (sa présence prouve que tout est correctement configuré) :
------------------------------------------------ Sat Mar 20 14:42:33 CET 1999 ------------------------------------------------ total 37 -rw-r--r-- 1 mathieu users 8 Jan 31 18:16 fictest -rwxr--r-- 1 mathieu users 313 Jan 31 18:53 lc.tcl -rwxr--r-- 1 mathieu users 215 Sep 30 22:16 lc.tcl~ -rwxr--r-- 1 mathieu users 378 Jan 31 18:25 questions.tcl -rwxr--r-- 1 mathieu users 74 Oct 3 23:40 questions.tcl~ -rwxr-xr-x 1 root root 647 Dec 2 16:02 simple-if.tcl -rwxr-xr-x 1 root root 497 Dec 2 15:53 simple-if.tcl~ -rwxr--r-- 1 mathieu users 6990 Jan 31 19:04 simple.tcl -rwxr--r-- 1 mathieu users 7064 Jan 31 18:42 simple.tcl~ -rwxr--r-- 1 mathieu users 3153 Feb 2 07:42 tkdraw -rwxr--r-- 1 mathieu users 3153 Feb 2 07:33 tkdraw~ -rwxr--r-- 1 mathieu users 937 Jan 31 20:53 tkedit -rwxr--r-- 1 mathieu users 399 Oct 6 19:42 tkedit~ -rwxr--r-- 1 mathieu users 2796 Feb 1 19:52 tkmin -rwxr--r-- 1 mathieu users 777 Oct 6 20:16 tkmin~ -rwxr--r-- 1 mathieu users 442 Jan 31 19:22 tksalut -rwxr--r-- 1 mathieu users 106 Oct 5 23:30 tksalut~
Sans spécification de nom d'imprimante, celle utilisée par défaut sera celle contenue dans la variable d'environnement $PRINTER (lp en général). Pour définir l'imprimante lp, il suffit de la déclarer comme suit dans le fichier /etc/printcap
:
lp|Nom de l'imprimante:\
ou
Nom de l'imprimante|lp:\
On peut remplacer Nom de l'imprimante
par le vrai nom de l'imprimante, ou par tout autre nom.
Si ca ne marche pas avec une vraie imprimante, il existe une commande, lptest
, qui produit une sortie ASCII. On peut rediriger cette sortie vers le périphérique de l'imprimante pour voir si il s'agit d'un problème de configuration d'imprimante :
lptest > /dev/lp1
ou, pour avoir 6 lignes de 35 caractères seulement :
lptest 35 6 > /dev/lp1
Le résultat ressemble à ceci :
!"#$%&'()*+,-./0123456789:;<=>?@ABC "#$%&'()*+,-./0123456789:;<=>?@ABCD #$%&'()*+,-./0123456789:;<=>?@ABCDE $%&'()*+,-./0123456789:;<=>?@ABCDEF %&'()*+,-./0123456789:;<=>?@ABCDEFG &'()*+,-./0123456789:;<=>?@ABCDEFGH
On peut aussi tester simplement l'une des commandes suivantes :
lptest | lpr lpr test.txt lptest > /dev/lp1 cat test.txt > /dev/lp1
Les fichiers suivants recueillent les messages d'erreur de l'imprimante, il seront donc à consulter si l'impression ne marche pas (l'exemple est prit pour l'imprimante simple) :
/var/spool/lpd/simple/status /var/log/lpd-errs /sbin/pac