Les HOWTO Linux...
Page suivante - Page précédente - Table des matières
6. L'impression, comment ça marche
Nous considérons ici que  vous utilisez la suite logicielle lpd
que nous décrirons  d'ailleurs. Elle est  la plus répandue et
fonctionne très bien.
6.1 Impression locale et impression distante
L'impression locale permet aux utilisateurs d'envoyer des travaux d'impression à l'imprimante directement rattachée à leur machine.
L'impression distante, par contre, permet de soumettre des travaux d'impression depuis une machine, à une autre machine sur le réseau, sur laquelle est connectée une imprimante.
6.2 De quoi avez vous besoin
Nous supposons que vous savez éditer un  fichier texte sous Linux et
que  vous avez   une bonne  compréhension   des  notions  de  droits
d'accès et de propriété (chmod, chown).
Nous supposons également que votre système Linux fonctionne correctement. En particulier, si vous souhaitez faire de l'impression distante, que votre réseau fonctionne déjà.
Consultez à ce propos les  nombreuses documentations disponibles sur
le sujet  (comme  on dit: RTFM, ce   qui  en bon  francais veut   dire LLBD
:-)).
6.3 Les programmes importants
Le système d'impression Unix comprend (au moins) 5 programmes. Ils doivent se trouver à l'endroit décrit (c'est le mieux) ou dans un répertoire accessible (avec la variable PATH), appartenir à root (groupe lp), et avoir les permissions suivantes :
 -r-sr-sr-x      root    lp      /usr/bin/lpr
 -r-sr-sr-x      root    lp      /usr/bin/lpq
 -r-sr-sr-x      root    lp      /usr/bin/lprm
 -r-xr-sr-x      root    lp      /usr/sbin/lpc
 -rwxr--r--      root    lp      /usr/sbin/lpd
Les quatre premiers sont utilisés pour soumettre, visualiser, annuler, contrôler les travaux d'impression. Le dernier est le démon.
Il existe bien entendu des pages de manuel  en ligne pour ces commandes que
vous  pourrez consulter  pour    plus d'information.  Le  point   important
à noter  est    que   les commandes   lpr,    lpq,
lpc et    lprm opèrent   sur une    imprimante par
défaut nommée  lp.  La    variable   d'environnement
PRINTER    peut contenir le nom   de   l'imprimante que vous  avez
choisie.  La  spécification du nom  d'une imprimante sur la ligne de
commande  surchargera ces définitions  (les imprimantes de l'exemple
sont hors-ligne):
 # echo $PRINTER
 (vide)
 #
 # lpq
 waiting for lp to become ready (offline ?)
 ...
 # export PRINTER=mon_imprimante
 # lpq
 waiting for mon_imprimante to become ready (offline ?)
 ...
 # lpq -Plpr0
 waiting for lpr0 to become ready (offline ?)
 ...
Le client et le serveur
Voici ci-dessous les interactions client - démon
 _________
 +/BlaBla  /+
 //________//|
 /          / +
+----------------+                       +----------+ /
|      LPR       |                       |=      oo |/
+----------------+                       +----------+
 |                                 Imprimante
 |                                     ^
 V                                     |
+----------------+                  +------------------+
|      LPD       |------>------>----|        LPD       |
+----------------+                  +------------------+
 Soumission d'un requete d'impression
+----------------+
|      LPQ       |
+----------------+
 \
 \_______>______
 \
+----------------+                 \+------------------+
|      LPD       |                  |        LPD       |
+----------------+                  +------------------+
 Soumission d'une demande d'information
Lorsque      le   système     démarre,   lpd     est
chargé.   Il lit   le   fichier   /etc/printcap (dont  vous
trouverez  une explication  plus  loin) qui  décrit  les imprimantes
connues.
Les fichiers soumis par le client
Lorsqu'un programme client soumet un travail d'impression, il génère deux fichiers qu'il écrit dans le spool:
- Un fichier de données qui contient une copie des données que vous souhaitez soumettre à l'imprimante. Il s'agit bien d'une copie, ce qui signifie que toute modification ultérieure de votre fichier n'altérera pas l'impression.
- Un fichier de description du travail à effectuer.
La commande lpr
La commande lpr soumet un travail d'impression.  Elle se charge de
mettre les données  à imprimer dans  un fichier dans le spool
d'impression. Ces données  peuvent provenir  soit d'un fichier  (les
données   sont       dupliquées    et   toute    modification
ultérieure du  fichier d'origine n'affectera pas l'impression), soit
de   l'entrée standard  (stdin).   Le   démon  est  averti de
l'existence  d'un nouveau fichier et   envoie, dès que possible, les
données vers l'imprimante physique (ou la machine distante).
La  taille  du  spool  est  bien  entendu limitée à  la place
disponible sur votre disque dans /usr/spool/ ou à la taille limite
spécifiée  dans  le fichier  de configuration   printcap.  Vous pouvez
néanmoins imprimer un gros fichier en demandant à lpr de
ne  pas dupliquer le fichier.     Le  démon d'impression ira   alors
chercher le fichier que vous indiquez dans la ligne de commande et non plus
dans le spool.
La commande lpq
La commande lpq  affiche le contenu du  spool, pour une imprimante
donnée.     Une des   informations    importantes fournies   est  le
numéro  du  travail (job).  C'est   lui  qui pourra  servir à
annuler un des   travaux soumis, y  compris  celui  en  cours d'impression.
Parmi tous  les travaux soumis, l'indication  ``active'' indique le travail
en cours  d'impression   (ou   que  lpd  essaie   d'envoyer   à
l'impression).
La commande lprm
La commande lprm enlève  un travail de la  file (et donc le
fichier  du spool).  Vous pouvez soit  spécifier un numéro de
job,  soit  un tiret   permettant  de  supprimer  tous   les   travaux vous
appartenant.   Si    vous   êtes  root,    tous    les  travaux  sont
supprimés.    Pour   supprimer    les   travaux    d'un utilisateur,
spécifiez son nom.
 # lprm 1
 dfA001Aa00484 dequeued
 cfA001Aa00484 dequeued
 #
Le   premier fichier contient les  données  à imprimer.  Il a
été créé  par  lpr. Le deuxième
contient des informations que le démon utilise pour savoir que faire
des données (impression  locale, distante, ...)  Consultez le manuel
en ligne : lpd(8).
La commande lpc
La commande lpc  permet de  contrôler  les travaux en  cours
ainsi  que   l'imprimante, et certains     aspects de son   utilisation. En
particulier,  vous pouvez démarrer ou  stopper la sortie des travaux
du  spool  pour l'impression,   valider  ou  invalider une   imprimante, et
même modifier   l'ordre  d'impression des  fichiers.   Les  commandes
suivantes  permettent  d'invalider l'impression sur mon_imprimante, de
valider le spool sur ton_imprimante, et  de faire passer le job 37
en début de file:
 lpc down mon_imprimante
 lpc enable ton_imprimante
 lpc topq 37
lpc peut  fonctionner en interactif  si aucun  paramètre ne
lui est  passé. Vous pouvez  lire les pages  du manuel en ligne pour
obtenir des instructions complètes. A noter que certaines actions de
lpc sont réservées au super-utilisateur (root).
6.4 Les répertoires importants
Le répertoire le plus  important est le répertoire de  spool,
dans  lequel  les  données  vont   être stockées  avant
d'être   imprimées.   Typiquement,    un  système  sera
configuré    pour    avoir   un répertoire       de spool par
imprimante. Cela rend la gestion  plus facile.  Sur mon système, par
exemple,    le       répertoire     /usr/spool/lp est    le
répertoire   principal. Sous ce   répertoire, on  y trouve le
sous-répertoire     lpr0, correspondant      à    la
déclaration  que   j'ai faite  dans   /etc/printcap pour le
répertoire de spool de mon imprimante.
NDT: Ce qui va suivre décrit une façon de faire pour donner les bons droits d'accès aux répertoires de spool. Différentes méthodes sont possibles, sachant que, comme sous Un*x, beaucoup de choses sont possibles dans ce domaine, il convient de faire attention de ne pas offrir de failles à la sécurité de l'ensemble.
Le répertoire de spool doit appartenir à root, et au
groupe lp,   avec  les  droits  de lecture/d'écriture  pour
utilisateur et groupe, et lecture seule pour le reste du monde.
 chmod ug=rwx,o=rx lpr0
 chgrp lp lpr0
 drwxrwxr-x   2 root     lp           1024 Feb 11 10:51 lpr0/
Un autre  répertoire doit également être présent
: /usr/spool/lpd  avec  les mêmes  droits.   Vous aurez plus
d'informations plus avant dans ce document.
6.5 Les fichiers importants
En    dehors     des   programmes  que      nous  avons  déjà
évoqués précédemment, quatre  fichiers  doivent
se  trouver   dans chaque répertoire  de  spool.   Avec les versions
récentes des  gestionnaires d'impression,  vous n'avez pas  à
vous soucier de ces fichiers.  Ils sont créés automatiquement
s'ils n'existent   pas :  .seq,  errs,   lock et
status.      Ces     fichiers     doivent     avoir   les   droits
-rw-rw-r--.  Le  fichier  .seq contient un compteur  pour
l'affectation des numéros de  jobs.  Le fichier status contient
le  message  devant   être  émis  par   la  commande   lpc
stat. Le fichier  lock est utilisé par le démon
pour qu'il n'imprime qu'un fichier à  la fois.  Le fichier errs
contient les erreurs survenues sur l'imprimante.
Le fichier errs n'est pas obligatoire.  De plus, il peut s'appeler
comme vous le souhaitez, pourvu que son nom soit déclaré dans
le fichier /etc/printcap que nous décrirons dans la suite.
Page suivante - Page précédente - Table des matières
