  CVS-RCS-HOWTO Document for Linux (Source Code Control
  System)
  Al Dev (Alavoor Vasudevan)        alavoor[AT]yahoo.com
  v22.6, 22-06-2002

  Questo documento  una "guida pratica" per una rapidissima instal
  lazione di CVS/RCS, il sistema di controllo del codice sorgente.
  Questo documento contiene degli script di shell che forniscono
  un'interfaccia di facile uso per CVS.  Vengono forniti diversi script
  per facilitare l'uso di RCS.  Le informazioni contenute in questo doc
  umento si riferiscono sia a Linux che a tutti gli altri sistemi Unix-
  like come  Solaris, HPUX, AIX, SCO, Sinix, BSD, SCO, Apple Macintosh
  (che  uno unix BSD) ecc.. e BeOS. Traduzione di Simone Pascarosa
  (spasca(at)libero.it), revisione a cura di Fabio Teatini
  (teafab(at)pluto.linux.it).
  ______________________________________________________________________

  Indice Generale



  1. Introduzione
  2. Quale fa per me? CVS o RCS
  3. Configurare CVS
     3.1 Variabili d'ambiente
     3.2 Installare CVS sulle macchine Client
     3.3 Migrare da RCS a CVS

  4. Introduzione ai comandi CVS
     4.1 checkout
     4.2 Come rimanere sincronizzati con gli altri programmatori - 'cvs update'
     4.3 add
     4.4 remove
     4.5 commit
     4.6 diff
     4.7 Creare release
     4.8 L'editor Emacs

  5. Bloccaggio Forte (Strong), Debole (Weak) o Nessun Bloccaggio (No Locking)
  6. Script di shell
  7. Documentazione di CVS
     7.1 Documentazione in linea
     7.2 Documentazione dell'organizzazione CVS
     7.3 Formazione su CVS

  8. Interfacce grafiche
  9. CVS per MS Windows 95/98/NT/2000/XP
     9.1 Metodo n 1: Usare VNC, Samba
     9.2 Metodo n 2: Utilizzo di Cygwin
     9.3 Eseguibile CVS per Windows 95/NT/2000/XP
     9.4 Programmi FTP per Windows 95/NT/2000/XP
     9.5 Visual Cafe(Java), JBuilder, MS Visual C++, file HTML
     9.6 Strumenti d'amministrazione di Samba

  10. Sicurezza del Repository CVS
  11. Repository CVS remoto in multiutenza
     11.1 Autenticazione SSH

  12. Script di shell Per RCS
  13. Miglioramento delle prestazioni di un server CVS
  14. Sistema di Rilevazione dei Problemi, PRS
  15. Strumenti di configuration management
  16. Siti di riferimento
  17. SCCS a confronto con CVS-RCS
  18. Altri formati del documento
     18.1 Formato PDF Acrobat
     18.2 Convertire da formato Linuxdoc a Docbook
     18.3 Convertire in formato WinHelp di MS
     18.4 Leggere i vari formati

  19. Script della Shell per CVS
  20. Copyright e Licenza


  ______________________________________________________________________

  11..  IInnttrroodduuzziioonnee

  ((LL''uullttiimmaa vveerrssiioonnee ddeell ddooccuummeennttoo oorriiggiinnaallee ssii ttrroovvaa ssuu
  <<http://www.milkywaygalaxy.freeservers.com>.  Andare l per le ultime
  modifiche).  L'ultima versione di questa traduzione, invece, si trova
  su <http://ildp.pluto.linux.it/HOWTO>.

  Per gestire le modifiche da apportate ad un progetto software durante
  il suo sviluppo, si rende NECESSARIO un sistema di controllo del
  codice sorgente.  Nel caso in cui si verifichino dei problemi, gli
  sviluppatori hanno bisogno di un registro storico completo delle
  modifiche per risalire alle precedenti versioni.  Poich il codice
  sorgente  il componente fondamentale di ogni progetto software e il
  suo sviluppo richiede tempo e denaro,  molto importante spendere un
  po' di tempo per pprrootteeggggeerrlloo utilizzando sistemi di controllo del
  codice come CVS e RCS.

  CVS (Concurrent Version Control System, Sistema di controllo
  simultaneo della versione)  un potente strumento che permette lo
  sviluppo simultaneo di software da parte di pi utenti.  Usa RCS come
  base e ha un'interfaccia a livello di applicazione come involucro di
  RCS.

  CVS pu registrare le variazioni dei vostri file (solitamente, ma non
  sempre, codice sorgente), memorizzando solo le differenze tra le
  versioni, invece di ogni versione per tutti i file creati.  Tra gli
  altri aspetti, viene tenuta traccia di "chi", "quando" e "perch" di
  una variazione.

  CVS  utilissimo per gestire le versioni da distribuire e controllare
  le modifiche simultanee dei sorgenti da parte di pi programmatori.
  Invece di fornire il controllo della versione per un insieme di file
  situati in un'unica directory, CVS consente il controllo sui file
  distribuiti in un insieme gerarchico di directory.

  Queste directory e file possono poi essere combinati per formare una
  distribuzione del programma.

  CVS pu essere utilizzato per memorizzare file di codice "C", "C++",
  Java, Perl, HTML ed altri.


  SSTTOORRIIAA DDEELL CCVVSS:: CVS  un sistema completo ed altamente sofisticato. 
  la tecnologia allo ""SSttaattoo ddeellll''AArrttee"" ed  definito _"_m_i_r_a_c_o_l_o _d_e_l
  _s_o_f_t_w_a_r_e_". Il software CVS  un sistema molto avanzato sviluppato in
  un lunghissimo arco di tempo.  Ci sono voluti molti anni per farlo
  maturare!! Circa 20-30 anni di ricerca per sviluppare gli algoritmi di
  CVS; poi venne codificato in un software vero e proprio.  Ancora oggi
   in evoluzione!!

  Lo sviluppo degli algoritmi di CVS inizi nelle Universit decine di
  anni fa e l'implementazione di CVS cominci come una manciata di
  script della shell scritti da Dick Grune, che l'invi al newsgroup
  comp.sources.unix nel ddiicceemmbbrree 11998866.  Anche se la versione odierna di
  CVS non contiene codice tratto da quegli script, molti algoritmi per
  la risoluzione dei conflitti di versione vengono da l.  Nell'Aprile
  del 1989 Brian Berliner progett e codific CVS. Successivamente, Jeff
  Polk aiut Brian nella progettazione dei moduli di CVS e nel supporto
  ai rami di sviluppo.

  Ad oggi, quasi tutti i principali progetti del mondo per lo sviluppo
  di software sono scritti utilizzando CVS come deposito sicuro. Come
  dicono le grandi teste del buon vecchio software.  _"_S_e_i _i_n _b_u_o_n_e _m_a_n_i_,
  _s_e _u_s_i _C_V_S_!_!_!_"



  22..  QQuuaallee ffaa ppeerr mmee?? CCVVSS oo RRCCSS

  In realt, CVS utilizza uno strato sottostante di RCS. CVS  uno
  strumento molto potente e pu controllare un intero albero di
  sorgenti.   ffoorrtteemmeennttee raccomandato l'utilizzo di CVS, perch pu
  essere totalmente personalizzato con linguaggi di scripting come il
  PERL, o quelli delle shell Korn e bash.  Vedere gli script di shell
  d'esempio su ``''.


  Vantaggi di CVS:

    CVS  decentralizzato, cos che un utente estrae file e directory
     dal repository (deposito) e ha un suo personale albero dei sorgenti
     stabili.

    CVS pu marcare ("STAMP") le versioni dell'albero dei sorgenti di
     un intero progetto.

    CVS pu abilitare la modifica simultanea dei file.

    CVS pu essere ampiamente personalizzato per imporre il blocco
     (lock) dei file, attraverso script di shell o PERL.  CVS supporta
     anche un blocco pi debole con il comando 'cvs watches';  anche
     ammessa l'assenza totale di blocchi, permettendo la modifica
     simultanea dei file.

  Svantaggi di CVS:

    Ha bisogno di un'amministrazione pi assidua rispetto a RCS.

     un sistema completo ed altamente sofisticato.  la tecnologia
     allo "Stato dell'Arte". Il software CVS  un sistema molto
     avanzato, sviluppato in un lungo arco di tempo (ha impiegato molti
     anni per maturare!!). Ci sono voluti circa 20-30 anni di ricerca
     per sviluppare CVS, ed ancora oggi  in evoluzione!!

    Ha un gran numero di comandi ed opzioni, quindi la curva per il suo
     apprendimento  pi ripida per i principianti. Gli script della
     shell su ``'' possono facilitarne l'uso.

  Vantaggi di RCS:

    RCS  molto semplice da installare, con meno lavoro per
     l'amministratore.

    RCS utilizza un'area centralizzata dove tutti lavorano.

    RCS  utile soprattutto per sistemi semplici.

    Ha una gestione dei blocchi molto rigida - simultaneit non
     presente.

  Punti deboli di RCS:

    A causa del blocco dei file, lo sviluppo simultaneo da parte di
     diversi programmatori non  possibile. Poich, inoltre, lo sviluppo
      limitato ad una sola directory di lavoro, le modifiche ai file da
     parte di diversi programmatori possono causare errori col comando
     'make'.

    Non pu marcare le versioni di un intero progetto software.

  Questo documento contiene anche script di shell che mettono a
  disposizione semplici comandi per estrarre (check-out), inserire
  (check-in) e confermare le modifiche sui file (commit).  Per questo
  script, si veda la sezione ``''

  Per informazioni su RCS, si veda il mini-howto relativo nel proprio
  cdrom di Linux:



  ______________________________________________________________________
  cd /mnt/cdrom/Redhat/RPMS
  ls -l howto-6.0-*.noarch.rpm
  rpm -qpl howto-6* | grep -i rcs
  ______________________________________________________________________


  oppure si visiti  <http://www.LinuxDoc.org/HOWTO/mini/RCS.html>

  Si possono anche utilizzare gli script RCS presso la sezione ``''



  33..  CCoonnffiigguurraarree CCVVSS

  Per prima cosa bisogna installare il pacchetto CVS. Sul cd di Redhat
  Linux si fa cos:

  ______________________________________________________________________
  cd /mnt/cdrom/Redhat/RPMS
  rpm -i rcs*.rpm
  rpm -i cvs*.rpm
  rpm -i openssh*.rpm
  Per vedere la lista dei file installati si digiti:
  rpm -qpl cvs*.rpm | less
  ______________________________________________________________________


  e si scorra l'output utilizzando j,k, CTRL+f, CTRL+D, CTRL+B, CTRL+U o
  i tasti-freccia di movimento e i tasti di pagina s/gi .  Per questi
  comandi fare riferimento a 'man less'.

  Se insieme a CVS si vuole utilizzare ssh (Secure Shell),  necessario
  Openssh.

  Su altri sistemi di tipo Unix, si dovranno scaricare i file tar
  compressi di RCS e CVS, e seguire le istruzioni sui file README e
  INSTALL per installare CVS.  Visitare  <http://www.cyclic.com> e
  <http://www.loria.fr/~molli/cvs-index.html>



  33..11..  VVaarriiaabbiillii dd''aammbbiieennttee

  In /etc/profile sono contenuti i valori predefiniti necessari per
  tutti gli utenti; in questo file (o nel proprio file di profilo
  locale, /.bash_profile) vanno impostate le seguenti variabili
  d'ambiente:


  ______________________________________________________________________
  export EDITOR=/bin/vi
  export CVSROOT=/home/cvsroot

  # ATTENZIONE!! ATTENZIONE: Se si assegna a CVSREAD il valore yes, i comandi di checkout e
  # update proveranno forzatamente a rendere i file della propria directory di lavoro, come
  # file di sola lettura. Quando non  impostato, il comportamento predefinito  di permettere
  # la modifica dei file nella propria directory di lavoro.
  #export CVSREAD=yes
  ______________________________________________________________________


  Naturalmente, gli utenti potranno _e_l_u_d_e_r_e le variabili d'ambiente
  preimpostate in /etc/profile impostandole nel proprio file di profilo
   /.bash_profile

  ______________________________________________________________________
  # File ~/.bash_profile
  # Le variabili d'ambiente possono essere eluse, reimpostandole
  export EDITOR=/usr/bin/emacs
  export CVSROOT=/home/altradirectory/java/cvsroot
  ______________________________________________________________________



  Si crei una directory per memorizzare il repository dei sorgenti e si
  dia accesso in lettura e scrittura agli utenti e ai gruppi di Unix.
  Inoltre, bisogna assicurarsi che il nome della directory di CVSROOT,
  non contenga nessuno spazio bianco. Per esempio CVSROOT non potrebbe
  essere '/home/mia rootcvs'.



  ______________________________________________________________________
  bash$ su - root
  bash# export CVSROOT=/home/cvsroot
  bash# groupadd --help
  bash# groupadd cvs
  bash# useradd --help
  bash# useradd -g cvs -d $CVSROOT cvs
  bash# mkdir $CVSROOT

  bash# ls -ld $CVSROOT   ... (si dovrebbe vedere la lista)
  bash# chgrp -R cvs $CVSROOT
  bash# chmod o-rwx $CVSROOT
  bash# chmod ug+rwx $CVSROOT

  # Per inizializzare il repository di CVS e per inserirci i file sorgenti, si dia il comando
  # ( necessario che la variabile d'ambiente CVSROOT sia impostata):
  bash# cvs init

  # Come aggiungere gli utenti unix al gruppo cvs.
  # Si creino gruppi supplementari per gli utenti.
  # Si noti che dopo le virgole che separano i nomi dei gruppi nell'opzione -G,
  # NON bisogna mettere alcuno spazio bianco.
  # Nell'esempio seguente, l'utente tom appartiene ai gruppi cvs, users e staff;
  # l'utente johnson appartiene solo al gruppo cvs.
  bash# usermod --help
  bash# usermod -G cvs nome_utente_unix
  bash# usermod -G cvs,users,staff tom
  bash# usermod -G cvs,users,staroffice billclinton
  bash# usermod -G cvs johnson
  bash# exit    .... (esce dalla modalit super-utente o root)

  # Come importare file nel cvs, facendo login come un qualsiasi utente...
  bash$ su - billclinton
  bash$ export EDITOR=/bin/vi
  bash$ export CVSROOT=/home/cvsroot

  # ATTENZIONE! ATTENZIONE: Se si assegna a CVSREAD il valore yes, i comandi checkout e update
  # proveranno forzatamente a rendere i file, situati nella propria directory di lavoro, di sola
  # lettura. Quando non  impostato, il comportamento predefinito  di permettere le modifiche
  # ai file su cui si lavora.
  bash$ export CVSREAD=yes

  #  necessario cambiare directory (OBBLIGATORIO)
  bash$ cd $HOME/una_directory/altra_directory/directory/directory_con_i_miei_sorgenti

  # Bisogna fornire l'etichetta o tag del vendor e quella della revisione
  cvs import una_directory/altra_directory/directory/directory_con_i_miei_sorgenti vendor_1_0 rev_1_0

  # Inoltre, Si noti che  molto importante dare l'albero delle directory partendo
  # dalla $HOME; nell'esempio qui sopra, l'albero comincia da una_directory.
  # Per esempio, sul mio sistema:
  bash$ cd $HOME/howto/foobar
  bash$ cvs import howto/foobar vendor_1_0 rev_1_0

  # Un altro esempio:
  bash$ cd $HOME/dirFileJava
  bash$ cvs import dirFileJava vendor_1_0 rev_1_0

  # Un semplice test e verifica:
  bash$ cd $HOME/howto/foobar
  bash$ cvs checkout myfoo.java
  ______________________________________________________________________



  RRIISSOOLLUUZZIIOONNEE DDEEII PPRROOBBLLEEMMII:: Quando si fa un'estrazione locale con il
  comando checkout, il programma dice che il modulo  sconosciuto.  un
  problema comune che accade quando, nel fare l'importazione con cvs
  import, non ci si sposta nella directory corretta.  _B_I_S_O_G_N_A _c_a_m_b_i_a_r_e
  _d_i_r_e_c_t_o_r_y per spostarsi nella directory del codice sorgente e
  successivamente dare cvs import. Per esempio:

  ______________________________________________________________________
  bash$ cd $HOME/unadirectory/foobardir
  bash$ cvs import unadirectory/foobardir vendor_1_0 rev_1_0
  ______________________________________________________________________



  33..22..  IInnssttaallllaarree CCVVSS ssuullllee mmaacccchhiinnee CClliieenntt

  Sulle macchine client, da dove si vuole accedere a un server CVS
  remoto, bisogna installare i pacchetti cvs e ssh (se si vuole
  utilizzare ssh).  Impostare le variabili d'ambiente:

  ______________________________________________________________________
  bash$ export CVSROOT=":ext:utente_sviluppatore@cvs_server.dominio.com:/home/cvsroot"
  bash$ export CVS_RSH="ssh"
  ______________________________________________________________________


  cvs_server.dominio.com  l'indirizzo IP del repository CVS remoto;
  'utente_sviluppatore'  il nome dell'utente.  Un altro esempio, che
  illustra l'utilizzo di un pserver  questo:

  ______________________________________________________________________
  bash$ export CVSROOT=:pserver:nome_utente@cvs.tldp.org:/cvsroot
  bash$ export CVS_RSH="ssh"
  ______________________________________________________________________


  L'accesso remoto ad un server CVS  trattato pi approfonditamente in
  ``''.



  33..33..  MMiiggrraarree ddaa RRCCSS aa CCVVSS

  Per migrare dai file RCS gi esistenti a CVS, bisogna utilizzare lo
  script da ``'' . Assicurarsi che sul proprio sistema sia stato
  installato il pacchetto della Korn shell, pdksh*.rpm.

  NNOOTTAA :: _S_i _p_u_ _o_t_t_e_n_e_r_e _l_a _s_h_e_l_l _K_o_r_n _/_b_i_n_/_k_s_h _i_n_s_t_a_l_l_a_n_d_o _p_d_k_s_h_*_._r_p_m
  _d_a_l _c_d_r_o_m _c_o_n_t_r_i_b _d_i _L_i_n_u_x

  Quando l'RCS sar migrato a CVS come 'project', si potranno utilizzare
  i comandi CVS sul modulo 'project'.


  44..  IInnttrroodduuzziioonnee aaii ccoommaannddii CCVVSS

  CVS fornisce una ricca variet di comandi (i cvs_command della sezione
  SINTASSI nella pagina di manuale), quasi tutti muniti di una vasta
  gamma d'opzioni per soddisfare tutte le necessit di gestione dei
  sorgenti in ambienti distribuiti. Comunque, per fare un buon lavoro
  con CVS non bisogna imparare dettagliatamente tutti i comandi:
  infatti, cinque comandi sono sufficienti per utilizzare e contribuire
  al repository dei sorgenti.  I comandi CVS pi utilizzati sono:
  cchheecckkoouutt, uuppddaattee, aadddd, rreemmoovvee, ccoommmmiitt e ddiiffff.



  44..11..  cchheecckkoouutt

  ccvvss cchheecckkoouutt mmoodduullii......  Per la maggior parte degli utilizzi di CVS va
  effettuata un'operazione preliminare: crearsi una propria copia dei
  moduli sorgenti (pi propriamente si tratta di un'istanza dei
  sorgenti; qui si pu anche usare un percorso relativo al repository
  dei sorgenti). Si pu lavorare con questa copia senza interferire con
  il lavoro altrui. Viene sempre creato almeno un livello di
  sottodirectory.

  ______________________________________________________________________
  bash$ cvs --help checkout
  Utilizzo:
    cvs checkout [-ANPRcflnps] [-r rev | -D data] [-d dir]
      [-j rev1] [-j rev2] [-k opz_k] moduli...
          -A       Azzera tag/date/opzioni k eventualmente rimasti attivi (sticky)
          -N       Non accorcia i percorsi dei moduli se -d  specificato.
          -P       Elimina le directory vuote.
          -R       Estrae le directory ricorsivamente.
          -c       Invia il database dei moduli allo standard output.
          -f       Forza l'estrazione della revisione pi recente se non trova tag/data corrispondenti.
          -l       Estrae solo la directory locale, senza ricorsione.
          -n       Non avvia nessun eventuale programma di elaborazione dei moduli.
          -p       Estrae i file verso lo standard output (elude i parametri sticky).
          -s       Come -c, ma include lo stato dei moduli.
          -r rev   Estrae la revisione o il tag (che diventa parametro attivo o sticky).
                   Implica l'uso di -P.
          -D data  Estrae le revisione relativa alla data (che diventa parametro attivo o sticky).
                   Implica l'uso di -P.
          -d dir   Estrae nella directory dir invece che in quella chiamata col nome del modulo.
          -k opz_k Per il checkout utilizza l'opzione -k specifica di RCS.
          -j rev   Unisce le modifiche fatte tra la revisione corrente e la rev indicata.
  (per una lista completa di altre opzioni di help, specificare l'opzione globale --help)

  # NdT: si noti che in realt l'help di cvs  in lingua inglese.
  ______________________________________________________________________



  44..22..  CCoommee rriimmaanneerree ssiinnccrroonniizzzzaattii ccoonn ggllii aallttrrii pprrooggrraammmmaattoorrii -- ''ccvvss
  uuppddaattee''

  ccvvss uuppddaattee quando si desidera aggiornare le proprie copie dei file
  sorgente con le modifiche che altri programmatori hanno fatto al
  sorgente nel deposito (repository), si esegua questo comando
  dall'interno della propria directory dei sorgenti



  ______________________________________________________________________
  bash$ cvs --help update
  Utilizzo: cvs update [-APdflRp] [-k kopt] [-r rev|-D date] [-j rev]
      [-I ign] [-W spec] [file...]
          -A       Azzera tag/date/opzioni k eventualmente rimasti attivi (sticky)
          -P       Elimina le directory vuote.
          -d       Crea le directory, come fa checkout.
          -f       Forza l'aggiornamento della revisione pi recente se non trova tag/data corrispondenti.
          -l       Aggiorna solo la directory locale, senza ricorsione.
          -R       Aggiorna le directory ricorsivamente.
          -p       Invia l'aggiornamento verso lo standard output (elude i parametri sticky).
          -k opz_k Per il checkout utilizza l'opzione -k specifica di RCS.
          -r rev   Aggiorna la revisione o il tag (che diventa parametro attivo o sticky).
          -D date  Imposta la data dalla quale aggiornare (che diventa parametro attivo o sticky).
          -j rev   Unisce le modifiche fatte tra la versione corrente e la rev.
          -I ign   Altri file da ignorare (usare ! per eliminare le impostazioni attuali).
          -W spec  Specifica dei programmi (wrapper) da lanciare prima di aggiornare i file.
  (per una lista completa di altre opzioni di help, specificare l'opzione globale --help)

  Per ricevere le ultime modifiche fatte dai colleghi programmatori:
  bash$ cvs update

  Se un'altro programmatore ha apportato dei grossi cambiamenti, come l'aggiunta di nuove
  directory ecc...:
  bash$ cvs update -d
  ______________________________________________________________________



  44..33..  aadddd

  ccvvss aadddd ffiillee......  Usare questo comando per registrare nuovi file nei
  record CVS della propria directory di lavoro.  I file verranno
  aggiunti al repository la prossima volta in cui si avvier il comando
  `cvs commit'.  Nota: Per inserire nuovi sorgenti nel deposito dei
  sorgenti, si deve utilizzare il comando `cvs import'.  `cvs add' va
  utilizzato solo per file nuovi da inserire in un modulo gi esistente
  e di cui sia gi stata effettuata l'operazione di check-out.



  ______________________________________________________________________
  bash$ cvs --help add
  Utilizzo: cvs add [-k flagk-di-rcs] [-m messaggio] file...
          -k      Usa "flagk-di-rcs" per aggiungere il file con il kflag specificato.
          -m      Usa "messaggio" per il log di creazione.
  (per una lista completa di altre opzioni di help, specificare l'opzione globale --help)

  Per aggiungere un nuovo file al repository:
  bash$ cvs add nuovoFile
  bash$ cvs commit

  Per aggiungere un nuovo file binario al repository:
  bash$ cvs add -kb nuovoFileBinario
  bash$ cvs commit
  (-kb specifica che il file  binario)

  Per aggiungere una nuova directory al repository:
  bash$ cvs add nuovaCartella
  bash$ cvs commit

  Per eliminare un file esistente dal repository:
  bash$ rm fileEsistente
  bash$ cvs remove fileEsistente
  bash$ cvs commit
  ______________________________________________________________________



  44..44..  rreemmoovvee

  ccvvss rreemmoovvee ffiillee......  Per dichiarare l'intento di eliminare file dal
  repository, va usato questo comando (dopo aver cancellato tutti i file
  nelle directory locali).  L'eliminazione non avr un reale effetto sui
  file contenuti nel repository finch non si dar il comando `cvs
  commit'.

  ______________________________________________________________________
  bash$ cvs --help remove
  Utilizzo: cvs remove [-flR] [file...]
          -f      Cancella il file prima di rimuoverlo.
          -l      Elabora solo questa directory (non ricorsivo).
          -R      Elabora le directory ricorsivamente.
  (per una lista completa di altre opzioni di help, specificare l'opzione globale --help)
  ______________________________________________________________________



  44..55..  ccoommmmiitt

  ccvvss ccoommmmiitt ffiillee......  Serve a confermare le modifiche effettuate sui
  file esistenti.  Usare questo comando se si desidera ``pubblicare'' le
  proprie modifiche per gli altri programmatori, incorporandole nel
  repository dei sorgenti.

  NNOOTTAA ::   buona abitudine eseguire un 'cvs update' prima di confermare
  le modifiche con commit.



  ______________________________________________________________________
  bash$ cvs --help commit
  Utilizzo: cvs commit [-nRlf] [-m msg | -F file_log] [-r rev] file...
          -n       Non avvia nessun eventuale programma di elaborazione dei moduli.
          -R       Elabora le directory ricorsivamente.
          -l       Solo per directory locali, non ricorsivo.
          -f       Forza la conferma delle modifiche; disabilita la ricorsione.
          -F file  Legge il messaggio di log dal file.
          -m msg   Messaggio di log.
          -r rev   Conferma in questa versione o alla revisione principale.
  (per una lista completa di altre opzioni di help, specificare l'opzione globale --help)
  ______________________________________________________________________



  44..66..  ddiiffff

  ccvvss ddiiffff ffiillee......  Mostra le differenze tra i file della directory di
  lavoro e quelli nel repository dei sorgenti, o tra due versioni nel
  repository (Non modifica n le directory del repository, n le
  directory di lavoro).

  ______________________________________________________________________
  bash$ cvs --help diff
  Utilizzo: cvs diff [-lNR] [opzioni-di-rcsdiff]
      [[-r rev1 | -D data1] [-r rev2 | -D data2]] [file...]
          -l      Solo directory locali, non ricorsivo.
          -R      Analizza le directory ricorsivamente.
          -D d1   Mostra le differenze tra revisione alla data d1 e il file di lavoro.
          -D d2   Mostra le differenze tra rev1/data1 e data2.
          -N      Include le differenze dovute a file eliminati o aggiunti.
          -r rev1 Mostra le differenze tra rev1 e file di lavoro.
          -r rev2 Mostra le differenze tra rev1/data1 e rev2.
          --ifdef=arg     Manda in output le differenze in formato ifdef.
  (per informazioni sulle opzioni-di-rcsdiff, consultare la documentazione del programma diff.
  L'opzione di maggior uso  -c per diff contestuali, ma ce ne sono molte altre).
  (per una lista completa di altre opzioni di help, specificare l'opzione globale --help)
  ______________________________________________________________________



  44..77..  CCrreeaarree rreelleeaassee

  Poich in un progetto ci sono molti file con diversi numeri di
  versione,  una buona idea quella di marcare i file con un'etichetta
  (tag) di release per ogni versione; questo pu essere fatto cos (per
  la versione "v001"):

  ______________________________________________________________________
  bash$ cvs tag -R "v001"
  bash$ cvs commit

  Questa release pu essere estratta localmente con
  bash$ cvs checkout -r "v001" TuoProgetto
  ______________________________________________________________________



  44..88..  LL''eeddiittoorr EEmmaaccss

  Emacs  un potente editor di testi che supporta CVS/RCS - soprattutto
  per quanto riguarda l'accorpamento (fusione) di revisioni diverse e la
  loro comparazione. Il sito ufficiale di Emacs 
  <http://www.gnu.org/software/emacs/emacs.html>.



  55..  BBllooccccaaggggiioo FFoorrttee ((SSttrroonngg)),, DDeebboollee ((WWeeaakk)) oo NNeessssuunn BBllooccccaaggggiioo ((NNoo
  LLoocckkiinngg))

  CVS  un sistema potente ed altamente personalizzabile che gestisce:

    Bloccaggio forte con estrazioni riservate ("reserved checkouts")
     con ccvvss aaddmmiinn --ll o ``''.  Leggere anche Reserved checkouts
     <http://www.cvshome.org/docs/inforeserve.html>.  Su questo sito
     trovate una patch ( <http://www.cvshome.org/dev/patches/editf>) di
     Eric Griswold per le estrazioni riservate.


    Bloccaggio debole con 'cvs watch'.  Si veda anche il comando "cvs
     edit", per mandare un avvertimento (
     <http://www.cvshome.org/dev/text2/res2>) a chi eventualmente sta
     gi apportando delle modifiche al file.


    Nessun bloccaggio - la modalit predefinita per la modifica
     simultanea dei file.



  66..  SSccrriipptt ddii sshheellll

  Quelli che seguono sono degli script che incorporano i comandi base di
  CVS. Questi script velocizzano l'uso del sistema CVS e sono utili
  finch non si diventa a proprio agio con i suoi comandi.  Gli script
  sono stati scritti per la shell Korn, disponibile praticamente per
  ogni versione di Unix, ma si possono facilmente tradurre per la Bash o
  Perl, se necessario.  Si possono personalizzare gli script a proprio
  piacimento.  In pratica sono dei comandi CVS, ma vengono aggiunte
  delle caratteristiche specifiche per certi ambiti. Per esempio, lo
  script sedit fornisce il bloccaggio in modo che gli utenti sappiano
  che qualcuno sta modificando quel file.  Naturalmente gli utenti
  possono usare direttamente i comandi CVS per aggirare l'uso di questi
  script. CVS pu essere ppeerrssoonnaalliizzzzaattoo per adattarsi meglio alle
  esigenze degli utenti, come questi script dimostrano ampiamente.

  NNOOTTAA::  _G_l_i _s_c_r_i_p_t _p_r_e_v_e_d_o_n_o _c_h_e _l_a _d_i_r_e_c_t_o_r_y _p_e_r_s_o_n_a_l_e _d_e_l_l_'_u_t_e_n_t_e
  _d_i_v_e_n_t_i _l_a _r_o_o_t _p_e_r _l_a _c_o_p_i_a _p_e_r_s_o_n_a_l_e _d_e_l_l_'_a_l_b_e_r_o _d_e_i _s_o_r_g_e_n_t_i _C_V_S_,
  _e_s_t_r_a_t_t_a _c_o_n _l_'_o_p_e_r_a_z_i_o_n_e _d_i _c_h_e_c_k_o_u_t_.

   CCOONNSSIIGGLLIIOO::  _I_n _q_u_e_s_t_i _s_c_r_i_p_t_, _i _n_o_m_i _d_e_i _f_i_l_e _a _c_u_i _c_i _s_i _r_i_f_e_r_i_s_c_e
  _s_o_n_o _c_o_m_p_o_s_t_i _d_a _3 _p_a_r_t_i _- _l_a _d_i_r_e_c_t_o_r_y _H_o_m_e_, _l_a _s_o_t_t_o_-_d_i_r_e_c_t_o_r_y _e _i_l
  _n_o_m_e _d_e_l _f_i_l_e_.  _I_l _p_e_r_c_o_r_s_o _c_o_m_p_l_e_t_o _ _$_H_O_M_E_/_$_s_u_b_d_i_r_/_$_f_n_a_m_e_.  _I_n _C_V_S
  _v_i_e_n_e _m_a_n_t_e_n_u_t_a _l_a _s_t_e_s_s_a _s_t_r_u_t_t_u_r_a _d_e_l_l_e _d_i_r_e_c_t_o_r_y _(_c_o_n _l_a _v_a_r_i_a_b_i_l_e
  _$_s_u_b_d_i_r_)_, _p_e_r_c_i_ _i_n _C_V_S _c_i _s_a_r_ _q_u_a_l_c_o_s_a _t_i_p_o _$_C_V_S_R_O_O_T_/_$_s_u_b_d_i_r_/_$_f_n_a_m_e_.
  _I_n _t_u_t_t_i _g_l_i _s_c_r_i_p_t_, _q_u_e_s_t_e _4 _v_a_r_i_a_b_i_l_i _$_H_O_M_E_, _$_C_V_S_R_O_O_T_, _$_s_u_b_d_i_r _e
  _$_f_n_a_m_e _h_a_n_n_o _u_n _r_u_o_l_o _i_m_p_o_r_t_a_n_t_e_. _P_e_r _e_s_e_m_p_i_o_, _l_e _v_a_r_i_a_b_i_l_i _p_o_s_s_o_n_o
  _d_i_v_e_n_t_a_r_e_: _H_O_M_E_=_/_h_o_m_e_/_a_l_d_e_v_, _s_u_b_d_i_r_=_m_i_o_p_r_o_g_e_t_t_o_/_s_r_c_,
  _C_V_S_R_O_O_T_=_/_h_o_m_e_/_c_v_s_r_o_o_t _e _f_n_a_m_e_=_f_o_o_._c_p_p_.

  Si faccia la copia di questi script in /usr/local/bin; che questa
  directory, inoltre, deve essere presente nella variabile d'ambiente
  PATH dell'utente.

  1. ssggeett [-r numero_revisione] <file/nome_directory> Per prelevare un
     file o un'intera directory dal CVS in modalit di SOLA LETTURA.
     Per ottenerlo, fare click su ``''.

  2. sseeddiitt [-r numero_revisione] <nomefile> Per modificare un file. Lo
     script bloccher il file cos che nessuno ne possa fare
     l'estrazione locale con checkout. Naturalmente si pu cambiare lo
     script a proprio piacimento per evitare il bloccaggio, inviare il
     messaggio d'avvertimento o imporre il bloccaggio forte.  Per
     ottenerlo, fare click su ``''.

  3. ssccoommmmiitt [-r numero di revisione] <nome_file> Per confermare le
     modifiche ad un file o ad un'intera directory. Invia le modifiche
     sul CVS.  Per ottenerlo, fare click su ``''.

  4. ssuuppddaattee  <nome_file/directory> Per aggiornare un file o un'intera
     directory prelevando l'ultima versione dei file dal CVS.  Per
     ottenerlo, fare click su ``''.

  5. ssuunnlloocckk [-r numero_revisione] <nome_file> Per sbloccare il file
     prelevato con sedit.  Per ottenerlo, fare click su ``''.

  6. sslliisstt Permette all'utente di avere una lista dei file che sta
     modificando.  Esegue il comando 'ls -l | grep | ...'.  Per
     ottenerlo, fare click su ``''.  Attenzione: c' anche un'altro
     comando su Unix di nome slist (fa una lista dei server Netware
     disponibili). Bisogna quindi assicurarsi che la directory in cui si
     trova lo script CVS compaia, nella propria variabile PATH, prima di
     altre directory.

  7. ssiinnffoo <nome_file/directory> Per ricevere informazioni sulle
     modifiche o revisioni di un file.  Per ottenerlo, fare click su
     ``''.

  8. sslloogg <nome_file> Per avere la registrazione delle revisioni o
     modifiche di un file su CVS.  Per ottenerlo, fare click su ``''.

  9. ssddiiff <nome_file>

     ssddiiff -r rev1 -r rev2 <nome_file> Per avere le differenze del
     proprio file con quello su CVS.  Per ottenerlo, fare click su ``''.

     NOTA: sdif ha solo una 'f' perch c' gi un comando Unix che si
     chiama 'sdiff'.


  10.
     ssaadddd <nome_file> Per aggiungere un nuovo file al repository CVS.
     Per ottenerlo, fare click su ``''.

  11.
     ssddeelleettee  <nome_file> Per eliminare un file dal repository CVS.  Per
     ottenerlo, fare click su ``''.

  12.
     ssffrreeeezzee  <nome_revisione> <nome_directory> Per bloccare lo sviluppo
     del codice e renderlo disponibile come release (operazione detta di
     "freeze", cio di congelamento dell'opera), ovvero una
     distribuzione dell'intero albero dei sorgenti.  Per ottenerlo, fare
     click su ``''.

     Per esempio:


     ___________________________________________________________________
             cd $HOME;
             sfreeze REVISIONE_1_0  alberoDeiSorgenti
     ___________________________________________________________________


  Questo marcher il codice con l'etichetta REVISIONE_1_0 cos che si
  possa estrarre localmente l'intero albero usando il nome della revi
  sione.



  77..  DDooccuummeennttaazziioonnee ddii CCVVSS

  Sul prompt di Unix digitare:

  1. cvs --help

  2. cvs --help-options

  3. cvs --help-commands

  4. cvs -H checkout

  5. cvs -H commit

  6. man cvs

  7. man tkcvs

  8. Visitare  <http://www.cyclic.com>

  9. Visitare  <http://www.loria.fr/~molli/cvs-index.html>

  tkcvs <http://www.tkcvs.org>  l'interfaccia GUI (Interfaccia grafica
  per l'utente) scritta in Tcl/Tk per CVS.  Anch'essa ha un aiuto in
  linea. Provare a digitare:

    cd $HOME/src/foo.cpp

    tkcvs

    Fare click su foo.cpp

    Fare click su 'Revision Log Icon' che si trova vicino all'icona con
     gli occhiali.

    Questo visualizzer il ramo del TREE (l'albero dei sorgenti) nella
     finestra. Ora bisogna fare click con il TASTO DESTRO del mouse su
     una delle versioni rappresentate graficamente (ad esempio la 1.3),
     dopodich si faccia click con il TASTO SINISTRO del mouse sulla
     versione marcata con il testo (segnato con il triangolo giallo o la
     lettera greca delta, NdT): Verr mostrata una finestra con due
     riquadri!!

    Per spostarsi attraverso le altre differenze trovate, fare click
     sul pulsante "Next" (la freccia azzurra rivolta verso il basso,
     NdT).  Premere il pulsante "Center" per centrare il testo.

  Esiste anche un client CVS per Windows 95, WinCVS  (si veda:
  <http://www.wincvs.org> e cyclicsite
  <http://www.cvshome.org/cyclic/cvs/soft-maccvs.html>).  WinCVS pu
  essere usato anche con Samba (cercare samba*.rpm nel cdrom della
  propria distribuzione di Linux) -  <http://www.samba.org>

  I comandi principali sono:

    cvs checkout <nomefile >

    cvs update <nomefile>

    cvs add <file, ..>

    cvs remove <file, ..>

    cvs commit <file>

    cvs status <nomefile>

    cvs log <nomefile>

    cvs diff -r1.4 -r1.5 <nomefile> Quest'ultimo mostrer le differenze
     tra la versione 1.4 e 1.5 su nomefile.



  77..11..  DDooccuummeennttaazziioonnee iinn lliinneeaa

  Sui sistemi Linux  presente la documentazione di CVS (in formato
  postscript) nelle directory //uussrr//ddoocc//ccvvss** (oppure, su certe
  distribuzioni, /usr/share/doc/cvs*).  C' anche una FAQ (le risposte
  alle domande pi frequenti) ed altre utili informazioni.

  ______________________________________________________________________
  bash# cd /usr/doc/cvs*    # oppure: cd /usr/share/doc/cvs*
  bash# gv cvs.ps
  ______________________________________________________________________



  77..22..  DDooccuummeennttaazziioonnee ddeellll''oorrggaanniizzzzaazziioonnee CCVVSS

  La documentazione sul CVS della "CVS Organization" si trova presso
  <http://www.cvshome.org/docs>

  Il manuale ufficiale per CVS di Cederqvist si trova su
  <http://www.cvshome.org/docs/manual/cvs.html>

  Le FAQ per CVS si trovano su
  <http://www.cs.utah.edu/dept/old/texinfo/cvs/FAQ.txt>



  77..33..  FFoorrmmaazziioonnee ssuu CCVVSS


    <http://rpmfind.net/tools/CVS/training/cvstrain.html>

    <http://www.loria.fr/~molli/cvs/cvs-tut/cvs_tutorial_toc.html>

    <http://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/tools/srt/>

    <http://durak.org/cvswebsites/>

    <http://www-users.informatik.rwth-
     aachen.de/~wge/tools/cvs/cvsclient/cvsclient_toc.html>

    <http://www-users.informatik.rwth-aachen.de/~wge/tools/cvs.html>

     Strumenti utili per CVS (di terze parti):

    Il libro "Open Source Development with CVS" di Karl Fogel su
     <http://cvsbook.red-bean.com>,  fornito di strumenti-di-terzi-
     parti <http://cvsbook.red-bean.com/cvsbook.html#Third-Party_Tools>
     e di siti mirror su Zevils
     <http://www.zevils.com/doc/cvsbook/cvsbook_8.html>

    <http://rcs.ee.washington.edu/spp/Projects/Manastash/Links/cvsbook_toc.html>



  88..  IInntteerrffaaccccee ggrraaffiicchhee

  Sono disponibili le seguenti interfacce grafiche per CVS:

    Cervisia, la diffusa interfaccia grafica per CVS situata presso
     <http://cervisia.sourceforge.net>, il cui pacchetto RPM  su
     Cervisia RPMs
     <http://rpmfind.net/linux/rpm2html/search.php?query=cervisia>

    CVS home.org  <http://www.cvshome.org/dev/addons.html>

    CVS Web per windows
     <http://www.devguy.com/fp/cfgmgmt/cvs/cvs_admin_nt.htm#CVSWEBIIS> e
     su  <http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi>

    TkCVS  <http://www.tkcvs.org>  l'interfaccia grafica scritta in
     Tcl/Tk per CVS e su cyclicsite
     <http://www.cvshome.org/cyclic/tkcvs/index.html>

    gCVS: Un'interfaccia grafica portabile per utenza non tecnica di
     CVS, situata presso <http://www.arachne.org/software/gcvs>

    jCVS  un pacchetto client per CVS interamente scritto in Java,
     situato presso <http://www.jcvs.org> e su cyclicsite
     <http://www.cvshome.org/cyclic/jcvs/index.html>

    WinCVS, su  <http://www.cvshome.org/cyclic/cvs/soft-maccvs.html> e
     su cyclicsite <http://www.cvshome.org/cyclic/cvs/soft-maccvs.html>

    CVS per Windows da Component Software
     <http://www.componentsoftware.com/cvs>

    JAsuPortal CVS,  <http://www.mis3.udel.edu/~jlaker/development>

    <http://ppprs1.phy.tu-dresden.de/~trogisch/lincvs/lincvsen.html>

    <http://www.loria.fr/~molli/cvs/doc/cvs_toc.html>

      ccaallddaammeennttee rraaccccoommaannddaattoo l'uso di Samba (samba*.rpm, sul cd della
     propria distribuzione LINUX) <http://www.samba.org> e di un ``X
     Server per PC'' su MS Windows 95/NT. Usando Samba, la directory
     remota su Unix sembrer come una directory locale su MS Windows.
     Dare un'occhiata alla sezione per ``X Server per PC''.

  PPeerr AAppppllee MMaacciinnttoosshh -- MMaacc OOSS:: Si veda il MacCvs su
  <http://www.cvsgui.org> e MacCvsPro su   <http://www.maccvs.org>



  99..  CCVVSS ppeerr MMSS WWiinnddoowwss 9955//9988//NNTT//22000000//XXPP



  99..11..  MMeettooddoo nn 11:: UUssaarree VVNNCC,, SSaammbbaa

   CCAALLDDAAMMEENNTTEE rraaccccoommaannddaattoo l'uso di Samba (samba*.rpm, sul cd della
  propria distribuzione LINUX) <http://www.samba.org> e di un client VNC
  (o X Server per PC) su MS Windows 95/NT.  Con samba, il server CVS
  Unix/Linux assomiglier ad un ffiillee sseerrvveerr.  Usando Samba, la directory
  remota su Unix sembrer una directory locale di MS Windows.
  Installare samba*.rpm sul server Unix/Linux (quello con il repository
  CVS) e installare il client VNC (o un X server per PC) su MS Windows
  95/NT/2000/XP. Usando un VNC (o un X server per PC) si pu facilmente
  fare il login nella macchina Unix per scaricare o spedire i file.
  Inoltre, si possono utilizzare strumenti come Java Visual Cafe o Java
  JBuilder su MS Windows per modificare i file che si trovano nelle
  directory Unix/Linux (attraverso samba).  Dopo le modifiche, si
  possono mandare i file a Unix per l'operazione di check-in, attraverso
  VNC o un X-server per PC.

  I vantaggi dell'uso di CVS su Linux/Unix attraverso MS Windows sono:

    Un solo File server Linux (il server CVS) pu servire diversi
     client MS Windows.

    Un File server Linux (CVS)  molto robusto, sicuro ed affidabile.

    Per un server Linux  necessaria una sola unit UPS (uninterrupted
     power supply, o gruppo di continuit).

    Linux pu fornire il servizio come una directory di MS Windows
     attraverso il pacchetto Samba.

    Un File server Linux (CVS) supporta backup centralizzati con
     strumenti quali BRS, Arkeia, Bru
     <http://www.milkywaygalaxy.freeservers.com>.  Altri link per il
     download sui mirror angelfire
     <http://www.angelfire.com/country/aldev0>, geocities
     <http://www.geocities.com/alavoor/index.html>, virtualave
     <http://aldev0.virtualave.net>, Fortunecity
     <http://members.fortunecity.com/aldev>, Freewebsites
     <http://aldev.freewebsites.com>, Tripod
     <http://members.tripod.lycos.com/aldev>, 101xs
     <http://www.101xs.com/101xs/aldev>, 50megs
     <http://aldev0.50megs.com>,

    Un File server Linux (CVS) ha bisogno solo di una piccola stanza,
     magari fornita d'aria condizionata e preferibilmente senza polvere.
     Stanze pi piccole fanno scendere il costo dei sistemi per il
     mantenimento delle giuste condizioni termiche.

    Un File server Linux (CVS) fornisce una buona sicurezza attraverso
     tramite l'autenticazione dei gruppi e degli utenti Unix.

  Il miglior programma per l'accesso remoto  il VNC, che  un programma
  leggero ed  migliore degli X server per PC. _V_N_C _ _p_r_e_f_e_r_i_b_i_l_e _a _u_n _X
  _s_e_r_v_e_r _p_e_r _P_C. I sistemi d'accesso remoto disponibili, sono:

    VNC (Virtual Network Computing) su
     <http://www.uk.research.att.com/vnc>.  VNC non  un X-server, ma
     pu visualizzare una macchina Unix remota su Windows.  VNC  il
     miglior strumento sul mercato per l'accesso remoto,  un software
     leggero ma molto potente.

    Per ottenere gli rpm di VNC si vada su rpmfind
     <http://rpmfind.net/linux/rpm2html/search.php?query=vnc>.


    Il miglior Window manager per VNC  QVWM, che propone
     un'interfaccia simile a MS Windows 98/NT/2000/XP, lo si pu trovare
     su  <http://www.qvwm.org>.


    Dopo aver avviato il server VNC si pu eseguire il programma
     vvnnccvviieewweerr su client come MS Windows, Mac o Linux.


    Vedere anche la lista dei Windows Manager per X11
     <http://www.dlhoffman.com/publiclibrary/RPM/X11_Window_Managers.html>.

  CCoommppiillaarree qqvvwwmm ssuu SSoollaarriiss :: Su Solaris bisogna installare i seguenti
  pacchetti (prelevabili su <http://sun.freeware.com>): xpm, imlib,
  jpeg, libungif, giflib, libpng, tiff.  I binari per Solaris si trovano
  su <http://www.qvwm.org>.

  Si pu anche scaricare il sorgente di qvwm per Solaris da
  <http://www.qvwm.org> e compilarlo usando gcc.

  Soluzione ai problemi di compilazione: Bisogna mettere 'unsigned long'
  prima dell'argomento in usleep():

  ______________________________________________________________________
  usleep((unsigned long) 10000)
  ______________________________________________________________________



  Sono disponibili i seguenti X server per PC:

    MI/X, ottimo, di basso costo piccola dimensione (3 MB), presso il
     sito  <http://www.microimages.com>; fare click su "X-Server (MI/X)
     for Windows"

    Humming bird, la cui dimensione supera i 14 MB
     <http://www.hummingbird.com>

    Starnet, di 5.2 MB  <http://www.starnet.com>


     Ci sono pi di 2 dozzine di produttori di X server per Windows:

    X-win pro 6.34 MB  <http://www.labf.com>

    X-WinPro  <http://lab-pro.com>

    X-Link  <http://www.xlink.com/x.htm>

    Xoftware  <http://www.age.com>

     Risorse universitarie:

    University listings  <http://www.et.byu.edu/support/pc/xterm.html>

    "X server" per PC funzionanti su un floppy
     <http://mirriwinni.cse.rmit.edu.au/~brad/co338/sem1/floppy.html>



  99..22..  MMeettooddoo nn 22:: UUttiilliizzzzoo ddii CCyyggwwiinn

  Si pu scaricare Cygwin di RedHat <http://www.cygwin.com>, attraverso
  cui installare i pacchetti dei client CVS e SSH. Con cygwin, Windows
  95/NT/2000/XP potr essere usato come un client Unix.  Si avvii la
  shell bash di cygwin per avere accesso al server CVS remoto.  Con
  cygwin, Windows 95/NT sar simile a qualsiasi altro client CVS per
  Linux.



  99..33..  EEsseegguuiibbiillee CCVVSS ppeerr WWiinnddoowwss 9955//NNTT//22000000//XXPP

  Si pu installare ed avviare il CVS direttamente su MS Windows.  Si
  scarichi cvsnt da  <http://www.cvsnt.org>.  Le istruzioni di
  installazione e altri documenti sul CVS per NT/2000 si trovano su
  <http://www.devguy.com/fp/cfgmgmt/cvs/cvs_admin_nt.htm#install>.



  99..44..  PPrrooggrraammmmii FFTTPP ppeerr WWiinnddoowwss 9955//NNTT//22000000//XXPP

  Per trasferire file da una macchina Unix/Linux (un repository CVS) a
  una windows, possono essere utilizzati anche gli strumenti FTP per MS
  Windows:

    Collegarsi al sito di Tucows  <http://www.tucows.com> e cercare
     "ftp tools" per MS Windows



  99..55..  VViissuuaall CCaaffee((JJaavvaa)),, JJBBuuiillddeerr,, MMSS VViissuuaall CC++++,, ffiillee HHTTMMLL

   possibile utilizzare CVS su piattaforme MS Windows, per mezzo di
  Samba e un X server per PC.  Strumenti come Symantec Visual Cafe
  (Java), Inprise JBuilder, MS Visual C++ (e altri) sono supportati
  facilmente da CVS.

  Si possono anche memorizzare i file HTML su un deposito CVS attraverso
  Samba e accedervi facilmente da MS Windows.



  99..66..  SSttrruummeennttii dd''aammmmiinniissttrraazziioonnee ddii SSaammbbaa

  Per amministrare Samba, si possono utilizzare gli strumenti
  d'amministrazione su <http://www.samba.org>. Si vada su questo sito e
  si faccia click su "GUI Interfaces Tools".



  1100..  SSiiccuurreezzzzaa ddeell RReeppoossiittoorryy CCVVSS

  Per rendere sicuri server e repository CVS si seguano queste
  istruzioni:

    Avviare CVS su una macchina Linux/Unix autonoma (vedere
     ``Miglioramento delle prestazioni'').

    Eliminare i pacchetti di software non necessari dalla macchina
     Linux, per evitare che qualche malintenzionato possa utilizzarne le
     eventuali falle: se dei vandali riuscissero a penetrare nel
     sistema, non va loro lasciata la possibilit di avviare pericolosi
     programmi.

    Si consideri l'utilizzo di SSH come scritto nel capitolo
     ``Repository CVS Remoto per pi utenti''

    Si prenda in considerazione l'uso di Kerberos - con installazione
     del pacchetto cvs-*-kerberos*.rpm
     <http://cvshome.org/dev/codelinux.html>.

    Si visiti  <http://www.cvshome.org>; la mailing list
     <http://cvshome.org/communication.html> vi permetter di fare
     domande riguardanti la sicurezza.



  1111..  RReeppoossiittoorryy CCVVSS rreemmoottoo iinn mmuullttiiuutteennzzaa

  Il manuale Cederqvist su
  <http://cvshome.org/docs/manual/cvs_2.html#SEC30> descrive come
  configurare CVS per l'accesso dall'esterno.

  Al fine d'utilizzare CVS per un gruppo di persone, si deve preparare
  un sistema di permessi per permettere l'accesso al sistema da diverse
  macchine.  Ci sono tre modi per farlo e cio :server:, :pserver:, e
  :ext:.  Il meccanismo pserver e l'utilizzo della shell rsh sono
  insicuri. Solo :ext: (con ssh) offre un sufficiente livello di
  sicurezza.

  Se si imposta CVS_RSH con SSH o con altri sostituti di rsh, le
  istruzioni ddoovvrreebbbbeerroo eesssseerree simili a `.rhosts', ma si consulti la
  documentazione del rimpiazzo che si  trovato per rsh.

  Per ottenere ssh si visiti <http://rpmfind.net> o
  <http://www.redhat.com/apps/download> e, nella casella di ricerca, si
  digiti "ssh".  Si scarichi l'RPM di ssh e lo si installi. Infine,
  bisogner configurare CVS per utilizzarlo.  Si dia un'occhiata a
  <http://www.ssh.org>.

  Nota: Se si pensa di configurare CVS per usarlo con rsh, BISOGNA
  seguire questo passaggio importante:

  ______________________________________________________________________
  bash# chmod 600 .rhosts
  ______________________________________________________________________



  Vedere anche il repository CVS di JA-SIG UPortal
  <http://www.mis3.udel.edu/~jlaker/development>.



  1111..11..  AAuutteennttiiccaazziioonnee SSSSHH

  Se si  stanchi di inserire password per ogni semplice comando di CVS,
  allora si pu far passare la propria identit ssh dal client al server
  per permettere l'identificazione automatica (vale a dire: non pi
  password da digitare!); per fare questo, digitare sul server CVS:



  ______________________________________________________________________
  Per ssh versione 1:
  bash$ cd $HOME
  bash$ ssh-keygen

  Per ssh versione 2:
  bash$ cd $HOME
  bash$ ssh-keygen -t rsa
  ______________________________________________________________________



  Sar richiesto il salvataggio della propria identificazione in
  /home/utente_sviluppatore/.ssh/identity (per ssh versione 1) o in
  /home/utente_sviluppatore/.ssh/id_rsa.pub (per ssh versione 2) (o in
  qualunque altra directory puntata da $HOME), premere solo invio.
  Quando verr richiesta la password e la sua conferma, si continui
  premendo invio. Poi si copi la propria chiave pubblica (identity.pub
  per ssh 1 o id_rsa.pub per ssh 2) sul server che utilizza 'secure
  copy' (=copia sicura, software che fa parte di ssh):


  ______________________________________________________________________
  Per ssh 1:
  clientbox$ scp .ssh/identity.pub utente_sviluppatore@serverbox.dominio.com:~/.ssh

  Per ssh 2:
  clientbox$ scp .ssh/id_rsa.pub utente_sviluppatore@serverbox.dominio.com:~/.ssh
  ______________________________________________________________________



  Poi, collegarsi al server e completare il file authorized_keys.

  ______________________________________________________________________
  Per ssh 1:
  clientbox$ ssh utente_sviluppatore@serverbox.dominio.com
  serverbox$ cd .ssh
  serverbox$ cat identity.pub >> authorized_keys

  Per ssh 2:
  clientbox$ ssh utente_sviluppatore@serverbox.dominio.com
  serverbox$ cd .ssh
  serverbox$ cat id_rsa.pub >> authorized_keys2
  serverbox$ chmod go-w authorized_keys2
  ______________________________________________________________________



  Ora si dovrebbe poter utilizzare ssh direttamente dal client al
  server, senza dover inserire alcuna password,; lo si pu verificare
  digitando


  ______________________________________________________________________
  Per ssh 1 o ssh 2:
  clientbox$ ssh utente_sviluppatore@serverbox.dominio.com
  ______________________________________________________________________



  Da questo momento in poi, il controllo della versione non richieder
  pi l'inserimento della password.

  Nota: chiunque abbia accesso alla macchina client, ora, avr accesso
  anche al server, senza dover conoscere la password.
  Dischi cifrati

  Se si temono le conseguenze di tale situazione, si pu pensare
  all'utilizzo di software per cifrare il disco; ad esempio PGPDisk, che
  protegge la directory $HOME sulla macchina client.  Cos, quando un
  intruso mette le mani sulle macchina-client avr bisogno della
  password per il disco cifrato, per avere accesso anche al server.  Un
  altro vantaggio dell'utilizzo dei dischi cifrati  che il proprio
  codice sorgente (estratto con un'operazione di checkout) pu risiedere
  su questa unit.



  1122..  SSccrriipptt ddii sshheellll PPeerr RRCCSS

  Se si vuole utilizzare RCS invece che CVS, allora si possono usare i
  seguenti script della shell.

  1. cotree.sh  - Far il check out dell'intero albero di sorgenti da
     RCS. Invece di fare utile.

  2. cofiles.sh  - Far il check out di tutti i file nella directory.

  3. ciall.sh - Far il check out su tutti i file di RCS utilizzando un
     solo comando da shell.

     Si possono prelevare questi script da ``''.



  1133..  MMiigglliioorraammeennttoo ddeellllee pprreessttaazziioonnii ddii uunn sseerrvveerr CCVVSS

  Per ottenere le massime prestazioni, un server CVS dovrebbe funzionare
  su un computer Linux/Unix autonomo.

  Per ottenere un ulteriore incremento della capacit di elaborazione,
  seguire questi passaggi:

    Ricompilare il kernel Linux per renderlo pi piccolo ed essenziale,
     eliminandone le caratteristiche non utilizzate. Si dia un'occhiata
     all'How-To riguardante il kernel su
     <http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html>


    Fermare i processi Unix non necessari - sui sistemi Linux/Unix
     digitare chkconfig.

     ___________________________________________________________________
     bash$ su - root
     bash# man chkconfig
     bash# chkconfig --help
     bash# chkconfig --list | grep on | less
     Dalla lista ottenuta con il comando digitato sopra, eliminare i processi che si avviano automaticamente:
     bash# chkconfig --level 0123456 <nome del servizio> off
     Al successivo riavvio della macchina, questi servizi non si avvieranno.
     Ora, chiudere questi servizi manualmente.
     bash# cd /etc/rc.d/init.d
     bash# ./<nome del servizio> stop
     ___________________________________________________________________



    Non avviare alcun altro processo, se non strettamente necessario.

    Non lasciare in funzione il sistema X Window, perch i suoi
     processi consumano molta memoria e sovraccaricano la CPU.  Pu
     rappresentare anche una seria falla nella sicurezza per attacchi
     dall'esterno.  I window manager per X Window pi comuni sono KDE,
     GNOME, CDE, XDM ed altri.  Bisogna uscire da X Window
     immediatamente dopo averlo utilizzato.  Per la maggior parte del
     tempo, sullo schermo della macchina che fa da server CVS si
     dovrebbe vedere solo una linea di comando con il prompt di login.



  1144..  SSiisstteemmaa ddii RRiilleevvaazziioonnee ddeeii PPrroobblleemmii,, PPRRSS

  Insieme a CVS, si pu aver bisogno di un sistema che tracci lo stato
  di un progetto o che tenga traccia dei problemi.  Ogni progetto
  software ha bisogno di un tale sistema, che tenga traccia dei bug e li
  assegni ai diversi sviluppatori.  Si dia un'occhiata al sistema GNATS,
  posto sotto la licenza GNU GPL e situato presso
  <http://www.gnu.org/software/gnats/gnats.html> e
  <http://dcl.sourceforge.net> Un PRS commerciale si trova su
  <http://www.stonekeep.com>; cercare 'project tracking system'.



  1155..  SSttrruummeennttii ddii ccoonnffiigguurraattiioonn mmaannaaggeemmeenntt

   CCooss'' iill ccoonnffiigguurraattiioonn mmaannaaggeemmeenntt ((CCMM)) ??

  Ci sono diverse interpretazioni.  Pu riguardare il tracciamento e il
  controllo dello sviluppo di un software e delle attivit connesse; in
  particolare, con CM si intende la gestione dei progetti di sviluppo
  del software con particolare riguardo al lavoro di diversi
  programmatori al lavoro sullo stesso codice, nello stesso momento, su
  diverse piattaforme, con supporto delle diverse versioni e mediante
  controllo dello stato del codice (che permetta di distinguere, ad
  esempio, un beta test da un rilascio vero e proprio).  Oltre a questi
  ambiti, ci sono diverse scuole di pensiero:


    Configuration management Tradizionale - estrazione e immissione del
     codice (a volte binario) e la capacit di costruire (o compilare)
     le diverse entit.  Possono comunque essere incluse altre funzioni.

    Process Management - controllo delle attivit di sviluppo del
     software.  Per esempio, potrebbe verificare se la modifica
     richiesta sia gi stata effettuata, che sia stata approvata per la
     correzione e che le attivit di progettazione, documentazione e
     revisione siano gi state completate prima di permettere al codice
     di essere immesso di nuovo nel repository.

  Anche se il controllo e la gestione del processo sono caratteristiche
  necessarie per un processo di sviluppo ottimizzato e ripetibile, per
  esso  essenziale porre solide fondamenta con l'uso di un
  configuration management.

  Visitare i seguenti link:

    FAQ sugli strumenti di configuration management
     <http://www.iac.honeywell.com/Pub/Tech/CM/CMFAQ.html>

    Strumenti di controllo della versione su Linux e configuration
     management <http://linas.org/linux/cmvc.html>


    Sistemi di configuration management
     <http://www.cmtoday.com/yp/commercial.html>

    Strumenti di configuration management
     <http://www.iac.honeywell.com/Pub/Tech/CM/CMTools.html>

    Configuration management DevGuy CVS
     <http://devguy.com/fp/cfgmgmt/cvs>

    Categorie di Yahoo
     <http://dir.yahoo.com/Computers_and_Internet/software/programming_tools/software_engineering/configuration_management/cvs___concurrent_versions_system>

    Strumenti di configuration management gratuiti
     <http://www.canb.auug.org.au/~millerp/aegis/aegis.html>

    Altri strumenti di configuration management gratuiti
     <http://www.loria.fr/cgi-bin/molli/cm/wilma/fcmt>

    Strumento ClearCase di Rational
     <http://www.rational.com/products/clearcase/prodinfo.jsp>



  1166..  SSiittii ddii rriiffeerriimmeennttoo

  URL ai quali fare riferimento sono:

    Sito principale sugli strumenti per Linux su
     <http://24.221.230.253> e altre risorse su
     <http://www.milkywaygalaxy.freeservers.com> Alcuni mirror sono su:
     angelfire <http://www.angelfire.com/country/aldev0>, geocities
     <http://www.geocities.com/alavoor/index.html>, virtualave
     <http://aldev0.virtualave.net>, Fortunecity
     <http://members.fortunecity.com/aldev>, Freewebsites
     <http://aldev.freewebsites.com>, Tripod
     <http://members.tripod.lycos.com/aldev>, 101xs
     <http://www.101xs.com/101xs/aldev>, 50megs
     <http://aldev0.50megs.com>,

    CVS Bubbles  <http://www.loria.fr/~molli/cvs-index.html>

    CSSC (un sistema simile a SCCS) <http://cssc.sourceforge.net> e
     mirror-site <ftp://alpha.gnu.org/pub/gnu/CSSC>

    SCCS per Linux  <http://www.bitmover.com/bitkeeper>



  1177..  SSCCCCSS aa ccoonnffrroonnttoo ccoonn CCVVSS--RRCCSS

  SCCS (Source Code Control System, un sistema di controllo del codice
  sorgente) non viene pi sottoposto a manutenzione e miglioramento.
  L'opinione comune  che questo strumento  antiquato e inadatto ad un
  gran numero di utenti che lavorano sullo stesso progetto.  In effetti,
  SCCS permette di registrare correttivi per ogni versione, ma pu
  rendere il nuovo sviluppo pprrooggrreessssiivvaammeennttee ppii lleennttoo.  Per questo
  motivo, SCCS NON  raccomandato per i nuovi progetti; comunque 
  ancora l, per supportare vecchi codici che si basano su SCCS.

  Il sistema RCS (Revision Control System, o "sistema di controllo delle
  revisioni")  spesso considerato migliore rispetto a SCCS.  Una
  ragione di ci  che RCS si basa sulla versione pi recente e
  memorizza le differenze con quelle pi vecchie, velocizzando il nuovo
  sviluppo.  Ulteriori discussioni riguardanti SCCS rispetto a RCS sono
  su <http://www.faqs.org/faqs/unix-faq/faq/part7>

  SSii nnoottii cchhee RRCCSS hhaa iimmppaarraattoo ddaaggllii eerrrroorrii ddii SSCCCCSS......

  CVS, che necessita di RCS, estende RCS per il controllo delle
  modifiche simultanee dei sorgenti da parte di diversi utenti che
  lavorano su rilasci costruiti da una completa gerarchia di directory.
  "Con RCS  [come utilizzare] il linguaggio assembly, mentre CVS 
  [come utilizzare] il Pascal".



  1188..  AAllttrrii ffoorrmmaattii ddeell ddooccuummeennttoo

  Questo documento  pubblicato in 14 formati diversi, e precisamente:
  DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF
  (Rich Text Format), testo semplice, pagine man Unix, singolo HTML
  file, SGML (in formato Linuxdoc), SGML (in formato Docbook), e WinHelp
  di MS.

  Questo documento, traduzione italiana dell'originale inglese, si trova
  su:

    <http://ildp.pluto.linux.it/HOWTO> fare click su HOWTOs e cercare
     il nome dell'howto utilizzando CTRL+f o ALT+f all'interno del
     navigatore Web.

  Invece, il documento originale in inglese si trova su:

    <http://www.tldp.org>; fare click su HOWTOs e cercare il nome
     dell'howto utilizzando CTRL+f o ALT+f all'interno del browser Web.

  Ci sono altri siti mirror dove trovare documento il documento
  originale:

    <http://www.caldera.com/LDP/HOWTO>

    <http://www.linux.ucla.edu/LDP>

    <http://www.cc.gatech.edu/linux/LDP>

    <http://www.redhat.com/mirrors/LDP>

    Altri siti mirror vicini a voi possono essere trovati su
     <http://www.linuxdoc.org/mirrors.html>: selezionare un sito e
     recarsi nella directory /LDP/HOWTO/xxxxx-HOWTO.html



    Si pu prelevare questo HOWTO come singolo file tar compresso in
     formato HTML, DVI, Postscript o SGML da:
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO/other-formats/> e
     <http://www.linuxdoc.org/docs.html#howto>


    Il formato in testo semplice  su:
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO> e
     <http://www.linuxdoc.org/docs.html#howto>


    Il formato in un singolo file HTML si trova su:
     <http://www.linuxdoc.org/docs.html#howto>

     Un file HTML singolo pu essere creato con il comando (vedere man
     sgml2html): sgml2html -split 0 xxxxhowto.sgml
    Traduzioni in altre lingue come Francese, Tedesco, Spagnolo, Cinese
     e Giapponese sono su <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO>
     e  <http://www.linuxdoc.org/docs.html#howto> Ogni contributo per la
     traduzione in altre lingue  il benvenuto.

     Questo documento  stato scritto usando uno strumento chiamato
     "SGML-Tools" che si trova su: <http://www.sgmltools.org> Dopo
     averlo compilato, si avranno a disposizione comandi come:

    sgml2html xxxxhowto.sgml     (per generare file html)

    sgml2html -split 0 xxxxhowto.sgml (per generare un file html
     singolo)

    sgml2rtf  xxxxhowto.sgml     (per generare file RTF)

    sgml2latex xxxxhowto.sgml    (per generare file latex)



  1188..11..  FFoorrmmaattoo PPDDFF AAccrroobbaatt

  Un file PDF pu essere creato da un file postscript utilizzando sia
  ddiissttiillll di Acrobat o GGhhoossttssccrriipptt.  Un file postscript  generato da
  DVI che a sua volta  generato da un file Latex.  Si pu scaricare il
  software distill da  <http://www.adobe.com>.  Quella che segue  una
  procedura d'esempio:

  ______________________________________________________________________
  bash$ man sgml2latex
  bash$ sgml2latex nomefile.sgml
  bash$ man dvips
  bash$ dvips -o nomefile.ps nomefile.dvi
  bash$ distill nomefile.ps
  bash$ man ghostscript
  bash$ man ps2pdf
  bash$ ps2pdf input.ps output.pdf
  bash$ acroread output.pdf &
  ______________________________________________________________________


  in alternativa, si pu utilizzare il comando ppss22ppddff di Ghostscript.
  ps2pdf  un programma che possiede quasi tutte le funzionalit di
  Adobe Acrobat Distiller: converte i file PostScript in PDF.  ppss22ppddff 
  implementato come un semplice comando script ( come un file batch)
  che effettua una chiamata a Ghostscript, selezionando un particolare
  dispositivo d'uscita, detto ppddffwwrriittee. Per poter utilizzare ps2pdf, nel
  momento della compilazione di Ghostscript il dispositivo pdfwrite deve
  essere incluso nel Makefile; per maggiori informazioni, si legga la
  documentazione riguardante l'installazione di Ghostscript.



  1188..22..  CCoonnvveerrttiirree ddaa ffoorrmmaattoo LLiinnuuxxddoocc aa DDooccbbooookk

  Questo documento  scritto in formato SGML linuxdoc.  Il formato SGML
  Docbook surclassa il linuxdoc ed ha maggiori funzionalit rispetto a
  quest'ultimo.  Linuxdoc  molto semplice e facile da usare. Per
  convertire da formato SGML linuxdoc a SGML Docbook, si utilizzi il
  programma lldd22ddbb..sshh ed altri script Perl.  Il risultato di ld2db non 
  pulito al 100% e si dovr utilizzare lo script Perl cclleeaann__lldd22ddbb..ppll. Si
  dovr poi correggere manualmente qualche linea nel documento.

    Si pu scaricare il programma ld2db da
     <http://www.dcs.gla.ac.uk/~rrt/docbook.html> o da Milkyway Galaxy
     site <http://www.milkywaygalaxy.freeservers.com> facendo click su
     "Source code for C++ howto".

    Si scarichi lo script Perl cleanup_ld2db.pl da Milkyway Galaxy site
     <http://www.milkywaygalaxy.freeservers.com> sempre facendo click su
     "Source code for C++ howto".

     ld2db.sh non  preciso al 100%, quindi si riscontreranno degli
     errori quando lo si avvier.

     ___________________________________________________________________
             bash$ ld2db.sh file-linuxdoc.sgml db.sgml
             bash$ cleanup.pl db.sgml > db_ripulito.sgml
             bash$ gvim db_ripulito.sgml
             bash$ docbook2html db.sgml
     ___________________________________________________________________


  Infine si dovranno correggere manualmente dei piccoli errori dopo aver
  avviato lo script Perl.  Per esempio, si potrebbe aver bisogno di
  aggiungere i tag di chiusura </ Para> per ogni </ Listitem>



  1188..33..  CCoonnvveerrttiirree iinn ffoorrmmaattoo WWiinnHHeellpp ddii MMSS

  Si pu convertire l'howto in formato MS Windows Help.  Per prima cosa,
  si converta l'sgml in html, facendo:

  ______________________________________________________________________
          bash$ sgml2html xxxxhowto.sgml     (per generale file html)
          bash$ sgml2html -split 0  xxxxhowto.sgml (per generare un singolo file html)
  ______________________________________________________________________


  Poi si utilizzi lo strumento HtmlToHlp <http://javadocs.planetmir
  ror.com/htmltohlpe.html>.  Si pu anche usare sgml2rtf e poi utiliz
  zare l'RTF per generare i file WinHelp.



  1188..44..  LLeeggggeerree ii vvaarrii ffoorrmmaattii

  Per vedere il documento in formato DVI, si usi il programma xdvi.  Il
  programma xdvi si trova nel pacchetto tetex-xdvi*.rpm di RedHat Linux
  che si pu trovare nel menu Pannello di Controllo | Applicazioni |
  Pubblicazioni | TeX.  Per leggere un documento dvi digitare:


               xdvi -geometry 80x90 howto.dvi
               man xdvi



  Ridimensionare la finestra con il mouse.  Per navigare nella pagina si
  possono usare i tasti-freccia di movimento, Pagina S, Pagina Gi, ed
  anche le lettere 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' per salire,
  scendere, centrare, pagina successiva, pagina precedente ecc.  Per
  chiudere il menu ``expert'', premere `x'.

  Per leggere un file Postscript si utilizzi il programma 'gv'
  (ghostview) o 'ghostscript'.  Il programma Ghostscript  nel pacchetto
  ghostscript*.rpm, mentre gv  nel pacchetto gv*.rpm di Redhat Linux e
  pu essere trovato nel menu Pannello di Controllo | Applicazioni |
  Grafica. Il programma gv  molto pu amichevole di Ghostscript.  Sia
  Ghostscript che gv sono disponibili per piattaforme diverse come OS/2,
  Windows 95 e NT. Si pu visualizzare questo documento anche su queste
  piattaforme.


    Per avere Ghostscript per Windows 95, OS/2, o per altri sistemi
     operativi, si vada su <http://www.cs.wisc.edu/~ghost>

  Per leggere un documento postscript dare il comando:


                       gv howto.ps
                       ghostscript howto.ps



  Per leggere il formato HTML si pu usare Netscape Navigator, Microsoft
  Internet explorer, Redhat Baron Web browser o uno qualsiasi dei tanti
  altri browser Web.

  Si possono leggere i formati latex e LyX utilizzando LyX,
  un'interfaccia su X Window per LaTex.


  1199..  SSccrriipptt ddeellllaa SShheellll ppeerr CCVVSS

  Si possono prelevare gli script della shell (sempre aggiornati)
  direttamente da Milkyway Galaxy site
  <http://www.milkywaygalaxy.freeservers.com>.  Questi script sono molto
  utili.



  2200..  CCooppyyrriigghhtt ee LLiicceennzzaa

  Copyright Al Dev (Alavoor Vasudevan) 1998-2002.

  La licenza del documento  la GNU GPL, ma si prega di conservare su
  ogni copia il nome e l'e-mail dell'autore.



