9.3. Configuration de base

Pour utiliser des imprimantes avec le gestionnaire d'impression, il vous faudra configurer à la fois la partie matérielle (c'est à dire les imprimantes) et la partie logicielle (c'est à dire LPD). Ce document présente deux niveaux de configuration:

9.3.1. Configuration simple de l'imprimante

Cette section vous apprendra à configurer l'imprimante et LPD. Elle présente les bases:

Si vous mettez en oeuvre une imprimante réceptionnant les données à imprimer via un protocole réseau plutôt que par les interfaces locales de l'ordinateur, lisez la section Imprimantes avec des interfaces utilisant des flux réseau.

Bien que cette section soit intitulée “Configuration simple de l'imprimante”, elle s'avère en réalité plutôt complexe. La partie la plus difficile consiste à faire fonctionner l'imprimante avec votre ordinateur et LPD. Les options avancées telles les pages d'en-tête ou les statistiques sont relativement faciles à mettre en oeuvre une fois que l'imprimante fonctionne.

9.3.1.1. Configuration matérielle

Cette section détaille les différentes manières de connecter une imprimante à votre PC. Elle discute les types de ports et de câbles, et de la configuration noyau dont vous pourriez avoir besoin afin que FreeBSD puisse communiquer avec l'imprimante.

Si vous avez déjà connecté votre imprimante et réussi à imprimer sous un autre système d'exploitation, vous pouvez probablement passer à la section Configuration logicielle.

9.3.1.1.1. Les ports et les câbles

Les imprimantes pour PC vendues aujourd'hui sont en général pourvues d'une ou plusieurs des trois interfaces suivantes:

  • Les interfaces série, également connues sous les noms RS-232 ou ports COM, utilisent un port série sur votre ordinateur pour envoyer des données à l'imprimante. Les interfaces série sont courantes, dans l'industrie informatique, et les câbles sont à la fois disponibles et faciles à réaliser. Elles réclament parfois des câbles spéciaux et peuvent nécessiter le paramétrage d'options de communication assez complexes. La plupart des ports série PC ont une vitesse de transmission maximale de 115200 bps, ce qui rend l'impression de travaux comportant beaucoup de graphismes malaisée.

  • Les interfaces parallèles utilisent un port parallèle sur votre ordinateur pour envoyer des données à l'imprimante. Les interfaces parallèles sont courantes dans l'industrie informatique et plus rapides que les interfaces série RS-232. Les câbles sont disponibles mais sont moins faciles à fabriquer à la main. En général, il n'y a aucune option de communication à paramétrer avec ces interfaces, ce qui rend leur configuration particulièrement simple.

    Les interfaces parallèles sont parfois appelées “Centronics”, nom tiré du type de connecteur de l'imprimante

  • Les interfaces USB, tenant leur nom de “Universal Serial Bus”, ou “Bus Série Universel”, s'avèrent plus véloces encore que les interfaces parallèles ou série RS-232. Les câbles sont simples et peu onéreux. L'USB surpasse les interfaces série RS-232 et parallèles pour l'impression, mais son support par les systèmes UNIX® n'est pas aussi bon. Une façon d'éviter ce problème est d'acheter une imprimante qui dispose à la fois d'une interface USB et d'une interface parallèle, comme beaucoup de modèles.

En règle générale, les interfaces parallèles n'offrent qu'une communication unidirectionnelle (de l'ordinateur vers l'imprimante) alors que les interfaces série et USB permettent un échange bidirectionnel. Les imprimantes et ports parallèles plus récents (EPP et ECP) peuvent communiquer dans les deux sens sous FreeBSD lorsque l'on a recourt à un câble conforme à la norme IEEE-1284.

La communication bidirectionnelle avec l'imprimante en utilisant un port parallèle se fait en général de l'une des deux manières suivantes. La première utilise un pilote d'imprimante compilé pour FreeBSD comprenant le langage propriétaire de l'imprimante. C'est couramment le cas des imprimantes jet d'encre et cela peut être utilisé pour retourner les niveaux d'encre et autres informations d'état. La seconde méthode est employée lorsque l'imprimante supporte PostScript®.

Les travaux PostScript sont en fait des programmes envoyés à l'imprimante. Ils ne génèrent pas nécessairement de sortie papier et peuvent retourner leurs résultats directement à l'ordinateur. PostScript utilise aussi la communication bidirectionnelle pour avertir l'ordinateur de problèmes, comme des erreurs dans le programme PostScript ou des bourrages papier. Vos utilisateurs apprécieraient certainement de telles informations. De surcroît, la meilleure façon de tenir des statistiques sérieusement avec une imprimante PostScript nécessite la communication bidirectionnelle: on demande à l'imprimante quel est son compteur de pages (combien en a-t-elle imprimées depuis sa fabrication), puis on lui envoie le travail de l'utilisateur, enfin on lui redemande son compteur de pages. La différence entre les deux valeurs donne la consommation de papier que vous pouvez attribuer à cet utilisateur.

9.3.1.1.2. Les ports parallèles

Pour raccorder une imprimante utilisant une interface parallèle, branchez le câble Centronics sur l'imprimante et sur l'ordinateur. Les instructions accompagnant l'imprimante, l'ordinateur, ou les deux, devraient parfaitement vous renseigner.

Souvenez-vous du port parallèle que vous avez utilisé sur l'ordinateur. Pour FreeBSD, le premier se nomme ppc0; le deuxième, ppc1, et ainsi de suite. Le nom du fichier spécial de périphérique de l'imprimante suit les mêmes règles: /dev/lpt0 pour celle connectée sur le premier port parallèle, etc.

9.3.1.1.3. Les ports série

Pour raccorder une imprimante utilisant une interface série, branchez le câble série adéquat sur l'imprimante et sur l'ordinateur. Les instructions accompagnant l'imprimante, l'ordinateur, ou les deux, devraient parfaitement vous renseigner.

Si vous n'êtes pas sûr de savoir quel est le bon câble, voici ce que vous pouvez essayer:

  • Un câble modem relie chacune des broches du connecteur depuis l'une des extrémités du câble directement à la broche lui correspondant dans le connecteur de l'autre extrémité. Ce type de câble est également connu sous le nom de câble “DTE-to-DCE”.

  • Un câble null-modem relie certaines des broches directement, en intervertit d'autres (par exemple, “émission de données” et “réception de données”), et en court-circuite d'autres en interne sur chacun des sertissages des connecteurs. Ce type de câble est également connu sous le nom de câble “DTE-to-DTE”.

  • Un câble série pour imprimante, requis par certaines imprimantes peu conventionnelles, ressemble au câble null-modem, à ceci près qu'il envoie certains signaux à l'autre extrémité au lieu de les court-circuiter en interne.

Vous devriez également définir les paramètres de communication pour l'imprimante, d'ordinaire en utilisant les contrôles sur la face avant ou les commutateurs sur l'imprimante. Choisissez la valeur la plus élevée de bps (bits par seconde, encore appelés “vitesse de transmission”) autorisée conjointement par votre ordinateur et votre imprimante. Choisissez 7 ou 8 bits de données; aucun contrôle de parité ou un bit de parité paire ou impaire; et 1 ou 2 bits d'arrêt. Choisissez également un protocole de contrôle de flux: soit aucun, soit XON/XOFF (également appelé “in-band”, ou encore “contrôle logiciel”). Retenez ces paramètres pour la configuration logicielle, dans la section qui suit.

9.3.1.2. Configuration logicielle

Cette section détaille la configuration logicielle nécessaire pour imprimer sous FreeBSD avec le gestionnaire d'impression LPD.

Voici un aperçu des étapes à suivre:

  1. Configurez le noyau, si nécessaire, pour utiliser le port sur lequel vous raccorderez votre imprimante; la section Configurer le noyau de FreeBSD vous donnera la marche à suivre.

  2. Paramétrez le mode de communication du port parallèle si vous utilisez une imprimante de ce type; la section Paramétrer le mode de communication du port parallèle vous donnera les détails.

  3. Configurez LPD pour qu'il communique avec l'imprimante en renseignant le fichier /etc/printcap. Vous apprendrez comment faire un peu plus loin dans ce chapitre.

9.3.1.2.1. Configuration du noyau

Le noyau du système d'exploitation est compilé avec le support d'un certain ensemble de périphériques. Les interfaces série ou parallèle de votre imprimante en font partie. De ce fait, vous pourriez avoir à ajouter le support d'un port série ou parallèle supplémentaire si votre noyau n'a pas déjà été configuré en ce sens.

Pour savoir si le support d'une interface série est activé dans le noyau que vous êtes en train d'utiliser, entrez:

# grep sioN /var/run/dmesg.boot

N représente le numéro du port série, en commençant à zéro. Si vous obtenez un affichage similaire à:

sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A

alors le port est activé dans le noyau.

Pour savoir si le noyau supporte une interface parallèle, entrez:

# grep ppcN /var/run/dmesg.boot

N représente le numéro du port parallèle, en commençant à zéro. Si vous obtenez un affichage similaire à:

ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold

alors le port est activé dans le noyau.

Il se pourrait que vous ayez à reconfigurer le noyau afin que le système détecte et puisse utiliser un port parallèle ou série auquel vous avez connecté votre imprimante.

Pour ajouter le support d'un port série, voyez la section sur la configuration du noyau. Pour ajouter le support du port parallèle, voyez cette même section et celle qui suit.

9.3.1.3. Paramétrer le mode de communication du port parallèle

Lorsque vous utilisez l'interface parallèle, vous avez le choix entre deux modes de communication avec l'imprimante: par interruption, ou par polling (interrogation régulière ou scrutation). Le pilote d'imprimante générique (lpt(4)) de FreeBSD utilise le système ppbus(4), qui contrôle le chipset du port via le pilote ppc(4).

  • Le mode par interruption est le mode par défaut avec un noyau GENERIC. De cette manière, le système d'exploitation utilise une ligne d'interruption (IRQ) pour déterminer si l'imprimante est prête à recevoir des données.

  • Le mode par scrutation enjoint au système d'exploitation d'interroger à intervalles réguliers l'imprimante pour savoir si elle est prête à recevoir d'autres données. Lorsqu'elle répond par l'affirmative, le noyau lui en envoie plus.

Le mode par interruption est en général nettement plus rapide, mais consomme une précieuse ligne d'interruption (IRQ). On rapporte que certaines imprimantes HP récentes ne fonctionneraient pas correctement en mode par interruption, apparemment à cause d'un problème (pas encore très bien identifié) d'horloge. Ces imprimantes nécessitent le recours au mode par scrutation. Utilisez celui des deux qui fonctionne. Certaines imprimantes fonctionnent dans les deux modes, mais s'avèrent désagréablement lentes en mode par interruption.

Vous pouvez choisir le mode de communication de deux manières différentes: en configurant le noyau ou en utilisant le programme lptcontrol(8).

Pour paramétrer le mode de communication en configurant le noyau:

  1. Editez le fichier de configuration de votre noyau. Cherchez une entrée ppc0. Si vous voulez configurer le deuxième port parallèle, cherchez plutôt ppc1. Ou ppc2 pour le troisième, et ainsi de suite.

    • Si vous souhaitez activer le mode par interruption, éditez la ligne suivante:

      hint.ppc.0.irq="N"
      

      dans le fichier /boot/device.hints et remplacez N par le numéro d'IRQ approprié. Le fichier de configuration du noyau doit également comporter le pilote ppc(4):

      device ppc
      
    • Si vous souhaitez activer le mode par scrutation, ôtez la ligne suivante de votre fichier /boot/device.hints:

      hint.ppc.0.irq="N"
      

      Dans certains cas, positionner le port en mode scrutation sous FreeBSD n'est pas suffisant. La plupart du temps cela vient du pilote acpi(4), ce dernier étant capable de sonder et d'attacher des périphériques, et donc de contrôler le mode d'accès au port de l'imprimante. Vous devrez donc vérifier votre configuration acpi(4) pour résoudre ce problème.

  2. Sauvegardez le fichier, puis configurez, compilez, et installez le noyau avant de redémarrer. Consultez la section configuration du noyau pour plus de détails.

Pour paramétrer le mode de communication avec lptcontrol(8):

  1. Entrez:

    # lptcontrol -i -d /dev/lptN
    

    pour sélectionner le mode par interruption pour lptN.

  2. Entrez:

    # lptcontrol -p -d /dev/lptN
    

    pour sélectionner le mode par scrutation pour lptN.

Vous pouvez placer ces commandes dans votre fichier /etc/rc.local pour sélectionner le mode à chaque démarrage du système. Consultez lptcontrol(8) pour obtenir plus d'informations.

9.3.1.4. Vérifier la communication avec l'imprimante

Avant de passer à la configuration du gestionnaire d'impression, vous devriez vous assurer que le système d'exploitation fait parvenir avec succès des données à l'imprimante. Il est beaucoup plus facile de déboguer séparément la communication avec l'imprimante et la configuration du gestionnaire d'impression.

Pour tester l'imprimante, nous allons lui envoyer du texte. Pour les imprimantes qui peuvent immédiatement imprimer les caractères qui leur sont envoyés, le programme lptest(1) est parfait: il génère les 96 caractères ASCII imprimables sur 96 lignes.

Pour une imprimante PostScript (ou basée sur un autre langage), il va nous falloir un test plus sophistiqué. Un petit programme PostScript, tel que celui qui suit, devrait suffire:

%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage

Le code PostScript ci-dessus peut être placé dans un fichier et utilisé comme indiqué dans les exemples qui apparaissent dans les sections suivantes.

Note : Lorsque ce document fait référence à un langage d'imprimante, il suppose un langage comme PostScript, et pas le PCL de Hewlett-Packard. Quoique PCL dispose de fonctionnalités intéressantes, il est possible de mélanger du texte simple avec des séquences d'échappement. PostScript ne permet pas d'imprimer du texte clair, c'est le type de langage d'imprimante pour lequel nous devons prendre des mesures particulières.

9.3.1.4.1. Tester une imprimante parallèle

Cette section vous apprendra à vérifier si FreeBSD peut communiquer avec une imprimante connectée sur un port parallèle.

Pour tester une imprimante connectée sur un port parallèle:

  1. Passez en root avec su(1).

  2. Envoyez des données à l'imprimante.

    • Si l'imprimante peut sortir du texte simple, alors utilisez lptest(1). Entrez:

      # lptest > /dev/lptN
      

      N est le numéro du port parallèle, en commençant à zéro.

    • Si l'imprimante comprend le PostScript ou un autre langage d'imprimante, alors envoyez lui un petit programme. Entrez:

      # cat > /dev/lptN
      

      Tapez ensuite le programme, ligne à ligne et attentivement, car vous ne pouvez plus éditer une ligne une fois que vous avez appuyé sur la touche Retour Chariot ou Entrée. Une fois terminé, faites CONTROL+D, ou la combinaison correspondant à votre fin de fichier.

      Une autre manière de procéder est de placer le programme dans un fichier et d'entrer:

      # cat fichier > /dev/lptN
      

      fichier désigne le nom du fichier que vous désirez envoyer à l'imprimante.

Vous devriez voir quelque chose s'imprimer. Ne vous inquiétez pas si l'apparence du texte n'est pas satisfaisante; nous remédierons à ce genre de soucis plus tard.

9.3.1.4.2. Tester une imprimante série

Dans cette section vous apprendrez à vérifier si FreeBSD parvient à communiquer avec une imprimante connectée à un port série.

Pour tester une imprimante connectée sur un port série:

  1. Passez en root avec su(1).

  2. Editez le fichier /etc/remote. Ajoutez l'entrée suivante:

    printer:dv=/dev/port:br#bps-rate:pa=parity
    

    port représente le fichier de périphérique du port série (ttyd0, ttyd1, etc.), bps-rate représente la vitesse en bits-par-seconde à laquelle l'imprimante communique, et parity représente la parité réclamée par l'imprimante (even pour paire, odd pour impaire, none pour aucune, ou zero pour zéro).

    Voici un exemple d'entrée pour une imprimante connectée à 19200 bps, sans parité, sur le troisième port série:

    printer:dv=/dev/ttyd2:br#19200:pa=none
    
  3. Connectez-vous à l'imprimante avec tip(1). Entrez:

    # tip printer
    

    Si cette étape ne fonctionne pas, éditez le fichier /etc/remote à nouveau et essayez d'utiliser /dev/cuaaN au lieu de /dev/ttydN.

  4. Envoyez des données à l'imprimante.

    • Si l'imprimante peut sortir du texte simple, alors utilisez lptest(1). Entrez:

      % $lptest
      
    • Si l'imprimante comprend le PostScript ou tout autre langage d'imprimante, envoyez-lui un petit programme. Entrez-le ligne à ligne et très attentivement, dans la mesure où les touches d'édition, comme retour-arrière, peuvent revêtir une signification particulière pour l'imprimante. Vous pourriez également avoir besoin d'un caractère de fin de fichier (“EOF”) particulier pour que l'imprimante sache qu'elle a reçu tout le programme. Pour les imprimantes PostScript, appuyez sur CONTROL+D.

      Une autre manière de procéder est de placer le programme dans un fichier et d'entrer:

      % >fichier
      

      fichier est le nom du fichier contenant le programme. Après avoir envoyé le fichier avec tip(1), appuyez sur la touche de fin de fichier appropriée.

Vous devriez voir quelque chose s'imprimer. Ne vous inquiétez pas si l'apparence du texte n'est pas satisfaisante; nous remédierons à ce genre de soucis plus tard.

9.3.1.5. Mettre en place le gestionnaire d'impression: le fichier /etc/printcap

A ce stade, votre imprimante doit être branchée, votre noyau configuré pour communiquer avec elle (si cela est nécessaire); et vous avez réussi à faire parvenir des données simples à l'imprimante. Nous sommes maintenant prêts à paramétrer LPD pour qu'il contrôle l'accès à l'imprimante.

LPD se paramètre en éditant le fichier /etc/printcap. Le gestionnaire d'impression LPD le lit à chaque fois que le gestionnaire est solicité, donc les mises à jour du fichier sont immédiatement prises en compte.

Le format du fichier printcap(5) est explicite. Utilisez votre éditeur favori pour modifier /etc/printcap. Le format est identique aux autres fichiers de configuration comme /usr/share/misc/termcap et /etc/remote. Pour obtenir des informations complètes concernant ce format, consultez cgetent(3).

Le paramétrage simple du gestionnaire d'impression s'effectue selon les étapes suivantes:

  1. Choisissez un nom (et quelques alias appropriés) pour l'imprimante, et placez-les dans /etc/printcap; lisez la section Nommer l'imprimante pour plus d'informations sur le nommage.

  2. Désactivez les pages d'en-tête (elles sont activées par défaut) en insérant le paramètre sh; lisez la section Supprimer les pages d'en-tête pour plus d'informations.

  3. Créez un répertoire de file d'attente, et précisez son chemin d'accès avec le paramètre sd; lisez la section Créer le répertoire de fil d'attente pour obtenir plus d'informations.

  4. Sélectionnez l'entrée dev à utiliser pour l'imprimante, et notez la dans /etc/printcap avec le paramètre lp; lisez la section Identifier le périphérique d'imprimante pour obtenir plus d'informations. De plus, si l'imprimante est reliée par un port série, précisez les paramètres de communication avec le paramètre ms#, qui est détaillé dans la section Configurer les paramètres de communication du gestionnaire d'impression.

  5. Installez un filtre d'entrée sous forme de fichier texte simple; lisez la section Installer le filtre texte pour obtenir plus de détails.

  6. Testez la configuration en imprimant quelque chose avec la commande lpr(1). Vous trouverez plus de détails dans les sections Tester l'impression et Résolution des problèmes.

Note : Les imprimantes basées sur un langage d'impression, telles les imprimantes PostScript, ne peuvent imprimer du texte simple directement. La configuration simple esquissée ci-dessus et détaillée dans les sections suivantes présuppose que si vous installez ce genre d'imprimante vous n'imprimerez que des fichiers qu'elle peut comprendre.

Les utilisateurs s'attendent souvent à pouvoir imprimer du texte simple sur n'importe laquelle des imprimante installées sur votre système. Les applications qui s'en remettent à LPD pour imprimer s'y attendent en général elles aussi. Si vous installez ce genre d'imprimante et désirez pouvoir imprimer à la fois des travaux dans le langage de l'imprimante et des travaux en texte simple, vous êtes instamment prié d'ajouter une étape supplémentaire à la configuration simple esquissée ci-dessus: installez un programme de conversion automatique texte simple vers PostScript (ou tout autre langage d'imprimante). La section Prendre en charge des travaux texte sur des imprimantes PostScript vous apprendra à le faire.

9.3.1.5.1. Nommer l'imprimante

La première étape (facile) est de choisir un nom pour l'imprimante. Que vous choisissiez un nom fonctionnel ou fantaisiste n'a aucune importance puisque vous pouvez également fournir une série d'alias.

Au moins l'une des imprimantes définies dans le fichier /etc/printcap devrait avoir pour alias lp. C'est le nom de l'imprimante par défaut. Si les utilisateurs n'ont pas positionné la variable d'environnement PRINTER et ne spécifient pas le nom d'une imprimante lorsqu'ils utilisent une ligne de commande relative à LPD, lp sera l'imprimante par défaut utilisée.

Par ailleurs, l'usage commun veut que le dernier alias d'une imprimante en soit une description complète, en incluant le fabricant et le modèle.

Une fois le nom et des alias communs choisis, placez-les dans le fichier /etc/printcap. Le nom de l'imprimante devrait commencer dans la colonne la plus à gauche. Séparez chaque alias par une barre verticale et mettez le caractère deux-points après le dernier alias.

Dans l'exemple suivant, nous commençons avec le squelette d'un /etc/printcap qui définit deux imprimantes (une Diablo 630 et une imprimante PostScript laser Panasonic KX-P4455):

#
#  /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

Dans cet exemple, la première imprimante se nomme rattan et possède les alias suivants: line, diablo, lp et Diablo 630 Line Printer. Puisque l'alias lp lui est attribué, elle est également l'imprimante par défaut. La seconde s'appelle bamboo et possède les alias suivants: ps, PS, S, panasonic et Panasonic KX-P4455 PostScript v51.4.

9.3.1.5.2. Supprimer les pages d'en-tête

Par défaut, le gestionnaire d'impression LPD imprime une page d'en-tête pour chaque impression. Celle-ci mentionne le nom de l'utilisateur qui a demandé l'impression, la machine qui l'a envoyé, et le nom de l'impression, en grands et jolis caractères. Malheureusement, tout ce texte supplémentaire parasite le débogage d'une configuration simple de l'imprimante, aussi supprimerons-nous ces pages d'en-têtes.

Pour cela, ajoutez le paramètre sh à l'entrée de l'imprimante dans /etc/printcap. Voici un exemple de /etc/printcapsh a été ajouté:

#
#  /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:

Observez la façon dont nous avons respecté le format correct: la première ligne commence dans la colonne la plus à gauche, et les lignes suivantes sont indentées. Toutes les lignes d'une entrée sauf la dernière se terminent par un antislash.

9.3.1.5.3. Créer le répertoire de file d'attente

La prochaine étape dans la configuration simple du gestionnaire d'impression consiste à créer un répertoire de file d'attente, c'est à dire un répertoire où les travaux vont demeurer jusqu'à ce qu'ils soient imprimés, et où un certain nombre d'autres fichiers nécessaires au gestionnaire d'impression prennent place.

A cause de la nature variable des répertoires de file d'attente, il est d'usage de les placer dans /var/spool. Il n'est pas non plus nécessaire de sauvegarder leur contenu. Les recréer est aussi simple que de faire un mkdir(1).

Il est également d'usage de créer le répertoire avec un nom identique à celui de l'imprimante, comme dans l'exemple ci-dessous:

# mkdir /var/spool/nom-de-l-imprimante

Toutefois, si votre réseau comporte beaucoup d'imprimantes, vous pouvez préférer placer les répertoires de file d'attente dans un unique répertoire que vous réserverez à l'impression avec LPD. C'est ce que nous allons faire pour les deux imprimantes de notre exemple, rattan et bamboo:

# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo

Note : Si la confidentialité des travaux imprimés par les utilisateurs vous importe, vous souhaiterez certainement protéger le répertoire de file d'attente afin qu'il ne soit pas accessible par tout le monde. Les répertoires de file d'attente doivent appartenir, être accessibles en lecture et écriture et pouvoir être parcourus par l'utilisateur daemon et le groupe daemon, et personne d'autre. C'est ce que nous allons faire pour les deux imprimantes de notre exemple:

# chown daemon:daemon /var/spool/lpd/rattan
# chown daemon:daemon /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan
# chmod 770 /var/spool/lpd/bamboo

Pour finir, vous devez avertir LPD de l'existence de ces répertoires en utilisant le fichier /etc/printcap. Vous spécifiez le chemin du répertoire file d'attente avec le paramètre sd:

#
#  /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:

Notez que le nom de l'imprimante commence dans la première colonne mais que toutes les autres entrées décrivant l'imprimante doivent être indentées et que chaque fin de ligne doit être protégée par un antislash.

Si vous ne précisez pas de répertoire de file d'attente avec sd, le gestionnaire d'impression utilisera /var/spool/lpd par défaut.

9.3.1.5.4. Identifier le périphérique d'imprimante

Dans la section Entrées des périphériques nous avons identifié l'entrée du répertoire /dev que FreeBSD utiliserait pour communiquer avec l'imprimante. Maintenant, nous allons passer cette information à LPD. Quand le gestionnaire d'impression aura une impression à effectuer, il ouvrira le périphérique spécifié au nom du programme de filtre (qui est responsable de la transmission des données à l'imprimante).

Positionnez l'entrée pour le chemin d'accès /dev dans le fichier /etc/printcap en utilisant le paramètre lp.

Dans notre exemple, supposons que rattan est sur le premier port parallèle, et que bamboo est sur un sixième port série; voici les ajouts à apporter à /etc/printcap:

#
#  /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:

Si dans votre /etc/printcap vous ne précisez pas le paramètre lp pour une imprimante, LPD utilisera /dev/lp par défaut. A l'heure actuelle, il n'existe pas d'entrée /dev/lp sous FreeBSD.

Si l'imprimante que vous êtes en train d'installer est connectée à un port parallèle, vous pouvez directement vous rendre à la section Installer le filtre texte. Sinon, assurez-vous de suivre les instructions de la section qui suit.

9.3.1.5.5. Configurer les paramètres de communication du gestionnaire d'impression

Pour les imprimantes connectées au port série, LPD peut configurer la vitesse en bps, la parité, et d'autres paramètres de communication série, pour le compte du programme de filtre qui envoie les données à l'imprimante. C'est avantageux dans la mesure où:

  • Cela vous laisse essayer divers paramètres simplement en éditant le fichier /etc/printcap; vous n'avez pas besoin de recompiler le programme de filtre.

  • Cela permet au gestionnaire d'impression d'utiliser le même programme pour de multiples imprimantes qui peuvent avoir des paramètres de communication série différents.

Les paramètres /etc/printcap suivants contrôlent les options de communication série pour le périphérique spécifié dans le paramètre lp:

br#vitesse-bps

Positionne la vitesse de transmission du périphérique à vitesse-bps, où vitesse-bps peut prendre l'une des valeurs suivantes: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, ou 115200 bits par seconde.

ms#stty-mode

Positionne les options du périphérique de terminal après l'avoir ouvert. stty(1) présente les options disponibles.

Quand LPD ouvre le périphérique spécifié par le paramètre lp, il positionne les caractéristiques de ce périphérique aux valeurs précisées par le paramètre ms#. Les modes suivants, détaillés dans stty(1) sont particulièrement intéressants: parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, et ixon.

Peaufinons notre exemple pour l'imprimante qui est connectée au sixième port série. Nous allons paramétrer sa vitesse à 38400 bps. Quant au mode, nous allons spécifier aucune parité avec -parenb, des caractères 8 bits avec cs8, aucun contrôle modem avec clocal et un contrôle de flux matériel avec crtscts:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:

9.3.1.5.6. Installer le filtre texte

Nous sommes maintenant en mesure de dire à LPD quel filtre texte utiliser pour envoyer les travaux à l'imprimante. Un filtre texte, également connu sous le nom de filtre d'entrée, est un programme que LPD lance lorsqu'il a une impression à effectuer. Lorsque LPD exécute le filtre texte pour une imprimante, il redirige l'entrée standard du filtre sur le travail d'impression, et la sortie standard sur le fichier spécial de périphérique spécifié par le paramètre lp. On attend du filtre qu'il lise le travail d'impression sur son entrée standard, effectue les transformations nécessaires pour l'imprimante, et écrive le résultat sur sa sortie standard, qui sera imprimée. Pour plus d'informations sur les filtres texte, lisez la section Filtres.

Pour notre configuration simple de l'imprimante, le filtre texte peut être une petite procédure d'interpréteur de commandes qui ne fera qu'exécuter /bin/cat pour envoyer le travail d'impression à l'imprimante. Un autre filtre est livré avec FreeBSD, nommé lpf, qui se charge de faire des suppressions arrière et des soulignements pour les imprimantes qui ne sauraient pas gérer correctement ce genre de flux de caractères. Et bien sûr, vous pouvez utiliser un autre filtre, quel qu'il soit. Le filtre lpf est détaillé dans la section lpf: un filtre texte.

Tout d'abord, composons le filtre /usr/local/libexec/if-simple qui sera un simple filtre texte. Ecrivez ceci avec votre éditeur de texte favori:

#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout.  Ignores all filter arguments.

/bin/cat && exit 0
exit 2

Rendez le fichier exécutable:

# chmod 555 /usr/local/libexec/if-simple

Et avertissez LPD qu'il doit l'utiliser, en renseignant le paramètre if dans /etc/printcap. Nous l'ajouterons aux deux imprimantes utilisées jusqu'ici dans notre /etc/printcap d'exemple:

#
#  /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
        :if=/usr/local/libexec/if-simple:

Note : Vous trouverez une copie du filtre if-simple dans le répertoire /usr/share/examples/printing.

9.3.1.5.7. Lancer LPD

lpd(8) se lance depuis /etc/rc, avec la variable de contrôle lpd_enable. Cette variable a NO pour valeur par défaut. Si vous ne l'avez pas déjà fait, ajoutez la ligne:

lpd_enable="YES"

à votre /etc/rc.conf, puis relancez votre machine, ou lancez simplement lpd(8).

# lpd

9.3.1.5.8. Tester la configuration

Vous avez achevé la configuration simple de LPD. Malheureusement, les félicitations ne sont pas encore à l'ordre du jour, puisque nous devons encore tester la configuration et résoudre tout problème. Pour tester la configuration, essayez d'imprimer quelque chose. Pour imprimer avec le système LPD, vous devez utiliser la commande lpr(1), qui soumet un travail d'impression.

Vous pouvez combiner lpr(1) au programme lptest(1), que nous avons présenté à la section Vérifier la communication avec l'imprimante, pour produire du texte de test.

Pour tester la configuration simple de LPD

Entrez:

# lptest 20 5 | lpr -Pnom-de-l-imprimante

nom-de-l-imprimante représente le nom (ou l'alias) d'une imprimante tel que spécifié dans /etc/printcap. Pour tester l'imprimante par défaut, tapez lpr(1) sans aucun argument -P. Encore une fois, si vous faites ce test avec une imprimante qui s'attend à recevoir du PostScript, envoyez un programme PostScript au lieu d'employer lptest(1). Vous pouvez le faire en plaçant le programme dans un fichier et en entrant lpr fichier.

Pour une imprimante PostScript, vous devriez obtenir le résultat du programme. Si vous utilisez lptest(1), alors votre sortie devrait ressembler à ça:

!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678

Pour tester l'imprimante plus encore, téléchargez des programmes (pour les imprimantes basées sur un langage spécifique) plus longs, ou lancez lptest(1) avec des arguments différents. Par exemple, lptest 80 60 produira 60 lignes de 80 caractères chacune.

Si l'impression ne fonctionne pas, lisez la section Résolution des problèmes.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <[email protected]>.
Pour les questions sur cette documentation, contactez <[email protected]>.