Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > e05c4514608e650af9b28d9be1d35a18 > files > 1487

howto-html-it-10.1-4mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
 <TITLE>The Linux Printing HOWTO: Come configurare il tutto, fondamenti.</TITLE>
 <LINK HREF="Printing-HOWTO-6.html" REL=next>
 <LINK HREF="Printing-HOWTO-4.html" REL=previous>
 <LINK HREF="Printing-HOWTO.html#toc5" REL=contents>
</HEAD>
<BODY>
<A HREF="Printing-HOWTO-6.html">Avanti</A>
<A HREF="Printing-HOWTO-4.html">Indietro</A>
<A HREF="Printing-HOWTO.html#toc5">Indice</A>
<HR>
<H2><A NAME="s5">5.</A> <A HREF="Printing-HOWTO.html#toc5">Come configurare il tutto, fondamenti.</A></H2>

<H2><A NAME="ss5.1">5.1</A> <A HREF="Printing-HOWTO.html#toc5.1">La configurazione tradizionale di lpd</A>
</H2>

<P>La configurazione minima di lpd permette di ottenere un sistema in grado di
accodare i file in una coda di stampa ed inviarli alla stampante. In questo
caso non si pone alcuna attenzione al fatto che la stampante sia in grado di
interpretare i file, ed in generale non si potranno ottenere stampe di
qualita'. Comunque e' il primo passo per comprendere il funzionamento del
sistema di stampa, quindi continuate a  leggere.</P>

<P>Fondamentalmente, per aggiungere un a coda di stampa ad lpd, si deve aggiungere
un elemento in <EM>/etc/printcap</EM>, e creare una nuova directory di spooling in
<EM>/var/spool/lpd</EM>.</P>

<P>Un elemento in <EM>/etc/printcap</EM> e' qualcosa del genere:
<BLOCKQUOTE><CODE>
<PRE>
        # LOCAL djet500
          lp|dj|deskjet:\
                  :sd=/var/spool/lpd/dj:\
                  :mx#0:\
                  :lp=/dev/lp0:\
                  :sh:
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Questo definisce uno spool chiamato <EM>lp</EM>, <EM>dj</EM> o <EM>deskjet</EM>, il 
cui spooling viene eseguito nella  directory <EM>/var/spool/lpd/dj</EM>, 
senza nessun limite sulla dimensione massima dei file stampabili, che 
stampa sul dispositivo <EM>/dev/lp0</EM>, e che non usa una pagina di 
intestazione (con il nome di chi ha eseguito la stampa e altre informazioni).</P>

<P>Adesso leggetivi la man page di <EM>
<A HREF="http://www.picante.com/~gtaylor/pht/man/printcap.html">printcap</A></EM>.</P>

<P>Quello sopra e' un esempio molto semplice, ma se non si manda in stampa un file
che la Deskjet puo' capire si ottengono strani risultati. Stampando un  normale
file Unix si ottengono dei newline interpretati letteralmente, cioe' la seguente
cosa:
<BLOCKQUOTE><CODE>
<PRE>
        Questa e' la prima riga.
                                 Questa e' la seconda riga.
                                                           Questa e' la terza.
                                                         
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>e cosi' via. Mandando in stampa un file PostScript si ottiene una bella lista
di comandi PostScript con il solito effetto a gradinata, ma niente di piu'
utile.</P>

<P>Ovviamente e' necessario qualcosa in piu': e' necessario un filtro. I lettori
piu' attenti della man page del printcap avranno notato gli attributi <EM>if</EM> e
<EM>of</EM> dello spool. Bene, <EM>if</EM>, cioe' il filtro di input e' quello che serve
in questo caso.</P>

<P>Se scriviamo un piccolo script chiamato <EM>filtro</EM>, che aggiunge il carriage-return
prima dei newline, l'effetto a gradinata puo' essere eliminato. A tal scopo
dobbiamo aggiungere una riga nell'elemento del printcap illustrato prima:
<BLOCKQUOTE><CODE>
<PRE>
     lp|dj|deskjet:\
               :sd=/var/spool/lpd/dj:\
               :mx#0:\
               :lp=/dev/lp0:\
               :if=/var/spool/lpd/dj/filter:\
               :sh:
</PRE>
</CODE></BLOCKQUOTE>
               
Un semplice filtro potrebbe essere:
<BLOCKQUOTE><CODE>
<PRE>
        #!perl
        while(&lt;STDIN>){chop $_; print "$_\r\n";};
 
</PRE>
</CODE></BLOCKQUOTE>
       </P>

<P>In questo modo otteniamo uno spool su cui possiamo stampare normali file di
testo Unix ed ottenere delle pagine leggibili. Ci sono ovviamente molti altri
modi di ottenere lo stesso risultato, ma questo e' uno dei piu' illustrativi.
Siete comunque invitati a provarne altri.</P>

<P>L'unico problema e' che stampare solo testo piano non e' esattamente il
massimo; certamente sarebbe meglio poter stampare anche PostScript o altre forme
di testo formattato e grafica. Naturalmente e' possibile farlo, ed e' semplice.
Il metodo da usare e' una semplice estensione di quello presentato sopra per
risolvere il problema della gradinata. Se scriviamo un filtro che puo'
accettare un qualsiasi file di input e trasformarlo in qualcosa di
comprensibile per una DeskJet, il gioco e' fatto.</P>

<P>Questo tipo di filtro viene detto un <EM>filtro magico</EM>. Non preoccupatevi di
scriverne uno da soli a meno che stampiate cose molto strane, ci sono molti
ottimi filtri a disposizione in rete.</P>

<H2><A NAME="ss5.2">5.2</A> <A HREF="Printing-HOWTO.html#toc5.2">Permessi sui file</A>
</H2>

<P>A grande richiesta includero' la lista dei permessi di accesso di alcuni file
interessanti. Ci sono modi migliori di ottenere lo stesso risultato, idealmente
usando solo eseguibili SGID e non rendendo tutto SUID root, ma questo e' il
modo in cui il tutto era configurato dopo l'installazione e funziona.
Sinceramente, se il vostro rivenditore non e' in grado di fornirvi un lpd che
funziona, aspettatevi grossi problemi.
<BLOCKQUOTE><CODE>
<PRE>
       -r-sr-sr-x   1 root     lp    /usr/bin/lpr*
       -r-sr-sr-x   1 root     lp    /usr/bin/lprm*
       -rwxr--r--   1 root     root  /usr/sbin/lpd*
       -r-xr-sr-x   1 root     lp    /usr/sbin/lpc*
       drwxrwxr-x   4 root     lp    /var/spool/lpd/
       drwxr-xr-x   2 root     lp    /var/spool/lpd/lp/
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Lpd deve essere eseguito da root, in modo che possa connettersi alle porte
riservate di lp. Dovrebbe probabilmente diventare UID lp.lp o qualcosa del
genere dopo la connessione, ma non credo che lo faccia. </P>

<HR>
<A HREF="Printing-HOWTO-6.html">Avanti</A>
<A HREF="Printing-HOWTO-4.html">Indietro</A>
<A HREF="Printing-HOWTO.html#toc5">Indice</A>
</BODY>
</HTML>