<!--
     The FreeBSD Italian Documentation Project
-->

<chapter id="printing">
  <title>Stampare con FreeBSD</title>

  <sect1 id="printing-CUPS">
    <title>CUPS</title>

    <para>L'acronimo di CUPS &egrave; Common UNIX Printing System (<ulink
      url="http://www.cups.org/">http://www.cups.org/</ulink>), si tratta di
      un software che &egrave; stato interamente studiato per gli standard
      &unix;, &egrave; una applicazione ispirata ad un modello di sviluppo
      cross-platform.</para>

    <para>CUPS fornisce un layer di stampa per tutti i sistemi operativi basati
      sullo standard &unix;, viene sviluppato dalla Easy Software Products
      (<ulink url="http://www.easysw.com/">http://www.easysw.com/</ulink>),
      lo scopo perseguito da CUPS &egrave; quello di promuovere uno standard
      per le soluzioni di stampa per tutti i sistemi &unix;, CUPS fornisce la
      linea di comando standard per i sistemi System V ed i sistemi Berkeley
      (BSD).  CUPS utilizza l'Internet Printing Protocol, meglio conosciuto
      come l'<emphasis>IPP</emphasis> che fornisce un servizio di stampa del
      tipo <emphasis>Postscript</emphasis> per moltissime stampanti attualmente
      in commercio.</para>

    <para>I protocolli Printer Daemon (<emphasis>LPD</emphasis>), Server
      Message Block (<emphasis>SMB</emphasis>) e AppSocket, conosciuto dal
      grande pubblico come protocollo JetDirect, sono supportati con
      funzionalit&agrave; ridotte.  CUPS fornisce il browsing delle stampanti
      via network e il PostScript Printer Description (<emphasis>PPD</emphasis>)
      per supportare il maggior numero di stampanti sotto i sistemi operativi
      tipo &unix;.</para>

    <para>CUPS fornisce un file di immagine <emphasis>RIP</emphasis> che
      supporta la stampa di file immagine su stampanti che non aderiscono allo
      standard <emphasis>Postscript</emphasis>.  Una versione customizzata di
      GNU Ghostscript per CUPS prende il nome di
      <emphasis>ESP Ghostscript</emphasis> ed &egrave; disponibile
      separatamente grazie ad un framework che supporta CUPS.  CUPS include dei
      semplici drivers per le stampanti Dymo, EPSON, HP ed OKIDATA, e viene
      fornito sotto la licenza GNU GPL.</para>
  </sect1>

  <sect1 id="printing-CPU-install">
    <title>Installare CUPS</title>

    <para>La procedura di installazione &egrave; piuttosto semplice, CUPS
      viene portato sulla piattaforma &os; e reso disponibile agli utenti
      grazie al port che attualmente viene mantenuto da AlanE.  Ora procediamo
      con l'installazione</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/print/cups</userinput></screen>

    <screen>&prompt.root; <userinput>make install clean</userinput></screen>

    <para>La directory <filename>/usr/ports/print/cups</filename> contiene
      il metaport di CUPS che provvede a risolvere automaticamente le
      dipendenze compilando ed installando tutti i pacchetti necessari al
      nostro sistema come <application>ghostscript</application>,
      <application>espgs</application> ed altri.  Il metaport compila ed
      installa i seguenti pacchetti</para>

    <itemizedlist>
      <listitem>
        <para><application>cups</application> (metaport)</para>
      </listitem>

      <listitem>
        <para><application>cups-base</application> (headers, librerie,
          demoni)</para>
      </listitem>

      <listitem>
        <para><application>cups-lpr</application> (framework per la
          compatibilit&agrave; con i sistemi BSD e i sistemi System V)</para>
      </listitem>

      <listitem>
        <para><application>cups-pstoraster</application> (interprete
          postscript per le stampanti non ps per CUPS)</para>
      </listitem>
    </itemizedlist>

    <para>dopo aver compilato ed installato CUPS potremmo finalmente procedere
      con la configurazione del demone <application>cupsd</application>.</para>
  </sect1>

  <sect1 id="printing-CPU-config">
    <title>Configurare il demone <application>cupsd</application></title>

    <para>La procedura di compilazione e di installazione di CUPS provvede
      ad installare il demone <application>cupsd</application>,
      l'eseguibile viene installato in</para>

    <screen>&prompt.root; <userinput>which cupsd</userinput>
/usr/local/sbin/cupsd</screen>

    <para>il demone <application>cupsd</application> pu&ograve; essere
      eseguito avviando l'eseguibile <filename>/usr/local/sbin/cupsd</filename>,
      con il processo di installazione vengono anche installati i file
      principali di configurazione del servizio</para>

    <screen>&prompt.root; <userinput>ls /usr/local/etc/cups/</userinput>
total 92
drwxr-xr-x 5 root daemon 512 Aug 16 11:41 ./
drwxr-xr-x 12 root wheel 1024 Aug 13 10:47 ../
drwx--x--x 2 root daemon 512 Dec 7 2003 certs/
-r--r--r-- 1 root daemon 2423 Dec 7 2003 classes.conf
-r--r--r-- 1 root daemon 2423 Dec 7 2003 classes.conf.N
-r--r--r-- 1 root daemon 2333 Dec 7 2003 client.conf
-r--r--r-- 1 root daemon 2333 Dec 7 2003 client.conf.N
-r--r--r-- 1 root daemon 21319 Dec 7 2003 cupsd.conf
-r--r--r-- 1 root daemon 21319 Dec 7 2003 cupsd.conf.N
drwxr-xr-x 2 root daemon 512 Dec 7 2003 interfaces/
-r--r--r-- 1 root daemon 4587 Dec 7 2003 mime.convs
-r--r--r-- 1 root daemon 5877 Dec 7 2003 mime.types
drwxr-xr-x 2 root daemon 512 Dec 7 2003 ppd/
-r--r--r-- 1 root daemon 2744 Dec 7 2003 printers.conf
-r--r--r-- 1 root daemon 2744 Dec 7 2003 printers.conf.N
-r--r--r-- 1 root daemon 947 Aug 16 11:41 pstoraster.convs</screen>

    <para>viene inoltre installato uno script di esempio che consentir&agrave;
      di avviare il demone <application>cupsd</application> con il boot del
      sistema operativo, il file in questione &egrave;
      <filename>/usr/local/etc/rc.d/cups.sh.sample</filename>.</para>

    <sect2>
      <title>Il file <filename>/usr/local/etc/cups/cupsd.conf</filename></title>

      <para>Per eseguire correttamente il demone
        <application>cupsd</application> &egrave; necessario editare il
        relativo file di configurazione
        <filename>/usr/local/etc/cups/cupsd.conf</filename>.  Il file di
        configurazione si compone di diverse sezioni, in particolare vanno
        editate le seguenti righe</para>

      <programlisting>ServerName nomehost.nomedominio.net
ServerAdmin root@nomehost.nomedominio.net
AccessLog /var/log/cups/access_log
#
DataDir /usr/local/share/cups
DefaultCharset utf-8
DocumentRoot /usr/local/share/doc/cups
ErrorLog /var/log/cups/error_log
FontPath /usr/local/share/cups/fonts
Printcap /etc/printcap
PrintcapFormat BSD
ServerBin /usr/local/libexec/cups
ServerRoot /usr/local/etc/cups
User root
Group daemon
TempDir /var/spool/cups/tmp
Port 631
#
Browsing On
BrowseProtocols cups
BrowseOrder Deny,Allow
BrowseAllow from @LOCAL
#
SystemGroup daemon
#
&lt;Location /&gt;
Order Deny,Allow
Deny From All
Allow From 192.168.0.0/255.255.255.0 127.0.0.1
&lt;/Location&gt;
#
&lt;Location /admin&gt;
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.0.0/255.255.255.0 127.0.0.1
&lt;/Location&gt;</programlisting>

      <para>dopo aver editato il file di configurazione rendiamo operativo lo
        script di avviamento del demone <application>cupsd</application></para>

      <screen>&prompt.root; <userinput>cp /usr/local/etc/rc.d/cups.sh.sample /usr/local/etc/rc.d/cups.sh</userinput></screen>

      <para>in questo modo lo script verr&agrave; eseguito automaticamente con il
        processo di boot del sistema operativo.</para>
    </sect2>

    <sect2>
      <title>Nascondere i comandi &man.lp.1; del sistema &os;</title>

      <para>Per funzionare correttamente CUPS utilizza il suo sottosistema di
        comandi &man.lp.1;, questo sottosistema viene installato nella
        directory <filename>/usr/local/bin</filename>.  &os; utilizza i comandi
        &man.lp.1; che vengono installati durante il
        <emphasis>make buildworld</emphasis>, tali comandi vengono posizionati
        in <filename>/usr/bin</filename>.  I comandi &man.lp.1; di &os;
        andranno in conflitto con il set di comandi &man.lp.1; fornito con
        CUPS, infatti il path impostato come default cercher&agrave; di
        caricare il set di comandi &man.lp.1; forniti come default con &os;.
        Per consentire al sistema di utilizzare CUPS con le stampe locali
        dovremmo fare in modo di utilizzare il set di comandi &man.lp.1;
        fornito con CUPS</para>

      <programlisting># more cups.lpd-modify.sh
#! /usr/local/bin/bash
#
mv /usr/bin/lp /usr/bin/lp.bak
mv /usr/bin/lpr /usr/bin/lpr.bak
mv /usr/bin/lprm /usr/bin/lprm.bak
mv /usr/bin/lpq /usr/bin/lpq.bak</programlisting>

      <para>questo script potr&agrave; essere utilizzato anche in seguito per
        rinominare il set di comandi &man.lp.1; standard di &os;, lo script
        dovr&agrave; essere eseguito ogni volta che si procede con il
        <emphasis>make buildworld</emphasis>.</para>
    </sect2>
  </sect1>

  <sect1 id="printing-CUPS-printer">
    <title>Installiamo una stampante con CUPS</title>

    <para>Prima di procedere con la configurazione di una o pi&ugrave;
      stampanti dovremmo avviare il demone
      <application>cupsd</application></para>

    <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/cups.sh start</userinput>
cups: started scheduler.</screen>

    <para>Verifichiamo il corretto avviamento di
      <application>cupsd</application></para>

    <screen>&prompt.root; <userinput>sockstat -4 | grep 'cupsd'</userinput>
root cupsd 57434 0 tcp4 *:631 *:*
root cupsd 57434 2 udp4 *:631 *:*</screen>

    <para>il demone <application>cupsd</application> &egrave; in ascolto sulla
      porta <emphasis>tcp</emphasis>/<emphasis>udp</emphasis> 631.</para>

    <para>CUPS fornisce due metodi per configurare una stampante, un
      programma a linea di comando denominato lpadmin ed una comoda
      interfaccia Web.</para>

    <para>Il comando lpadmin consente di eseguire diversi compiti di
      amministrazione utilizzando la linea di comando, nei sistemi &os; il
      programma viene installato dal ports in
      <filename>/usr/local/sbin/</filename>.</para>

    <para>L'interfaccia Web pu&ograve; essere avviata utilizzando un browser
      web puntando alla URL <literal>http://localhost:631/admin</literal>

    <para>Il vostro browser deve poter raggiungere direttamente la porta 631
      dell'host locale, non devono sussistere eventuali proxy server tra voi
      e l'interfaccia Web di CUPS.</para>

    <para>Da questa location &egrave; quindi possibile accedere alla
      configurazione della stampante, il processo &egrave; semplice ed
      intuitivo, nel nostro caso procederemo con la configurazione di una
      stampante collegata ad una interfaccia di rete JetDirect.</para>

    <para>Se vogliamo visualizzare le stampanti appena installate dovremmo
      puntare alla URL <literal>http://localhost:631/printers</literal>

    <para>ecco la descrizione della nostra stampante cos&igrave; come viene
      visualizzata dall'interfaccia Web di CUPS</para>

    <programlisting>Description: Stampante hp DeskJet 5550
Location: DeskJet 5550
Printer State: processing, accepting jobs.
"Printing page 1, 28% complete..."
Device URI: socket://192.168.0.6:9100/</programlisting>

    <para>come abbiamo detto la configurazione della stampante pu&ograve;
      avvenire anche tramite linea di comando, eseguendo il comando
      lpadmin con opzione -p potremmo aggiungere una stampante a
      CUPS.</para>

    <para>Per una stampante HP DeskJet connessa alla porta parallela &egrave;
      necessario digitare il seguente comando</para>

    <screen>&prompt.root; <userinput>lpadmin -p DeskJet -E -v parallel:/dev/lp1 -m deskjet.ppd</userinput></screen>

    <para>in maniera molto simile possiamo aggiungere una stampante HP
      LaserJet che per&ograve; utilizza una interfaccia del tipo HP JetDirect
      che risponde all'indirizzo IP 192.168.0.6</para>

    <screen>&prompt.root; <userinput>lpadmin -p LaserJet -E -v socket://192.168.0.6 -m laserjet.ppd</userinput></screen>

    <para>come potete vedere, <filename>deskjet.ppd</filename> e
      <filename>laserjet.ppd</filename> sono i files PPD che contengono i
      driver per le stampanti HP DeskJet ed HP LaserJet per CUPS.  Potrete
      trovare una lista completa di files PPD e l'elenco delle stampanti
      in grado di funzionare con CUPS direttamente alla URL: <ulink
        url="http://www.cups.org/sam.html#PRINTER_DRIVERS">http://www.cups.org/sam.html#PRINTER_DRIVERS</ulink>.</para>
  </sect1>

  <sect1 id="printing-foomatic">
    <title>FooMatic</title>

    <para><application>FooMatic</application> &egrave; un database di driver
      per le stampanti reso disponibile da
      <emphasis>Linuxprinting.org</emphasis> (<ulink
        url="http://www.linuxprinting.org/">http://www.linuxprinting.org/</ulink>).
      <application>FooMatic</application> &egrave; un sistema basato sullo
      standard XML ed integra i driver a software libero compatibili con i
      pi&ugrave; comuni sistemi di stampa realizzati per i sistemi operativi
      compatibili con lo &unix; (CUPS, LPRng, LPD, GNUlpr, PPR, PDQ, CPS,
      etc.).</para>

    <para><application>FooMatic</application> genera dei files PPD compatibili
      con lo standard Adobe, insieme allo script filtro foomatic-rip che
      consente la semplice configurazione delle code di stampa con l'accesso
      completo alle opzioni offerte dai driver.</para>
      
    <para><application>FooMatic</application> viene fornito con le maggiori
      distribuzioni Linux ed il suo sito web (<ulink
        url="http://www.linuxprinting.org/foomatic.html">http://www.linuxprinting.org/foomatic.html</ulink>)
      viene utilizzato come punto di riferimento dei vari vendors.  Si tratta
      di un archivio indipendente di drivers per stampanti, scripts e
      programmi di utilit&agrave; che vengono forniti agli utenti corredati di
      documentazione, knowledge, soluzioni, dritte e trucchi.</para>

    <para>Nell'albero dei ports di &os; possiamo trovare l'intero
      database</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/print/foomatic-db</userinput></screen>

    <screen>&prompt.root; <userinput>make install clean</userinput></screen>

    <para>la configurazione, la compilazione e l'installazione del database dei
      drivers per le stampanti procede risolvendo alcune dipendenze e prepara
      CUPS per integrare i drivers forniti dal progetto FooMatic.</para>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "book" "chapter")
     End:
-->
