Your IP : 216.73.216.81


Current Path : /proc/358557/root/proc/355384/root/usr/share/doc/maint-guide-it/html/
Upload File :
Current File : //proc/358557/root/proc/355384/root/usr/share/doc/maint-guide-it/html/checkit.it.html

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Capitolo 7. Controllare il pacchetto per errori</title>
    <link rel="stylesheet" type="text/css" href="debian.css"/>
    <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="home" href="index.it.html" title="Guida per il nuovo Maintainer"/>
    <link rel="up" href="index.it.html" title="Guida per il nuovo Maintainer"/>
    <link rel="prev" href="build.it.html" title="Capitolo 6. Costruzione del pacchetto"/>
    <link rel="next" href="update.it.html" title="Capitolo 8. Aggiornamento del pacchetto"/>
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Capitolo 7. Controllare il pacchetto per errori</th>
        </tr>
        <tr>
          <td align="left"><a accesskey="p" href="build.it.html"><img src="images/prev.png" alt="Indietro"/></a> </td>
          <th width="60%" align="center"> </th>
          <td align="right"> <a accesskey="n" href="update.it.html"><img src="images/next.png" alt="Avanti"/></a></td>
        </tr>
      </table>
      <hr/>
    </div>
    <div class="chapter">
      <div class="titlepage">
        <div>
          <div>
            <h1 class="title"><a id="checkit"/>Capitolo 7. Controllare il pacchetto per errori</h1>
          </div>
        </div>
      </div>
      <div class="toc">
        <p>
          <strong>Indice</strong>
        </p>
        <dl class="toc">
          <dt>
            <span class="section">
              <a href="checkit.it.html#inadvent">7.1. Modifiche sospette</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#pinstall">7.2. Verifica dell'installazione di un pacchetto</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#pmaintscripts">7.3. Verifica degli script del manutentore di un pacchetto</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#lintians">7.4. Utilizzare <code class="systemitem">lintian</code></a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#debc">7.5. Il comando <span class="command"><strong>debc</strong></span></a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#debdiff">7.6. Il comando <span class="command"><strong>debdiff</strong></span></a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#interdiff">7.7. Il comando <span class="command"><strong>interdiff</strong></span></a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="checkit.it.html#mc">7.8. Il comando <span class="command"><strong>mc</strong></span></a>
            </span>
          </dt>
        </dl>
      </div>
      <p>
È disponibile la riscrittura di questo tutorial, con contenuti aggiornati e
con esempi più pratici, denominato <a class="ulink" href="https://www.debian.org/doc/devel-manuals#debmake-doc">Guide for Debian
Maintainers</a>.  Si prega di utilizzare il nuovo tutorial come
documento primario.
</p>
      <p>
Ci sono alcune tecniche da sapere per controllare se un pacchetto ha degli
errori prima di caricarlo negli archivi pubblici.
</p>
      <p>
Effettuare dei test su altre macchine oltre a quella con cui si è sviluppato
è una buona idea.  Si deve inoltre fare attenzione agli avvisi ed agli
errori per tutti i test che verranno qui descritti.
</p>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="inadvent"/>7.1. Modifiche sospette</h2>
            </div>
          </div>
        </div>
        <p>
Se si trova un nuovo file di patch generato automaticamente, come
<code class="filename">debian-changes-*</code> nella directory
<code class="filename">debian/patches</code> dopo aver costruito un pacchetto Debian
non-nativo nel formato <code class="literal">3.0 (quilt)</code>, è probabile che è
stato cambiato qualche file per caso o che gli script di build hanno
modificato il sorgente originale. Se è si tratta di un errore del genere, lo
si risolva. Se è causato dallo script di build, si cerchi la causa
principale del problema con <span class="command"><strong>dh-autoreconf</strong></span> come mostrato
in <a class="xref" href="dreq.it.html#customrules" title="4.4.3. Personalizzazione del file rules">Sezione 4.4.3, «Personalizzazione del file <code class="filename">rules</code>»</a> o si cerchi di aggirare il problema con
<code class="filename">source/options</code> come mostrato in <a class="xref" href="dother.it.html#sourceopt" title="5.24. source/options">Sezione 5.24, «<code class="filename">source/options</code>»</a>.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="pinstall"/>7.2. Verifica dell'installazione di un pacchetto</h2>
            </div>
          </div>
        </div>
        <p>
Bisogna verificare che il pacchetto si installi senza problemi.  Il comando
<span class="citerefentry"><span class="refentrytitle">debi</span>(1)</span> aiuta a testare l'installazione di tutti i pacchetti binari
generati.
</p>
        <pre class="screen">
$ sudo debi gentoo_0.9.12-1_i386.changes
</pre>
        <p>
Per prevenire eventuali problemi di installazione su sistemi diversi,
bisogna assicurarsi che non ci siano file in conflitto con altri pacchetti
esistenti utilizzando il file
<code class="filename">Contents-<em class="replaceable"><code>i386</code></em></code> scaricato
dall'archivio Debian.  Il comando <span class="command"><strong>apt-file</strong></span> può tornare
utile a questo scopo.  Se ci sono file che si sovrappongono, si prega di
prendere delle misure per evitare l'insorgere del problema, rinominando il
file, spostando il file in un pacchetto separato e configurarlo come
dipendenza sui vari pacchetti che lo richiedono, utilizzando meccanismi
alternativi (si veda <span class="citerefentry"><span class="refentrytitle">update-alternatives</span>(1)</span>) che permettendo di coordinarsi con i manutentori degli
altri pacchetti interessati o settano la voce <code class="literal">Conflicts</code>
nel file <code class="filename">debian/control</code>.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="pmaintscripts"/>7.3. Verifica degli script del manutentore di un pacchetto</h2>
            </div>
          </div>
        </div>
        <p>
Tutti gli script del manutentore (ad esempio i file,
<code class="filename">preinst</code>, <code class="filename">prerm</code>,
<code class="filename">postinst</code>, e <code class="filename">postrm</code>) sono difficili
da scrivere correttamente a meno che non siano stati generati
automaticamente dai programmi di <code class="systemitem">debhelper</code>.  Si consiglia pertanto di non
utilizzarli se non si ha sufficiente esperienza come manutentore (si veda
<a class="xref" href="dother.it.html#maintscripts" title="5.18. {pre,post}{inst,rm}">Sezione 5.18, «<code class="filename">{pre,post}{inst,rm}</code>»</a>).
</p>
        <p>
Se il pacchetto utilizza questi particolari script del manutentore, ci si
assicuri di effettuare delle prove non solo per l'operazione di install, ma
anche per il remove, purge, e l'upgrade.  Molti bug degli script del
manutentore vengono fuori quando i pacchetti sono rimossi o viene applicato
il purge.  Si utilizzi il comando <span class="command"><strong>dpkg</strong></span> nel seguente modo
per testarli:
</p>
        <pre class="screen">
$ sudo dpkg -r gentoo
$ sudo dpkg -P gentoo
$ sudo dpkg -i gentoo_<em class="replaceable"><code>version</code></em>-<em class="replaceable"><code>revision</code></em>_<em class="replaceable"><code>i386</code></em>.deb
</pre>
        <p>
Questa operazione si dovrebbe effettuare con delle sequenze di questo tipo:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
installazione della versione precedente (se necessaria).
</p>
            </li>
            <li class="listitem">
              <p>
aggiornamento dalla versione precedente.
</p>
            </li>
            <li class="listitem">
              <p>
ritorno alla versione precedente (opzionale).
</p>
            </li>
            <li class="listitem">
              <p>
applicazione del purge.
</p>
            </li>
            <li class="listitem">
              <p>
installazione del nuovo pacchetto.
</p>
            </li>
            <li class="listitem">
              <p>
rimozione del pacchetto.
</p>
            </li>
            <li class="listitem">
              <p>
reinstallazione del pacchetto.
</p>
            </li>
            <li class="listitem">
              <p>
applicazione del purge.
</p>
            </li>
          </ul>
        </div>
        <p>
Se si sta creando il primo pacchetto, andrebbero creati dei pacchetti
fittizi con diversi numeri di versione per testare il pacchetto originale in
anticipo e prevenire problemi futuri.
</p>
        <p>
Si tenga in mente che se il pacchetto è stato già rilasciato in Debian, le
persone spesso effettueranno un aggiornamento a quest'ultimo a partire
dall'ultima versione disponibile su Debian.  Si ricordi di testare gli
aggiornamenti anche a partire da questa versione.
</p>
        <p>
Anche se il ritorno ad una versione precedente non è ufficialmente
supportato, sarebbe buona abitudine supportarlo.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="lintians"/>7.4. Utilizzare <code class="systemitem">lintian</code></h2>
            </div>
          </div>
        </div>
        <p>
Si esegua <span class="citerefentry"><span class="refentrytitle">lintian</span>(1)</span> sul file
<code class="filename">.changes</code>.  Il comando <span class="command"><strong>lintian</strong></span> esegue
molti script di test alla ricerca dei più comuni errori di
pacchettizzazione.  <a href="#ftn.idm3202" class="footnote" id="idm3202"><sup class="footnote">[75]</sup></a>
</p>
        <pre class="screen">
$ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes
</pre>
        <p>
Ovviamente va rimpiazzato il nome con quello del file
<code class="filename">.changes</code> generato per il pacchetto.  I risultati del
comando <span class="command"><strong>lintian</strong></span> vengono qui elencati di seguito:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
<code class="literal">E:</code> errore; una violazione certa di una policy o un errore
di pacchettizzazione.
</p>
            </li>
            <li class="listitem">
              <p>
<code class="literal">W:</code> attenzione; una possibile violazione di policy o un
errore della pacchettizzazione.
</p>
            </li>
            <li class="listitem">
              <p>
<code class="literal">I:</code> informazione; un'informazione su alcuni aspetti della
pacchettizzazione.
</p>
            </li>
            <li class="listitem">
              <p>
<code class="literal">N:</code> nota; un messaggio dettagliato per aiutare
nell'analisi degli errori.
</p>
            </li>
            <li class="listitem">
              <p>
<code class="literal">O:</code> per sovrascrivere: il messaggio verrà sovrascritto dal
file <code class="filename">lintian-overrides</code>, ma potrà essere visualizzato
con l'opzione <code class="literal">--show-overrides</code>.
</p>
            </li>
          </ul>
        </div>
        <p>
Quando vengono generati degli avvertimenti, si imposti il pacchetto in modo
tale da evitarli o si verifichi che tali avvertimenti non siano indicativi
di un errore.  In quest'ultimo caso, si impostino i file
<code class="filename">lintian-overrides</code> come descritto in <a class="xref" href="dother.it.html#lintian" title="5.14. {pacchetto.,source/}lintian-overrides">Sezione 5.14, «<code class="filename">{<em class="replaceable"><code>pacchetto</code></em>.,source/}lintian-overrides</code>»</a>.
</p>
        <p>
Si noti che si può costruire il pacchetto con
<span class="command"><strong>dpkg-buildpackage</strong></span> ed eseguire <span class="command"><strong>lintian</strong></span>
su di esso in una sola volta con <span class="citerefentry"><span class="refentrytitle">debuild</span>(1)</span> o con <span class="citerefentry"><span class="refentrytitle">pdebuild</span>(1)</span>.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="debc"/>7.5. Il comando <span class="command"><strong>debc</strong></span></h2>
            </div>
          </div>
        </div>
        <p>
Si possono elencare i file nel pacchetto binario Debian con il comando
<span class="citerefentry"><span class="refentrytitle">debc</span>(1)</span>.
</p>
        <pre class="screen">
$ debc <em class="replaceable"><code>package</code></em>.changes
</pre>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="debdiff"/>7.6. Il comando <span class="command"><strong>debdiff</strong></span></h2>
            </div>
          </div>
        </div>
        <p>
Si può confrontare il contenuto dei file in due pacchetti sorgente Debian
con il comando <span class="citerefentry"><span class="refentrytitle">debdiff</span>(1)</span>.
</p>
        <pre class="screen">
$ debdiff <em class="replaceable"><code>old-package</code></em>.dsc <em class="replaceable"><code>new-package</code></em>.dsc
</pre>
        <p>
Si possono anche confrontare le liste di file in due set di pacchetti binari
Debian con il comando <span class="citerefentry"><span class="refentrytitle">debdiff</span>(1)</span>.
</p>
        <pre class="screen">
$ debdiff <em class="replaceable"><code>old-package</code></em>.changes <em class="replaceable"><code>new-package</code></em>.changes
</pre>
        <p>
Questi comandi sono utili per vedere cosa sia cambiato nei pacchetti
sorgente, se un file sia stato spostato inavvertitamente o rimosso dai
pacchetti, e se altri cambiamenti non intenzionali siano stati fatti durante
l'aggiornamento dei pacchetti binari.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="interdiff"/>7.7. Il comando <span class="command"><strong>interdiff</strong></span></h2>
            </div>
          </div>
        </div>
        <p>
Si possono confrontare due file <code class="filename">diff.gz</code> con il comando
<span class="citerefentry"><span class="refentrytitle">interdiff</span>(1)</span>.  Questo è utile per verificare che
il manutentore non abbia inavvertitamente fatto dei cambiamenti ai sorgenti
durante il processo di aggiornamento dei pacchetti nel vecchio formato
sorgente <code class="literal">1.0</code>.
</p>
        <pre class="screen">
$ interdiff -z <em class="replaceable"><code>old-package</code></em>.diff.gz <em class="replaceable"><code>new-package</code></em>.diff.gz
</pre>
        <p>
Il nuovo formato sorgente <code class="literal">3.0</code> salva i cambiamenti in file
di patch multipli come descritto in <a class="xref" href="dother.it.html#patches" title="5.25. patches/*">Sezione 5.25, «<code class="filename">patches/*</code>»</a>.  È possibile
tracciare i cambiamenti di ogni file <code class="filename">debian/patches/*</code>
usando anche <span class="command"><strong>interdiff</strong></span>.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="mc"/>7.8. Il comando <span class="command"><strong>mc</strong></span></h2>
            </div>
          </div>
        </div>
        <p>
Molte delle operazioni di ispezione dei file possono essere rese più
semplici utilizzando un gestore dei file come <span class="citerefentry"><span class="refentrytitle">mc</span>(1)</span>,
che permette di navigare non solo il contenuto dei pacchetti in formato
<code class="filename">*.deb</code> ma anche degli <code class="filename">*.udeb</code>,
<code class="filename">*.debian.tar.gz</code>, <code class="filename">*.diff.gz</code>, e dei
file <code class="filename">*.orig.tar.gz</code>.
</p>
        <p>
Si faccia attenzione ad ulteriori file non necessari o vuoti, sia nel
pacchetto binario che in quello sorgente.  Spesso non vengono ripuliti
correttamente; si aggiusti il file <code class="filename">rules</code> per riparare a
questo problema.
</p>
      </div>
      <div class="footnotes">
        <br/>
        <hr/>
        <div id="ftn.idm3202" class="footnote">
          <p><a href="#idm3202" class="para"><sup class="para">[75] </sup></a> Non c'è bisogno di fornire l'opzione <span class="command"><strong>lintian</strong></span> <code class="literal">-i
-I --show-overrides</code> se si è personalizzato il file
<code class="filename">/etc/devscripts.conf</code> o il file
<code class="filename">~/.devscripts</code> come descritto in <a class="xref" href="build.it.html#debuild" title="6.3. Il comando debuild">Sezione 6.3, «Il comando <span class="command"><strong>debuild</strong></span>»</a>.
</p>
        </div>
      </div>
    </div>
    <div class="navfooter">
      <hr/>
      <table width="100%" summary="Navigation footer">
        <tr>
          <td align="left"><a accesskey="p" href="build.it.html"><img src="images/prev.png" alt="Indietro"/></a> </td>
          <td align="center"> </td>
          <td align="right"> <a accesskey="n" href="update.it.html"><img src="images/next.png" alt="Avanti"/></a></td>
        </tr>
        <tr>
          <td align="left" valign="top">Capitolo 6. Costruzione del pacchetto </td>
          <td align="center">
            <a accesskey="h" href="index.it.html">
              <img src="images/home.png" alt="Partenza"/>
            </a>
          </td>
          <td align="right" valign="top"> Capitolo 8. Aggiornamento del pacchetto</td>
        </tr>
      </table>
    </div>
  </body>
</html>