Imprimer sous Gentoo

Sven Vermeulen  Auteur
Joshua Saddler  Correcteur
Camille Huot  Traducteur
Sébastien Baudru  Traducteur

Dernière mise à jour le 14 juin 2009

1.  Gentoo Linux et l'impression

Utiliser le bon outil

Les systèmes GNU/Linux savent très bien gérer les imprimantes. L'outil qui s'occupe de cette tâche est CUPS (Common Unix Printing System). Depuis le début du projet, en 1999, l'installation et la maintenance de CUPS se sont largement améliorées.

Dans ce document, nous verrons comment utiliser CUPS pour installer une imprimante locale et une imprimante réseau. Nous n'entrerons pas vraiment dans les détails car le projet possède une documentation détaillée pour les utilisations avancées.

2.  Configuration du noyau

Introduction

Pour installer une imprimante sur votre système, vous devez savoir de quelle manière celle-ci est connectée à celui-là. Est-ce par un port local, parallèle (LPT) ou USB, ou par un port réseau ? Dans ce dernier cas, est-ce qu'elle utilise le protocole d'impression par Internet (IPP) ou bien le protocole de partage Microsoft Windows (SMB-CIFS) ?

Les prochaines sections de ce chapitre décrivent la configuration minimale du noyau nécessaire. Bien entendu, cela dépend de la façon dont l'imprimante est reliée à votre système. Pour plus de clarté, nous avons séparé les instructions :

Ok. Placez-vous dans le répertoire /usr/src/linux et lancez make menuconfig pour entrer dans la configuration du noyau. Si vous utiliser genkernel pour fabriquer votre noyau, procédez tout de même à ces étapes pour vous assurer que rien n'a été oublié.

Dans les exemples suivants, nous compilerons les pilotes nécessaires dans le noyau et non pas en tant que modules. Cela n'est pas obligatoire ; vous pouvez bien sûr les compiler en modules, n'oubliez juste pas de les charger. Le noyau utilisé est un 2.6 ; les utilisateurs de noyau 2.4 vont peut-être devoir chercher certaines directives à un autre endroit que celui indiqué.

Maintenant, lisez la section correspondante à votre cas pour vérifier les réglages de votre noyau.

Imprimante locale parallèle (LPT)

Pour compiler le pilote des imprimantes parallèles, il faut activer le support pour le port parallèle, ensuite choisir le support PC-style (sauf si vous êtes un utilisateur de station SPARC) et enfin activer le support des imprimantes parallèles.

Exemple de code 2.1 : Activer le support des imprimantes à port parallèle

Device Drivers -->
  <*> Parallel port support
  <*>   PC-style hardware
  [*] IEEE 1284 transfer modes

Device Drivers -->
  Character Devices -->
    <*> Parallel printer support

Note : Certains utilisateurs devront peut-être activer d'autres options dans la catégorie Parallel port support. Lisez la fonction d'aide (Help) du noyau pour plus d'information.

Voilà. Quittez la configuration du noyau et recompilez-le. Ensuite, n'oubliez pas de copier la nouvelle image dans /boot (en montant /boot auparavant si besoin) et mettez à jour votre gestionnaire de démarrage avant de redémarrer le système.

Maintenant, continuez avec l'installation et la configuration de CUPS.

Imprimante locale USB

Pour activer l'impression par USB, vous avez besoin des supports de l'USB et des imprimantes USB.

Exemple de code 2.2 : Activer le support des imprimantes USB

Device Drivers -->
  USB Support -->
    <*> Support for Host-side USB
    (...)
    --- USB Host Controller Drivers
    (Choisissez le ou les HCD utilisés par votre système. Si vous ne savez pas
    lesquels choisir, tapez « lspci -v | grep HCI » dans un autre terminal.)
    <*> EHCI HCD (USB 2.0) support ( or )
    <*> OHCI HCD support           ( or )
    <*> UHCI HCD (most Intel and VIA) support
    (...)
    <*> USB Printer support

Voilà. Quittez la configuration du noyau et recompilez-le. Ensuite, n'oubliez pas de copier la nouvelle image dans /boot (en montant /boot auparavant si besoin) et mettez à jour votre gestionnaire de démarrage avant de redémarrer le système.

Maintenant, continuez avec l'installation et la configuration de CUPS.

Imprimante réseau IPP

Pour vous connecter à une imprimante réseau en utilisant le protocole IPP, votre noyau n'a rien besoin d'autre que le support du réseau. En supposant que vous l'ayez déjà, vous pouvez poursuivre avec l'installation et la configuration de CUPS.

Imprimante réseau Windows (SMB-CIFS)

Votre noyau doit contenir le pilote SMB CIFS :

Exemple de code 2.3 : Activer le support des imprimantes SMB-CIFS

File systems -->
  Network File Systems -->
    <*> SMB file system support (to mount Windows shares etc.)
    <*> CIFS support (advanced network file system for Samba, Windows and other CIFS compliant servers)

Voilà. Quittez la configuration du noyau et recompilez-le. Ensuite, n'oubliez pas de copier la nouvelle image dans /boot (en montant /boot auparavant si besoin) et mettez à jour votre gestionnaire de démarrage avant de redémarrer le système.

Maintenant, continuez avec l'installation et la configuration de CUPS.

3.  Installer et configurer CUPS

Installation

L'installation de CUPS avec Gentoo est enfantine. Le paquet de CUPS dispose de quelques fonctionnalités optionnelles qui pourraient vous intéresser. Pour activer ou désactiver une de ces fonctionnalités, utilisez la variable USE.

Paramètre USE Impact sur CUPS
dbus Active le support du bus de communication système dbus.
jpeg Permet l'impression des images JPEG.
nls Active le support des langues. Avec nls activé, CUPS est capable de communiquer en différentes langues.
pam Si vous devez authentifier les travaux d'impression à l'aide d'un module PAM (Pluggable Authentication Modules), ce paramètre activera le support PAM pour CUPS.
php Active le support des scripts PHP.
png Permet l'impression des images PNG.
ppds Permet l'utilisation de fichiers PPD (pilotes d'impression) créés automatiquement. Voir Installer le meilleur pilote.
samba Si vous voulez pouvoir partager des imprimantes locales vers des systèmes Windows sur votre réseau en utilisant le protocole SMB-CIFS ou si vous comptez utiliser une imprimante partagée via ce même protocole, vous aurez besoin du support Samba.
slp Dans un environnement organisé, l'imprimante sera peut-être disponible en tant que service. Avec le protocole de localisation de service (Service Location Protocol), vous pouvez simplement trouver et paramétrer un service sur votre système. Activez cette option USE si votre imprimante est disponible en tant que service ou bien si vous voulez la rendre disponible de cette façon.
ssl Si vous utilisez un système d'authentification distant ou si vous voulez protéger votre vie privée, vous devrez installer le support SSL, qui chiffrera les connexions réseaux. Le support SSL doit être activé chez tous les participants de votre réseau.
tiff Permet l'impression des images au format TIFF.
X Vous permet d'ouvrir la page web d'administration de CUPS directement depuis le menu de votre gestionnaire de bureau.

Vérifiez vos réglages actuels de la variable USE. Pour modifier certaines valeurs uniquement pour CUPS, ajoutez les paramètres concernés dans le fichier /etc/portage/package.use.

Exemple de code 3.1 : Réglages de la variable USE pour CUPS

# emerge -pv cups
[ebuild N     ] net-print/cups-1.2.6 "X dbus jpeg nls pam png ppds ssl -php -samba -slp -tiff" 0 kB

(Par exemple, pour activer le support Samba pour CUPS :)
# echo "net-print/cups samba" >> /etc/portage/package.use

Si vous êtes satisfait du résultat, laissez Portage installer CUPS.

Exemple de code 3.2 : Installer CUPS

# emerge cups

Si l'imprimante est connectée directement sur votre système, vous devez charger CUPS automatiquement au démarrage. Assurez-vous que l'imprimante est bien reliée et allumée avant de lancer CUPS.

Exemple de code 3.3 : Démarrer automatiquement CUPS

# /etc/init.d/cupsd start
# rc-update add cupsd default

Configuration

La configuration par défaut du serveur CUPS située dans le fichier /etc/cups/cupsd.conf est suffisante pour la majorité des utilisateurs. Cependant, certains devront effectuer quelques modifications.

Les prochaines sections détaillent certaines situations fréquentes :

Accès à distance à l'imprimante

Si vous voulez permettre à d'autres systèmes d'accéder à votre imprimante grâce au protocole IPP, vous devez le spécifier explicitement dans le fichier /etc/cups/cupsd.conf. Si vous voulez la partager avec Samba, cette modification n'est pas requise.

Ouvrez /etc/cups/cupsd.conf avec votre éditeur de texte favori et ajoutez-y une ligne Allow pour permettre aux systèmes concernés de pouvoir contacter votre imprimante. Dans l'exemple suivant, nous offrons un accès vers notre imprimante à la machine locale et à n'importe quel système dont l'adresse IP commence par 192.168.0.

Exemple de code 3.4 : Autoriser l'accès distant vers votre imprimante

<Location />
Order Allow,Deny
Allow localhost
Allow from 192.168.0.*
Deny All
</Location>

(Cette information est diffusée aux clients du réseau)
(C'est ce quileur permet de savoir qu'une imprimante est disponible)
BrowseAddress 192.168.0.*:631

Vous devez également spécifier sur quel port CUPS écoute, afin qu'il puisse répondre aux requêtes d'impression de la part des autres machines du réseau.

Exemple de code 3.5 : Configuration du port dans /etc/cups/cupsd.conf

Listen *:631
(Vérifiez que « localhost » est bien commenté.)
#Listen localhost:631

Note : Si vous utilisez toujours CUPS 1.1 (obsolète), vous devrez utiliser une syntaxe différente :

Exemple de code 3.6 : Configuration pour CUPS 1.1 (obsolète)

Port 631
(Assurez-vous que les deux lignes suivantes sont bien commentées.)
#Listen 127.0.0.1:631
#Listen localhost:631

Administration à distance de CUPS

Si vous êtes intéressé par l'administration à distance, vous aurez besoin d'autoriser l'accès depuis d'autres systèmes que localhost à votre interface d'administration. Éditez le fichier /etc/cups/cupsd.conf et autorisez explicitement le système désiré. Par exemple, pour autoriser la machine locale ainsi que le système qui possède l'adresse IP 192.168.0.3 :

Exemple de code 3.7 : Autoriser l'accès à distance dans /etc/cups/cupsd.conf

<Location /admin>
(...)
 Encryption Required
 Order allow,deny
 Allow localhost
 Allow 192.168.0.3
 Deny all
</Location>

N'oubliez pas de redémarrer CUPS après avoir fait une modification au fichier /etc/cups/cupsd.conf en lançant la commande /etc/init.d/cupsd restart.

Activer le support des pilotes PCL Windows

Les pilotes PCL envoient des données brutes au serveur d'impression. Pour activer ce type d'impression dans CUPS, éditez /etc/cups/mime.types et décommentez la ligne application/octet-stream si elle ne l'est pas déjà. Faites de même dans le fichier /etc/cups/mime.convs.

Exemple de code 3.8 : Autoriser l'envoi de données brutes directement aux imprimantes

# vim /etc/cups/mime.types
(Décommentez la ligne :)
application/octet-stream

# vim /etc/cups/mime.convs
(Décommentez la ligne :)
application/octet-stream     application/vnd.cups-raw    0    -

Après avoir effectuées ces modifications, n'oubliez pas de redémarrer CUPS en lançant la commande /etc/init.d/cupsd restart.

Configurer une imprimante réseau

Si l'imprimante est reliée à un serveur géré par CUPS, vous pouvez facilement configurer votre système pour qu'il utilise cette l'imprimante réseau en modifiant le fichier /etc/cups/client.conf.

Si on suppose que l'imprimante est attachée au système nommé serveurimpression.mondomaine, éditez /etc/cups/client.conf avec votre éditeur de texte favori et renseignez correctement la directive ServerName :

Exemple de code 3.9 : Éditer client.conf

# vim /etc/cups/client.conf

(Remplacez serveurimpression.mondomaine par
le nom de votre serveur d'impression :)
ServerName serveurimpression.mondomaine

Vous utiliserez alors l'imprimante qui est configurée par défaut sur ce serveur d'impression. Pour choisir une autre imprimante que celle par défaut, utilisez lpoptions :

Exemple de code 3.10 : Changer l'imprimante par défaut

(D'abord, afficher les imprimantes disponibles :)
# lpstat -a
hpljet5p accepting requests since Jan 01 00:00
hpdjet510 accepting requests since Jan 01 00:00

(On choisit la HP LaserJet 5P comme imprimante par défaut :)
# lpoptions -d hpljet5p

4.  Configurer une imprimante

Introduction

Si l'imprimante que vous souhaitez configurer est disponible depuis un autre serveur d'impression (sous CUPS), vous n'avez pas besoin de lire ces informations. Lisez plutôt Installer une imprimante réseau.

Détecter l'imprimante

Si vous avez une imprimante USB ou si votre imprimante à port parallèle était allumée lorsque vous avez démarré votre système Linux, vous pouvez récupérer les informations du noyau qui annonceraient la détection de l'imprimante. Cependant, ceci n'est qu'une simple indication.

Exemple de code 4.1 : Récupérer les informations du noyau

(Pour une imprimante à port parallèle :)
$ dmesg | grep -i print
parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series

(Pour une imprimante USB :)
$ lsusb
(...)
Bus 001 Device 007: ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse

Installer l'imprimante

Pour installer l'imprimante sur votre système, lancez votre navigateur web et aller sur l'adresse http://localhost:631. Vous serez accueilli par l'interface web de CUPS à partir de laquelle vous pourrez exécuter toutes les tâches d'administration.

Note : Si vous utilisez une connexion HTTPS pour CUPS, la première fois que vous accéderez à l'interface peut être très longue avant que le site ne s'affiche. Cela est dû au fait que la première requête déclenche la génération des certificats SSL pour CUPS, ce qui peut représenter un travail assez long.

Entrez dans la catégorie Administration et identifiez-vous sur la page avec votre compte root. Ensuite, une fois sur l'interface principale d'administration, cliquez sur Ajouter imprimante (ou Add Printer). Un nouvel écran vous proposera de lui fournir certains renseignements à propos de cette nouvelle imprimante que vous souhaitez ajouter :

L'écran suivant vous demande derrière quel périphérique se trouve l'imprimante. Un certain choix de périphériques est proposé, voici une liste non exhaustive des plus fréquents :

Périphérique Description
AppSocket/HP JetDirect Ce périphérique spécial permet à des imprimantes réseaux d'être accessibles en passant par une interface HP JetDirect. Seules des imprimantes spécifiques supportent cela.
Internet Printing Protocol (IPP ou HTTP) Utilisez celui-ci pour contacter votre imprimante réseau grâce au protocole IPP, soit directement (IPP), soit au travers de HTTP.
LPD/LPR Host or Printer Choisissez celui-là si l'imprimante réseau est derrière un serveur LPD/LPR.
Parallel Port #1 Ce périphérique désigne le port parallèle de votre système (LPT). Si l'imprimante est automatiquement détectée, son nom sera ajouté à la fin du nom du périphérique.
USB Printer #1 Enfin, le port USB. Le nom de l'imprimante devrait automatiquement être ajouté à la fin du nom du périphérique.

Si vous installez une imprimante réseau, le formulaire vous demandera l'URI de l'imprimante :

Ensuite, sélectionnez le fabricant de l'imprimante puis son modèle. Plusieurs pilotes peuvent être disponibles pour un certain type d'imprimantes. Vous pouvez en choisir un de suite ou bien vous rendre sur la liste d'imprimantes de LinuxPrinting.org pour y chercher un bon pilote. Vous pourrez facilement changer le pilote par la suite.

Une fois le pilote choisi, CUPS vous confirmera l'ajout de l'imprimante dans sa base de données. Vous pouvez maintenant aller voir l'interface Administrer imprimantes, qui se situe dans la catégorie Administration, pour Configurer (votre) imprimante (résolution, format de la page...).

Tester et reconfigurer l'imprimante

Pour vérifier que l'imprimante fonctionne correctement, rendez-vous sur la page d'administration, sélectionnez votre imprimante et cliquez sur Imprimer page test.

Si l'imprimante semble ne pas fonctionner comme il faut, cliquez sur Modifier imprimante pour la reconfigurer. Les mêmes écrans que lors de l'installation apparaîtront et vous pourrez ajuster vos réglages pour améliorer la situation.

Si vous ne savez pas du tout pourquoi votre imprimante ne fonctionne pas, vous pouvez jeter un œil au fichier /var/log/cups/error_log. Dans l'exemple suivant, nous voyons qu'il s'agit un problème de permission, probablement causé par une directive Allow mal configurée dans /etc/cups/cupsd.conf.

Exemple de code 4.2 : À la recherche des erreurs de CUPS

# tail /var/log/cups/error_log
(...)
E [11/Jun/2005:10:23:28 +0200] [Job 102] Unable to get printer status (client-error-forbidden)!

Installer le meilleur pilote

Plusieurs pilotes d'imprimante existent, il s'agit de trouver le meilleur pour votre imprimante. Consultez la liste d'imprimantes de LinuxPrinting, sélectionnez votre marque et modèle pour savoir quel pilote est recommandé par le site. Par exemple, pour la HP LaserJet 5P, le site recommande le pilote ljet4.

Téléchargez le fichier PPD directement depuis le site, placez-le dans le répertoire /usr/share/cups/model et relancez cups avec la commande /etc/init.d/cupsd restart. Le pilote devrait être maintenant reconnu par CUPS dans l'interface web. Reconfigurez votre imprimante avec ce pilote, comme expliqué précédemment.

5.  Utiliser des pilotes d'imprimante spéciaux

Introduction

Quelques imprimantes doivent utiliser un pilote particulier, ne serait-ce que pour utiliser des fonctionnalités spéciales qui ne sont pas disponibles dans la configuration générique du pilote. Ce chapitre traite de certaines de ces imprimantes et de comment nous allons faire pour les faire marcher sous Gentoo Linux.

Nous parlerons des pilotes d'imprimante suivants :

Le pilote Gutenprint

Les pilotes gutenprint sont de haute qualité et libres, gèrent de nombreuses imprimantes Canon, Epson, HP, Lexmark, Sony, Olympus et PCL, supportent CUPS, Ghostscript, The Gimp et encore d'autres applications.

L'arbre Portage de Gentoo contient un ebuild pour ces pilotes gutenprint. Vous n'avez qu'à utiliser emerge pour les installer. Notez que l'ebuild prend en compte un certain nombre de paramètres USE (tels que cups et ppds). Activez au moins ces deux paramètres.

Exemple de code 5.1 : Installer les pilotes gutenprint

# emerge gutenprint

Lorsqu'emerge a fini l'installation, les pilotes gutenprint seront disponibles dans l'interface web de CUPS.

Le pilote HPLIP

Le projet HPLIP contient les pilotes hpijs et inclut une gestion des scanners et des outils pour les équipements multi-fonctions. Pour obtenir les pilotes d'impression, vous devez activer le paramètre USE ppds.

Exemple de code 5.2 : Installer les pilotes hplip

(Vérifier que l'option ppds est activée dans la variable USE)

# emerge -vp hplip

These are the packages that would be merged, in order:

Calculating dependencies ...done!
[ebuild  N    ] net-print/hplip-2.7.10  USE="ppds -X -doc -fax -minimal -parport -scanner -snmp" 14,104 kB

Total: 1 package (1 new), Size of downloads: 14,104 kB

# emerge hplip
# hp-setup
# /etc/init.d/cupsd restart

Lorsqu'emerge aura fini l'installation, l'outil hp-setup va tenter de détecter et d'installer les pilotes de votre imprimante sur le système. Une fois cela fait, votre imprimante sera disponible dans l'interface web de CUPS.

Le pilote PNM2PPA

PPA est une technologie de Hewlett-Packard qui consiste à faire faire les calculs de bas niveau au système plutôt qu'à l'imprimante, ce qui baisse le coût de l'imprimante en consommant un peu plus de ressources sur la machine.

Si le site LinuxPrinting vous dit que le pilote pnm2ppa est le meilleur choix pour vous, vous devez installer le filtre pnm2ppa sur votre système :

Exemple de code 5.3 : Installer le filtre pnm2ppa

# emerge pnm2ppa

Une fois installé, téléchargez le fichier PPD depuis le site Linux Printing et sauvez-le dans le répertoire /usr/share/cups/model. Ensuite, configurez votre imprimante en utilisant les instructions déjà mentionnées.

6.  Imprimer depuis ou vers un Microsoft Windows

Note : Pour des informations plus détaillées sur le paramétrage de CUPS avec Samba, reportez-vous à notre guide de Samba/CUPS.

Configurer un client Windows avec IPP

Microsoft Windows supporte IPP (Windows 9x et ME doivent être mis à jour). Pour installer sous Windows une imprimante qui est connectée à votre Linux, lancez l'assistant Ajouter une imprimante et sélectionnez Imprimante réseau. Lorsqu'on vous demandera l'adresse, utilisez la syntaxe http://nomduserveur:631/imprimantes/queue.

Soyez sûr que vos machines peuvent accéder à votre imprimante !

Configurer un client Windows pour accéder à une imprimante partagée avec Samba

Pour partager l'imprimante sur le réseau SMB-CIFS, votre Samba doit être installé et correctement configuré. La manière de procéder pour cela n'est pas du ressort de ce document, mais nous verrons rapidement la configuration de Samba pour les imprimantes partagées.

Ouvrez le fichier /etc/samba/smb.conf avec votre éditeur de texte favori et ajouter-y une section [printers] :

Exemple de code 6.1 : Ajouter une section [printers]

[printers]
  comment      = Toutes les imprimantes
  path         = /var/spool/samba
  browseable   = no
  guest ok     = no
  writable     = no
  printable    = yes
  public       = yes
  printer name = hpljet5p

Maintenant, remontez dans le fichier smb.conf jusqu'à ce que vous soyez dans la section [global]. Cherchez les paramètres printcap name et printing et addressez-les à cups :

Exemple de code 6.2 : Modifier la section [global]

[global]
  (...)
  printcap name = cups
  printing      = cups

Assurez-vous d'avoir activé le support des pilotes PCL Windows dans CUPS, puis redémarrez le service smb pour que les modifications deviennent effectives.

Configurer un client Linux pour utiliser un serveur d'impression Windows

Premièrement, assurez-vous que l'imprimante est bien partagée sur le système Windows.

Ensuite, dans l'interface web de CUPS, configurez l'imprimante comme décrit précédemment. Vous noterez que CUPS dispose d'un pilote appelé Windows Printer via SAMBA. Sélectionnez-le et utilisez la syntaxe smb://username:password@workgroup/server/printername ou smb://server/printername pour le champ d'adresse.

7.  Applications liées à l'impression

Introduction

Plusieurs outils sont disponibles pour vous aider à configurer une imprimante, utiliser des filtres supplémentaires, ajouter des fonctionnalités aux possibilités d'impression, etc. Le but de ce chapitre est d'en lister quelques-uns. La liste n'est pas complète et ne décrit pas en détail chaque outil.

Gtk-LP, un outil de configuration d'imprimante en Gtk

Avec Gtk-LP, vous pouvez installer, modifier et configurer votre imprimante à partir d'une application Gtk. Cette dernière utilise CUPS et gère également toutes les possibilités fournies par CUPS. C'est vraiment un outil à essayer si vous ne supportez pas l'interface web de CUPS ou si vous voulez une application indépendante à utiliser au jour le jour.

Pour l'installer, utiliser emerge :

Exemple de code 7.1 : Installer Gtk-LP

# emerge gtklp

8.  Résolution de problèmes

Erreur : Impossible de convertir le fichier en un format imprimable

Si vous n'arrivez pas à imprimer un document et que le fichier /var/log/cups/error_log contient cette erreur :

Exemple de code 8.1 : Fichier d'erreurs de CUPS

Unable to convert file 0 to printable format

Vous devez réinstaller ghostscript-esp avec l'option USE cups. Vous pouvez soit ajouter cups à vos options USE dans /etc/make.conf, soit l'ajouter uniquement pour ghostscript-esp comme ci-dessous :

Exemple de code 8.2 : Ajouter cups à ghostscript-esp

# echo "app-text/ghostscript-esp cups" >> /etc/portage/package.use

Puis relancez emerge ghostscript-esp. Lorsque c'est terminé, assurez-vous de relancer cupsd.

Exemple de code 8.3 : Redémarrer cupsd

# /etc/init.d/cupsd restart