/[ddp]/manuals/trunk/maint-guide/maint-guide.it.sgml
ViewVC logotype

Contents of /manuals/trunk/maint-guide/maint-guide.it.sgml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1746 - (show annotations) (download) (as text)
Wed Jul 31 09:10:06 2002 UTC (10 years, 9 months ago) by frankie
File MIME type: text/x-sgml
File size: 82232 byte(s)

Minor typos corrected.
Go with packaging :)
1 <!doctype debiandoc system>
2
3 <debiandoc>
4
5 <book>
6
7 <titlepag>
8
9 <title>Guida per il nuovo Maintainer</title>
10
11 <author>Josip Rodin <email/jrodin@jagor.srce.hr/
12 </author>
13 <author>Traduzione: Francesco P. Lovergine <email/frankie@debian.org/
14 </author>
15
16 <version>versione 1.2, 6 Aprile 2002.</version>
17
18 <copyright>
19 <copyrightsummary>Copyright &copy; 1998-2002 Josip Rodin.</copyrightsummary>
20
21 <p>Questa guida può essere utilizzata nei termini della GNU General Public License
22 versione 2 o successive.
23
24 <p>Questo documento è stato realizzato utilizzando come modello i documenti seguenti:
25
26 <p>Making a Debian Package (noto come Manuale di Debmake), copyright &copy;
27 1997 Jaldhar Vyas.
28
29 <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
30 Will Lowe.
31 </copyright>
32
33 </titlepag>
34
35 <toc sect>
36
37 <chapt id="start">Partire "nel modo giusto"
38
39 <p>Questo documento proverà a descrivere la costruzione di un pacchetto
40 Debian GNU/Linux per un comune utente Debian (e aspirante sviluppatore),
41 utilizzando un linguaggio immediato e con l'ausilio di esempi concreti.
42 C'è un detto latino che dice <em> Longum iter est per preaecepta, breve
43 et efficax per exempla!</em> (La via è lunga usando la teoria,
44 ma breve ed efficiente con gli esempi!).
45
46 <p>Una cosa che rende Debian una distribuzione Linux di prima scelta,
47 è il suo sistema di pacchettizzazione. Sebbene ci sia una vasta quantità
48 di software già in formato Debian, qualche volta è necessario installare
49 del software che non lo è.
50 Potresti chiederti come creare personalmente i tuoi pacchetti e forse
51 pensare che sia un compito molto difficile. In effetti, se sei un
52 novizio di Linux è dura, ma se sei un un utente stagionato non puoi
53 non leggere questo documento subito :-) Avrai bisogno di conoscere
54 dei rudimenti di programmazione Unix, ma certamente non occorrerà che
55 tu sia un mago della programmazione.
56
57 <p>Una cosa è certa, però: per creare propriamente e manutenere
58 pacchetti Debian ti occorrono ore-uomo di lavoro. Non commettere errori, per
59 far funzionare il nostro sistema, i maintainer necessitano di essere
60 insieme tecnicamente competenti e diligenti.
61
62 <p>Questo documento spiegherà ogni piccolo (e in apparenza irrilevante)
63 passo, e ti aiuterà a creare il tuo primo pacchetto, e conseguire
64 qualche esperienza nel costruire i successivi rilasci di questo e forse
65 altri pacchetti più in là.
66
67 <p>Versioni aggiornate di questo documento dovrebbero sempre essere
68 disponibili all'indirizzo
69 <url name="http://www.debian.org/doc/maint-guide/" id="http://www.debian.org/doc/maint-guide/">
70 e nel pacchetto `<package/maint-guide/'.
71 La traduzione in italiano è anche disponibile nel pacchetto `<package/maint-guide-it/'.
72
73 <sect id="needprogs">Programmi necessari per lo sviluppo
74
75 <p>Prima di iniziare, dovresti assicurarti di avere correttamente
76 installati alcuni pacchetti addizionali, necessari per lo sviluppo
77 del software. Osserva che la lista non contiene alcun pacchetto
78 etichettato `essential' o `required' - ci aspettiamo che tu li abbia
79 già installati.
80
81 <p>Questa revisione del documento è stata aggiornata per i
82 pacchetti in Debian 2.2 (`potato') and 3.0 (`woody').
83
84 <p>I pacchetti seguenti fanno parte della installazione standard della
85 Debian, per cui probabilmente li hai già installati (insieme ai
86 pacchetti addizionali dai quali dipendono). Comunque dovresti
87 controllare con `dpkg -s &lt;package&gt;'.
88
89 <list>
90 <item><package/dpkg-dev/ - questo pacchetto contiene gli
91 strumenti necessari per spacchettare, creare e caricare i pacchetti
92 sorgenti Debian. (vedi
93 <manref name="dpkg-source" section="1">)
94
95 <item><package/file/ - questo comodo programma può stabilire la
96 tipologia di un file.
97 (vedi <manref name="file" section="1">)
98
99 <item><package/gcc/ - il compilatore GNU C, necessario se il tuo programma
100 come molti altri è scritto nel linguaggio di programmazione C.
101 (vedi <manref name="gcc" section="1">,
102 Questo pacchetto caricherà anche un gruppo di altri pacchetti come
103 <package/binutils/ che include programmi usati per assemblare e
104 linkare file oggetto (vedi `info binutils` nel pacchetto
105 <package/binutils-doc/)
106 e <package/cpp/, il preprocessore C.
107 (vedi <manref name="cpp" section="1">)
108
109 <item><package/g++/ - il compilatore GNU C++, necessario se il tuo
110 programma è scritto in C++. (vedi <manref name="g++" section="1">).
111
112 <item><package/libc6-dev/ - le librerie e i file header che il gcc
113 richiede per la compilazione e il link dei file oggetto.
114 (vedi `info libc' nel pacchetto <package/glibc-doc/)
115
116 <item><package/make/ - generalmente la creazione di programmi richiede
117 una serie di passi. Piuttosto di riscrivere continuamente gli stessi
118 comandi, puoi utilizzare questo programma per automatizzare il
119 processo, creando dei `Makefile'. (vedi `info make`)
120
121 <item><package/patch/ - questo programma di utilità molto utile
122 impiega un file
123 contenente una lista di differenze (prodotta dal programma diff) e
124 la applica al file originale, per produrre una versione modificata.
125 (vedi <manref name="patch" section="1">)
126
127 <item><package/perl/ - Perl è uno dei linguaggi per script
128 interpretati più utilizzati sui moderni sistemi simil-Unix, spesso definito
129 come "il coltellino svizzero di Unix".
130 (vedi <manref name="perl" section="1">)
131 </list>
132
133 <p>Probabilmente vorrai installare i pacchetti seguenti, anche:
134
135 <list>
136
137 <item><package/autoconf/ e <package/automake/ - molti programmi
138 nuovi usano script di configurazione e Makefile preprocessati
139 con l'aiuto di programmi come questi. (vedi `info autoconf`, `info automake`)
140
141 <item><package/dh-make/ e <package/debhelper/- dh-make è necessario per
142 creare lo skeleton del nostro pacchetto di esempio, e utilizzerà alcuni
143 strumenti di debhelper per creare i pacchetti. Non sono essenziali per la
144 creazione di pacchetti, ma sono <strong>altamente</strong> raccomandati
145 per i nuovi maintainer. Questo rende l'intero processo molto più
146 semplice da iniziare e controllare successivamente. (vedi
147 <manref name="dh_make" section="1">,
148 <manref name="debhelper" section="1">, /usr/share/doc/debhelper/README)
149
150 <item><package/devscripts/ - questo pacchetto contiene alcuni utili
151 script che possono essere di aiuto per il maintainer, ma anche questi
152 non sono strettamente necessari per la creazione di pacchetti. (vedi
153 /usr/share/doc/devscripts/README.gz)
154
155 <item><package/fakeroot/ - questa programma di utilità permette di emulare i
156 privilegi di root necessari per alcune parti del processo di creazione.
157 (vedi <manref name="fakeroot" section="1">)
158
159 <item><package/gnupg/ - un programma che ti consente di <em>firmare</em>
160 elettronicamente i pacchetti. Questo è soprattutto importante se vuoi
161 distribuirli ad altre persone, e certamente lo farai quando il tuo
162 lavoro verrà incluso nella distribuzione Debian.
163 (vedi <manref name="gpg" section="1">)
164
165 <item><package/g77/ - il compilatore GNU Fortran 77, necessario se il
166 tuo programma è scritto in Fortran. (vedi <manref name="g77" section="1">)
167
168 <item><package/gpc/ - il compilatore GNU Pascal, necessario se il tuo
169 programma è scritto in Pascal. Degno di nota qui è <package/fp-compiler/,
170 il Compilatore Free Pascal, che è anche adatto a questo compito.
171 (vedi <manref name="gpc" section="1">, <manref name="ppc386" section="1">)
172
173 <item><package/imake/ e <package/xmkmf/ - alcuni programmi, generalmente
174 quelli fatti per X11, usano anche questi programmi per generare i Makefile
175 da insiemi di macro funzioni. (vedi <manref name="imake" section="1">,
176 <manref name="xmkmf" section="1">)
177
178 <item><package/lintian/ - questo è il verificatore dei pacchetti Debian,
179 che permette di scoprire errori comuni dopo la costruzione del
180 pacchetto e spiega gli errori trovati. (vedi
181 <manref name="lintian" section="1">,
182 /usr/share/doc/lintian/lintian.html/index.html)
183 </list>
184
185 <p>Quanto segue è la documentazione <em>molto importante</em>
186 che dovresti leggere insieme a questo documento:
187
188 <list>
189 <item><package/debian-policy/ - la Policy include la struttura e i contenuti
190 dell'archivio, una serie di indicazioni sul disegno del sistema operativo,
191 lo Standard della Gerarchia del Filesystem (che dice dove ogni file
192 e directory dovrebbe stare), ecc.
193 La cosa che per te è più importante è
194 che descrive gli obblighi che ogni pacchetto deve soddisfare per
195 essere incluso nella distribuzione. (vedi
196 /usr/share/doc/debian-policy/policy.html/index.html)
197
198 <item><package/developers-reference/ - contiene tutto il materiale non
199 specificatamente relativo ai dettagli tecnici della pacchettizzazione,
200 come la struttura dell'archivio, come rinominare, rendere orfano o
201 prendere in carico un pacchetto, come fare gli NMU, come gestire
202 i bug, quando e dove fare i caricamenti, ecc.
203 (vedi /usr/share/doc/developers-reference/developers-reference.html/index.html)
204 </list>
205
206 <p>Le brevi note date sino a questo punto servono solo come
207 introduzione a cosa ciascun pacchetto fa. Prima di continuare, leggi
208 approfonditamente la documentazione di ogni programma, almeno per
209 un uso standard. Potrà sembrarti molto pesante farlo adesso, ma
210 più avanti sarai <em>lietissimo</em> di averlo fatto.
211
212 Nota: <package/debmake/ è un pacchetto che contiene alcuni programmi
213 con funzioni simile a dh-make, ma il suo specifico uso
214 <strong>non</strong> è illustrato in questo documento, perchè il suo
215 uso è <em>sconsigliato</em>.
216 Si rimanda al <url name="manuale di Debmake"
217 id="http://www.debian.org/~jaldhar/"> per maggiori informazioni.
218
219 <sect id="otherinfo">Altre informazioni
220
221 <p>Ci sono due tipi di pacchetti che puoi creare, sorgente e binario.
222 Un pacchetto sorgente contiene codice che puoi compilare in un
223 programma. Un pacchetto binario contiene il solo programma finito.
224 Non confondere il sorgente di un programma con i sorgenti del pacchetto
225 del programma! Leggi gli altri manuali se hai necessità di avere
226 maggiori dettagli sulla terminologia.
227
228 <p>In Debian, il termine `maintainer' è utilizzato per la persona che
229 crea pacchetti, `upstream author' per chi ha realizzato il programma,
230 e `upstream maintainer' per la persona che correntemente manutiene
231 quel programma, al di fuori di Debian. Generalmente author e upstream
232 maintainer sono la stessa persona - e talvolta anche il maintainer
233 è la stessa persona. Se hai realizzato un programma, e vuoi che faccia
234 parte di Debian, sentiti libero di sottomettere la richiesta per
235 diventare un maintainer.
236
237 <p>Una volta creato il pacchetto (o mentre lo fai), dovrai diventare
238 un maintainer Debian ufficiale, se vuoi che il tuo programma vada a
239 far parte della prossima distribuzione (se il programma è utile
240 perché no?). La procedura è spiegata nella Guida di Riferimento
241 per lo Sviluppatore. Sei pregato di leggerla.
242
243 <chapt id="first">Primi passi
244
245 <sect id="choose">Scegli il tuo programma
246
247 <p>Devi probabilmente scegliere il pacchetto che vuoi creare. La prima
248 cosa da fare è controllare se il pacchetto è già nella distribuzione.
249 Se usi la distribuzione `stabile', forse è meglio che tu
250 vada all'indirizzo
251 <url name="pagina di ricerca dei pacchetti" id="http://www.debian.org/distrib/packages">.
252 Se usi la <strong>corrente</strong> distribuzione `instabile', verificalo
253 con i comandi:
254 <example>
255 dpkg -s program
256 dpkg -l '*program*'
257 </example>
258
259 <p>Se il pacchetto già esiste, bene, installalo! :-) Se fosse stato
260 reso orfano -- se il suo maintainer è configurato come "Debian QA Group",
261 dovresti essere in grado di prenderlo in carico. Consulta
262 <url name="lista dei pacchetti orfani" id="http://www.debian.org/devel/wnpp/orphaned">
263 e
264 <url name="la lista dei pacchetti in adozione" id="http://www.debian.org/devel/wnpp/rfa_bypackage">
265 per verificare che il pacchetto sia effettivamente disponibile.
266
267 <p>Se sei in grado di adottare il pacchetto, prendi i sorgenti (con qualcosa
268 come <tt/apt-get source packagename/) ed esaminali. Questo documento
269 purtroppo non include informazioni esaustive sulla adozione
270 di pacchetti. Fortunatamente non dovrai fare un duro lavoro per capire
271 come il pacchetto funziona poichè qualcuno avrà già fatto la configurazione
272 iniziale al posto tuo. Continua a leggere comunque, molti dei suggerimenti
273 nel seguito saranno ancora applicabili nel tuo caso.
274
275 <p>Se il pacchetto è nuovo, e decidi che ti piacerebbe facesse parte
276 di Debian, procedi come segue:
277
278 <list>
279 <item>consulta la <url name="la lista dei pacchetti sui quali si lavora" id="http://www.debian.org/devel/wnpp/being_packaged">
280 per vedere se qualcun altro sta lavorando sullo stesso pacchetto.
281 Se così fosse, contatta il maintainer corrente se pensi che occorra.
282 Altrimenti - trova un altro programma interessante che nessuno
283 ha in mantenimento.
284 </item>
285
286 <item>il programma <strong>deve</strong> avere una licenza,
287 se possibile free, in accordo con le
288 <url name="Linee Guida per il Software Libero Debian" id="http://www.debian.org/social_contract.html#guidelines">.
289 Se non è conforme a qualcuna di tali regole, ma può comunque
290 essere distribuito, può ancora essere incluso nelle sezioni
291 `contrib' o `non-free'..
292 Se non sei sicuro di dove debba essere incluso chiedi un suggerimento
293 su <email/debian-legal@lists.debian.org/.
294 </item>
295
296 <item>il programma in questione certamente <strong>non</strong>
297 dovrebbe girare come setuid root, o anche meglio, non dovrebbe richiedere di essere
298 setuid o setgid a nessun utente.</item>
299
300 <item>il programma non dovrebbe essere un daemon, o qualcosa che
301 debba essere installato nelle directory */sbin, o aprire una porta
302 come root.
303 </item>
304
305 <item>il programma dovrebbe essere in forma di binario eseguibile,
306 le librerie sono più difficili da gestire.
307 </item>
308
309 <item>dovrebbe essere ben documentato, o almeno comprensibile (cioè
310 non confuso).
311 </item>
312
313 <item>dovresti contattare l'autore o gli autori del programma per
314 controllare che siano d'accordo con la sua pacchettizzazione.
315 È importante essere in grado di consultarsi con l'autore/i sul
316 programma nel caso di problemi specifici del programma, per cui
317 non provare a pacchettizzare prodotti software non in manutenzione.
318 </item>
319
320 <item>infine, cosa non meno importante, dovresti essere sicuro che
321 il programma funziona e averlo provato per un po'.
322 </item>
323 </list>
324
325 <p>
326 Ovviamente queste cose sono solo misure di sicurezza, intese per
327 salvarti dall'ira degli utenti se fai qualcosa di sbagliato in
328 qualche daemon setuid...
329 Una volta acquisita qualche esperienza nella pacchettizzazione, sarai
330 anche in grado di creare quel tipo di pacchetti, ma anche lo
331 sviluppatore più esperto consulta la mailing list debian-devel quando
332 ha qualche dubbio. E i partecipanti saranno lieti di darti una mano.
333
334 <p>Per maggiori informazioni su queste cose, consulta la Guida di
335 Riferimento per lo Sviluppatore.
336
337 <sect id="getit">Prendi il programma e provalo
338
339 <p>La prima cosa da fare è trovare e scaricare il pacchetto originale.
340 Sto supponendo che tu abbia già i file dei sorgenti recuperati dalla
341 homepage dell'autore. I sorgenti per programmi free Linux sono
342 generalmente in formato tar/gzip,
343 con estensione .tar.gz, contengono
344 una subdirectory dal nome programma-versione e tutti i sorgenti sotto
345 di essa. Se il sorgente è in qualche altro formato di archiviazione
346 (per esempio, il nome del file finisce in ".Z" o ".zip") scompattalo
347 con i programmi appropriati, o chiedi a un esperto Debian se non sei
348 sicuro su come scompattarlo correttamente (suggerimento: usa il comando
349 `file archivio.estensione').
350
351 <p>A titolo di esempio, utilizzerò un programma dal nome `gentoo',
352 un file manager per X basato su GTK+. Osserva che il programma in
353 questione è già pacchettizzato ed ha subito sostanziali modifiche
354 dal momento in cui questo testo è stato inizialmente scritto.
355
356 <p>Crea una sottodirectory nella tua home dal nome `debian' o `deb'
357 o un altro nome che ritieni appropriato (per es. anche ~/gentoo/
358 sarebbe adatto in questo caso). Sposta l'archivio scaricato in essa
359 e scompattalo (con `tar xzf gentoo-0.9.12.tar.gz'). Assicurati che
360 non ci siano errori, anche qualcuno "irrilevante," perché potrebbe
361 probabilmente dare problemi di spacchettamento sul sistema di altri,
362 i cui programmi di scompattazione potrebbero o meno ignorare tali
363 anomalie.
364
365 <p>A questo punto hai un'altra sottodirectory, dal nome
366 `gentoo-0.9.12'. Spostati sotto tale directory e leggi
367 <strong>approfonditamente</strong> la documentazione fornita.
368 Generalmente ci sono file come README*, INSTALL*, *.lsm o *.html.
369 Devi trovare le istruzioni su come compilare correttamente e
370 installare il programma (molto probabilmente, si assume che tu voglia
371 installare sotto /usr/local/bin; non lo farai, ma trovi altro su
372 questo argomento più in là in <ref id="destdir">).
373
374 <p>La procedura cambia da programma a programma, ma molti dei
375 programmi più recenti hanno uno script `configure' che configura
376 i sorgenti sotto il tuo sistema e ti assicura che il sistema sia
377 nella condizioni di compilarli. Dopo la configurazione (con
378 il comando `./configure'), i programmi sono generalmente compilati
379 con `make'. Alcuni supportano il comando `make check' per lanciare
380 dei controlli automatici inclusi. L'installazione nelle directory
381 destinazione viene generalmente fatta con `make install'.
382
383 <p>Adesso prova a compilare ed eseguire il programma, per essere sicuro
384 che lavori correttamente e niente sia andato male durante
385 l'installazione o l'esecuzione.
386
387 <p>Puoi anche lanciare generalmente `make clean' per rimuovere i
388 file installati (o meglio ancora `make distclean') per
389 ripulire la directory di compilazione. Talvolta c'e' anche un
390 `make uninstall` che può essere usato per rimuovere tutti
391 i file installati.
392
393 <sect id="namever">Nome del pacchetto e versione
394
395 <p>Dovresti iniziare la pacchettizzazione con una directory di
396 sorgenti completamente ripulita, o semplicemente partendo da una
397 nuova scompattazione dei sorgenti.
398
399 <p>Per costruire correttamente il pacchetto, dovresti modificare il nome
400 del programma originale in minuscolo (se già non lo fosse), e
401 rinominare la directory in &lt;pacchetto&gt;-&lt;versione&gt;.
402
403 <p>Se il nome del programma consiste di più di una parola, contrailo
404 in una sola parola, o fanne una abbreviazione. Per esempio, il
405 pacchetto del programma "John's little editor for X" potrebbe essere
406 chiamato johnledx o jle4x, o qualsiasi altra cosa tu decida in modo
407 da stare sotto un numero ragionevole di caratteri, per esempio 20.
408
409 <p>Controlla anche l'esatta versione del programma (che deve
410 essere inclusa nella versione del pacchetto). Se il programma non è
411 numerato con versioni quali X.Y.Z, ma con qualche tipo di data, sei
412 libero di utilizzare tale data come numero di versione, con un
413 prefisso "0.0." (giusto nel caso in cui un upstream, un giorno, decida
414 di rilasciare una versione più comoda come "1.0"). Così se la data
415 di rilascio fosse il 19 Dicembre 1998, potresti usare la stringa
416 di versione 0.0.19981219.
417
418 <p>Alcuni programmi non hanno affatto una
419 numerazione, nel qual caso dovresti contattare l'upstream maintainer,
420 per vedere se viene usato qualche altro metodo di revisione.
421
422 <sect id="dh_make">La "debianizzazione" iniziale
423
424 <p>Assicurati di trovarti nella directory dei sorgenti del programma
425 e lancia il comando seguente:
426
427 <p><example>
428 dh_make -e tuo.maintainer@indirizzo -f ../gentoo-0.9.12.tar.gz
429 </example>
430
431 <p>Ovviamente, sostituisci alla stringa "tuo.maintainer@indirizzo" il tuo
432 indirizzo e-mail da includere come voce del changelog e in altri
433 file, e al nome del file il nome originale dell'archivio dei sorgenti.
434 Vedi <manref name="dh_make" section="1"> per dettagli.
435
436 <p>Verranno visualizzate alcune informazioni. Ti verrà chiesto che
437 genere di pacchetto vuoi creare. Gentoo è un singolo pacchetto binario
438 - crea un solo binario, e perciò un solo file .deb - per cui
439 selezionerai la prima opzione con il tasto `s', e controllerai le
440 informazioni sullo schermo, confermando la scelta con &lt;invio&gt;.
441
442 <p>Ancora una volta, come nuovo maintainer non sei incoraggiato a
443 creare pacchetti con
444 binari multipli o librerie, come spiegato prima. Non è difficile,
445 ma richiede un po' di conoscenze ulteriori, per
446 cui non descriveremo tutto questo nel seguito.
447
448 <p>Osserva che dovresti lanciare dh_make <strong>una sola volta</strong>,
449 perché non avrebbe un comportamento corretto se lo eseguissi nuovamente
450 nella stessa directory già "debianizzata". Questo significa anche che
451 userai un metodo diverso per rilasciare una nuova revisione o una
452 nuova versione del tuo pacchetto, in futuro. Leggi altro in merito più
453 oltre in <ref id="update">
454
455 <chapt id="modify">Modificare i sorgenti
456
457 <p>Normalmente, i programmi si auto-installano in sottodirectory di /usr/local
458 I pacchetti Debian invece non usano quella directory, dal momento che
459 è riservata agli amministratori (o utenti) del sistema per uso
460 privato. Questo significa che dovrai dare una occhiata al sistema
461 di compilazione del programma, partendo generalmente dal Makefile.
462 Questo script sarà utilizzato da <manref name="make" section="1"> per
463 creare automaticamente il programma. Per maggiori dettagli sui
464 Makefile dai una occhiata a <ref id="rules">.
465
466 <p>Osserva che se il tuo programma utilizza l'utilità GNU
467 <manref name="automake" section="1">
468 e/o <manref name="autoconf" section="1">, questo significa che i
469 sorgenti includono un Makefile.am e/o Makefile.in rispettivamente, e
470 avrai bisogno di modificare questi ultimi file, poiché ogni esecuzione
471 di automake provoca la riscrittura di Makefile.in con informazioni
472 generate a partire dal suo file Makefile.am, e ogni esecuzione di
473 ./configure farà lo stesso con il corrispondente Makefile, con i dati
474 ricavati dal file Makefile.in. Modificare i file Makefile.am richiede
475 qualche conoscenza di automake - del quale puoi leggere la relativa
476 documentazione in formato info - mentre modificare
477 Makefile.in è molto simile a
478 modificare i Makefile, in più ponendo attenzione alle
479 variabili, ovvero qualsiasi stringa di caratteri compresa fra `@',
480 come ad esempio @CFLAGS@ or @LN_S@, che viene sostituita con
481 l'effettivo valore ad ogni invocazione di ./configure.
482
483 <p>Nota anche che in questo documento, non c'è spazio sufficiente
484 per entrare in tutti i dettagli di come fare le modifiche, ma di
485 seguito ecco alcuni problemi che spesso si incontrano.
486
487 <sect id="destdir">Installazione in una sotto-directory
488
489 <p>
490 La maggior parte dei programmi ha una qualche maniera di installarsi
491 in una struttura di directory pre-esistente del tuo sistema,
492 in modo che i binari vengano inclusi nel $PATH, e si possano trovare
493 le pagine di manuale e i programmi in locazioni comuni.
494 Tuttavia, se facessi questo, il programma sarebbe installato tra
495 ogni altra cosa già presente sul tuo sistema. Questo renderebbe
496 difficile per i programmi di pacchettizzazione capire quali file
497 appartengono al tuo pacchetto e quali no.
498
499 <p>Perciò dovrai fare qualcosa di diverso:
500 installa il programma in una sotto-directory temporanea
501 dalla quale dli strumenti di manutenzione costruiranno un pacchetto .deb
502 operativo. Ogni file contenuto in tale directory sarà installato
503 sul sistema dell'utente, quando questi installa il tuo pacchetto, la
504 sola differenza è che dpkg installerà i file a partire dalla radice.
505
506 <p>Questa directory temporanea è generalmente creata sotto la tua
507 directory debian/ nell'albero dei sorgenti spacchettato. Si chiama
508 generalmente <file>debian/tmp</file> oppure
509 <file>debian/nomepacchetto</file>.
510
511 <p>
512 Tieni a mente che anche se avrai bisogno che il programma venga installato
513 in debian/nomepacchetto, deve funzionare correttamente quando piazzato
514 nella radice, cioè quando viene installato a partire dal pacchetto .deb.
515 Così, non dovrai consentire che il sistema di compilazione inserisca
516 stringhe come
517 <tt>/home/me/deb/gentoo-0.9.12/usr/share/gentoo</tt> nei file
518 del pacchetto.
519
520 Con programmi che
521 usano GNU autoconf, questo è piuttosto semplice,
522 La maggior parte di questi programmi hanno makefile che sono creati
523 per default per consentire installazioni in directory casuali,
524 sebbene mantengano /usr (ad esempio) come prefisso canonico.
525 Quando si accorgerà che il programma usa autoconf, dh_make
526 fornirà i comandi per fare tutto questo automaticamente, per cui
527 potresti saltare la lettura di questa sezione. Invece con altri
528 programmi, dovrai probabilmente esaminare e modificare i Makefile.
529
530 <p>Questa è la parte rilevante del Makefile di gentoo:
531
532 <p><example>
533 # Where to put binary on 'make install'?
534 BIN = /usr/local/bin
535
536 # Where to put icons on 'make install'?
537 ICONS = /usr/local/share/gentoo/
538 </example>
539
540 <p>Osserva che il file sono configurati per installare sotto
541 <file>/usr/local</file>. Modifica questi percorsi in:
542
543 <p><example>
544 # Where to put binary on 'make install'?
545 BIN = $(DESTDIR)/usr/bin
546
547 # Where to put icons on 'make install'?
548 ICONS = $(DESTDIR)/usr/share/gentoo
549 </example>
550
551 <p>Ma perchè in quella directory, e non altrove? Perchè i pacchetti
552 Debian non installano mai file sotto <file>/usr/local</file> -- quella
553 gerarchia è riservata all'uso dell'amministratore di sistema.
554 Tali file in sistemi Debian vanno invece posti sotto <file>/usr</file>.
555
556 <p>Le locazioni più corrette per binari, icone, documentazione ecc. sono
557 specificate nello Standard per la Gerarchia del Filesystem
558 (vedi /usr/share/doc/debian-policy/fhs/). Ti raccomando di visionarlo
559 e leggere le sezioni che possono riguardare il tuo pacchetto.
560
561 <p>Così, dobbiamo installare i binari in /usr/bin invece di /usr/local/bin,
562 la pagina di manuale in /usr/share/man/man1 invece di /usr/local/man/man1, ecc.
563 Nota come non ci sia una pagina di manuale menzionata nel makefile
564 di gentoo, ma dal momento che la Policy Debian richiede che ogni programma
565 ne abbia una, ne faremo una più in là e la installeremo in /usr/share/man/man1.
566
567
568
569
570 <p>Ma perché in quella directory e non in qualche altra? Perchè Debian
571 ha definito alcune regole su dove i programmi devono essere
572 installati. Questo è specificato nello Standard della Gerarchia del
573 Filesystem (vedi /usr/share/doc/debian-policy/fhs/).
574 Così dovremmo installare il binario in /usr/X11R6/bin invece che
575 in /usr/local/bin e le pagine di manuale (non esistono in questo
576 caso, ma quasi ogni programma ne ha una, per cui ne faremo una dopo)
577 in /usr/share/man/man1 invece che in /usr/local/man/man1.
578
579 <p>Alcuni programmi non usano variabili di makefile per definire
580 percorsi come questi. Questo significa che potrai dover editare
581 alcuni sorgenti C allo scopo di correggerli per usare le locazioni
582 giuste. Ma dove e come cercarle? Puoi trovarle eseguendo:
583
584 <p><example>
585 grep -rn usr/local/lib *.[ch]
586 </example>
587
588 <p>Grep eseguirà ricorsivamente sull'albero dei sorgenti e ti dirà
589 il nome di un file e la riga in esso quando trova una occorrenza.
590
591 <p>Edita questi file e in quelle righe sostituisci /usr/local/* con
592 usr/* -- e questo e tutto. Fa attenzione a non sconvolgere il resto
593 del codice! :-)
594
595 <p>Dopo di questo, dovresti trovare il target install (cerca la riga
596 che inizia con `install:') e rinomina tutti i riferimenti a directory
597 diverse da quelle definite all'inizio del Makefile. In precedenza,
598 il target install di gentoo diceva:
599
600 <p><example>
601 install: gentoo
602 install ./gentoo $(BIN)
603 install icons $(ICONS)
604 install gentoorc-example $(HOME)/.gentoorc
605 </example>
606
607 <p>Dopo la modifica invece:
608 <example>
609 install: gentoo-target
610 install -d $(BIN) $(ICONS) $(DESTDIR)/etc
611 install ./gentoo $(BIN)
612 install -m644 icons/* $(ICONS)
613 install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
614 </example>
615
616 <p>Avrai sicuramente notato che c'è adesso un comando
617 <tt>install -d</tt> prima degli altri nella regola. Il makefile
618 originale non ce l'ha perchè generalmente /usr/local/bin e le
619 altre directory già esistono sul sistema su cui si lancia
620 `make install`. Tuttavia, dal momento che installeremo nella nostra
621 directory vuota (o anche inesistente), dovremo creare ogni singola
622 directory.
623
624 <p>Possiamo anche aggiungere altre cose alla fine della regola, come
625 l'installazione di documentazione che l'autore upstream talvolta
626 omette:
627
628 <p><example>
629 install -d $(DESTDIR)/usr/share/doc/gentoo/html
630 cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
631 </example>
632
633 <p>Se sei un lettore attento, avrai notato che ho modificato `gentoo' in
634 `gentoo-target' nella riga `install:'. Questo è quello che si
635 definisce un bug fix :-)
636
637 <p>Qualora effettuassi delle modifiche che non sono specificatamente
638 legate alla pacchettizzazione Debian, assicurati di inviarle
639 all'upstream maintainer, in modo che possa includerle nella prossima
640 revisione del programma e possano essere utili ad ogni altro.
641 Ricorda anche di rendere i tuoi fix non specifici per Debian o Linux
642 (o anche Unix!) prima di inviarli -- rendili portabili. Questo
643 renderà la tua correzione molto più semplice da applicare.
644
645 <sect id="difflibs">Distinguere le librerie
646
647 <p>C'è un altro problema comune: le librerie sono spesso diverse
648 da piattaforma a piattaforma. Per esempio, il Makefile può contenere
649 un riferimento a una libreria che non esiste in sistemi Debian.
650 In tal caso occorre modificarlo in una libreria che esiste
651 in Debian, e serva allo stesso scopo.
652
653 <p>Così, se c'è una riga nel Makefile del programma (o nel
654 Makefile.in) che dice qualcosa del tipo (e il programma non compila):
655
656 <p><example>
657 LIBS = -lcurses -lsomething -lsomethingelse
658 </example>
659
660 <p>Modificala come segue, e molto probabilmente funzionerà:
661 <p><example>
662 LIBS = -lncurses -lsomething -lsomethingelse
663 #LIBS = -lcurses -lsomething -lsomethingelse
664 </example>
665
666 <p>(L'autore si rende conto che questo non è il migliore esempio considerato
667 che il nostro pacchetto libncurses adesso è distribuito con un link
668 simbolico libcurses.so, ma non gliene veniva uno migliore. Suggerimenti
669 sono benvenuti :-)
670
671 <chapt id="dreq">Materiale richiesto sotto debian/
672
673 <p>C'è adesso una nuova sotto-directory nella directory principale
674 del programma (`gentoo-0.9.12'), il cui nome è `debian'. Ci sono un certo
675 numero di file in questa directory che dovremo modificare allo scopo
676 di adattare il comportamento del pacchetto. I più importati fra loro
677 sono `control', `changelog', `copyright' e 'rules',
678 che sono richiesti per tutti i pacchetti.
679
680 <sect id="control">Il file `control'
681
682 <p>Questo file contiene vari valori che <prgn/dpkg/, <prgn/dselect/ e
683 altri pacchetti useranno per la gestione del pacchetto.
684
685 <p>Questo è il file control che dh_make crea per noi.
686
687 <p><example>
688 1 Source: gentoo
689 2 Section: unknown
690 3 Priority: optional
691 4 Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
692 5 Build-Depends: debhelper (>> 3.0.0)
693 6 Standards-Version: 3.5.2
694 7
695 8 Package: gentoo
696 9 Architecture: any
697 10 Depends: ${shlibs:Depends}
698 11 Description: &lt;insert up to 60 chars description&gt;
699 12 &lt;insert long description, indented with spaces&gt;
700 </example>
701 (I numeri di riga sono aggiunti).
702
703 <p>Le righe 1-6 sono le informazioni di controllo per il pacchetto
704 sorgente.
705
706 <p>La riga 1 è il nome del pacchetto sorgente.
707
708 <p>La riga 2 è la sezione della distribuzione in cui il pacchetto è
709 incluso.
710
711 <p>Come ti sarai reso conto, Debian è diviso in sezioni: main
712 (il software free), non-free (il software non esattamente free)
713 e contrib (software free che dipende da software non free). Al di
714 sotto di queste ci sono delle sotto-sezioni logiche che descrivono
715 in breve di che genere di pacchetto si tratta. Così abbiamo `admin'
716 per programmi da amministratore, `base' per gli strumenti di base, `devel'
717 per gli strumenti per programmatori, `doc' per la documentazione, `libs' per
718 le librerie, `mail' per programmi e demoni di posta elettronica, `net'
719 per applicazioni e demoni di rete, `x11' per programmi specifici per
720 X11, e molte altre.
721
722 <p>Modifichiamo quindi la sezione in x11. (Un prefisso "main/" è implicito
723 per cui lo omettiamo.)
724
725 <p>La riga 3 descrive quanto sia importante che l'utente installi tale
726 pacchetto.
727 Leggi il manuale della Policy per una guida su come configurare questi
728 campi. La priorità "optional" generalmente funzionerà per nuovi pacchetti.
729
730 <p>Sezioni e priorità sono usati effettivamente solo da <prgn/dselect/
731 dselect quando ordina i pacchetti e seleziona i default. Una volta
732 caricato il pacchetto in Debian, il valore di questi due campi possono
733 essere modificati dai maintainer dell'archivio FTP, nel qual caso
734 ne sarai informato via email.
735
736 <p>Dal momento che si tratta di un pacchetto a priorità normale,
737 lasciamo il campo al valore "optional".
738
739 <p>La riga 4 è nome e e-mail del maintainer. Assicurati che
740 questo campo contenga un campo "To: " valido per una email, perché
741 dopo averlo caricato il sistema di tracciamento delle anomalie lo
742 userà per inviarti le email relativi a errori. Evita l'uso di virgole,
743 '&' e parentesi.
744
745 <p>La riga 5 è la versione degli standard di Debian Policy che questo
746 pacchetto segue, la versione del manuale di Policy che leggi mentre
747 costruisci i pacchetti.
748
749 <p>La sesta riga include la lista dei pacchetti richiesti per creare
750 il tuo pacchetto. Alcuni pacchetti come gcc e make sono impliciti,
751 vedi il pacchetto <package/build-essential/ per dettagli.
752 Se qualche compilatore non standard o altri strumenti sono necessari
753 per compilare il tuo pacchetto, dovresti aggiungerlo alla riga
754 `Build-Depends'. Valori multipli sono separati con virgole; leggi
755 più avanti la spiegazione delle dipendenze binarie per saperne
756 di più della sintassi di questo campo.
757
758 <p>Qui puoi anche avere Build-Depends-Indep, Build-Conflicts e altri campi.
759 Questi dati saranno usati dal software di costruzione automatica
760 dei pacchetti per creare pacchetti binari per altre piattaforme
761 di computer. Vedi il manuale della Policy per altre informazioni sulle
762 build-dependencies e la Guida di Riferimento dello Sviluppatore per
763 informazioni su tali piattaforme (architetture) e come portare il
764 software su di esse.
765
766 <p>Ecco un trucco che puoi usare per trovare quali pacchetti il tuo
767 pacchetto richiede per la creazione:
768 <example>
769 strace -f -o /tmp/log ./configure
770 # o make invece di ./configure, se il pacchetto non usa autoconf
771 for x in `dpkg -S $(grep open /tmp/log|perl -pe 's!.* open\(\"([^\"]*).*!$1!'|grep "^/"| sort | uniq| grep -v "^\(/tmp\|/dev\|/proc\)" ) 2>/dev/null|cut -f1 -d":"| sort | uniq`; do echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 -d":"` "), "; done
772 </example>
773
774 <p>Gentoo sembra richiedere <package/xlibs-dev/,
775 <package/libgtk1.2-dev/ e <package/libglib1.2-dev/ per compilare,
776 per cui li aggiungiamo dopo <package/debhelper/.
777
778 <p>La riga 8 è il nome del pacchetto binario. Questo è generalmente lo
779 stesso nome del sorgente, ma non deve necessariamente essere così.
780
781 <p>La riga 9 descrive l'architettura di CPU per la quale il pacchetto
782 binario è stato compilato. Possiamo lasciare il valore "any" perché
783 <manref name="dpkg-gencontrol" section="1"> lo riempirà con il valore
784 appropriato per qualsiasi macchina sulla quale questo pacchetto è
785 stato compilato.
786
787 <p>Se il tuo
788 pacchetto è indipendente dalla architettura (per esempio, uno script
789 di shell o Perl, o un documento) modifica questo campo in "all", e
790 leggi oltre in <ref id="rules"> sull'uso del metodo `binary-indep'
791 invece di `binary-arch' per costruire un pacchetto.
792
793 <p>La riga 10 mostra una della più potenti caratteristiche del sistema
794 di pacchettizzazione Debian. I pacchetti possono far riferimento
795 l'uno all'altro in vari modi. Oltre a Depends:, altri campi di
796 relazione sono Recommends:, Suggests:, Pre-Depends:, Conflicts:,
797 Provides:, e Replaces:.
798
799 <p>Gli strumenti di gestione dei pacchetti generalmente si comportano
800 nello stesso modo quando trattano queste relazioni; se così non è, viene spiegato.
801 (vedi <manref name="dpkg" section="8">, <manref name="dselect" section="8">,
802 <manref name="apt" section="8">, <manref name="aptitude" section="1"> ecc.)
803
804 <p>Questo è ciò che le dipendenze significano:
805
806 <p><list>
807 <item>Depends:
808 <p>Il pacchetto non sarà installato sino a quando i pacchetti da cui
809 dipende non lo sono. Usa questo valore se il tuo programma non funziona
810 affatto (o causa un serio malfunzionamento) quando un pacchetto
811 particolare non è già presente.</item>
812
813 <item>Recommends:
814 <p>Alcuni frontend come dselect o aptitude ti chiederanno di installare
815 i pacchetti raccomandati, insieme al tuo pacchetto; dselect insisterà
816 nel volerlo fare. Dpkg e apt-get invece, ingnorano questo campo.
817 Usa questo valore per pacchetti che non sono strettamente
818 necessari, ma tipicamente usati con il tuo programma.</item>
819
820 <item>Suggests:
821 <p>Quando un utente installa il tuo programma, tutti i frontend
822 chiedono verosimilmente se devono
823 installare i pacchetti suggeriti. Dpkg e apt-get non se ne curano
824 Usa questo valore per pacchetti che lavorano insieme al tuo
825 programma, ma non sono affatto necessari. </item>
826
827 <item>Pre-Depends:
828 <p>Questo è più stringente di Depends:. Il pacchetto non sarà
829 installato a meno che i pacchetti da cui pre-dipende non siano
830 installati e <em>correttamente configurati</em>. Usa questo valore
831 con <strong>molta</strong> prudenza, e solo dopo averne discusso
832 nella mailing list debian-devel. Leggi: non usarlo affatto. :-)</item>
833
834 <item>Conflicts:
835 <p>Il pacchetto non sarà installato sino a quando tutti i pacchetti
836 con i quali va in conflitto non saranno stati rimossi.
837 Usa questo valore se il tuo programma assolutamente non può girare
838 (o causa un serio danno) se un particolare pacchetto è presente.</item>
839
840 <item>Provides:
841 <p>Per alcuni tipi di pacchetti dove ci sono alternative multiple
842 sono stati definiti dei nomi virtuali. Puoi trovarne una lista
843 completa nel file
844 /usr/share/doc/debian-policy/virtual-package-names-list.text.gz.
845 Usa questo valore se il tuo programma fornisce una funzione di un
846 pacchetto virtuale esistente .</item>
847
848 <item>Replaces:
849 <p>Usa questo valore quando il tuo programma sostituisce i file
850 di un altro pacchetto o sostituisce completamente un altro pacchetto
851 (usato congiuntamente a Conflicts:). I file dei suddetti pacchetti
852 saranno sostituiti con i file del tuo pacchetto.
853 </item>
854 </list>
855
856 <p>Tutti questi campi hanno una sintassi uniforme. Sono una lista di
857 nomi di pacchetti separati da virgole. Questi nomi di pacchetti
858 possono anche essere liste di nomi di pacchetti alternativi, separati
859 da una barra verticale <tt>|</tt> (simbolo di pipe).
860
861 <p>Questi campi
862 possono restringere la propria applicabilità a una particolare
863 versione di ciascun pacchetto. Tali versioni sono elencate in
864 parentesi dopo ogni nome di pacchetto, e dovrebbero contenere una
865 relazione fra le possibili qui in elenco, seguita da un numero di
866 versione. Le relazioni consentite sono: <tt>&lt;&lt;</tt>,
867 <tt>&lt;=</tt>, <tt>=</tt>, <tt>&gt;=</tt> e
868 <tt>&gt;&gt;</tt> che stanno per strettamente precedente, precedente
869 o uguale, esattamente uguale, successiva o uguale, e strettamente
870 successiva, rispettivamente. Per esempio,
871
872 <p><example>
873 Depends: foo (>= 1.2), libbar1 (= 1.3.4)
874 Conflicts: baz
875 Recommends: libbaz4 (>> 4.0.7)
876 Suggests: quux
877 Replaces: quux (<< 5), quux-foo (<= 7.6)
878 </example>
879
880 <p>L'ultima caratteristica che hai necessità di conoscere è
881 $(shlibs:Depends). Dopo che il tuo pacchetto sarà stato generato
882 e installato nella directory temporanea,
883 <manref name="dh_shlibdeps" section="1"> lo esaminerà alla ricerca
884 di binari e librerie, determinerà le dipendenze da librerie condivise
885 e stabilirà in quali pacchetti queste si trovano, come libc6 o xlib6g.
886 Questo programma passerà la lista a <manref name="dh_gencontrol" section="1">
887 che li metterà al posto giusto, e tu non dovrai preoccuparti di specificarle
888 da solo.
889
890 <p>Detto ciò possiamo lasciare la riga Depends: come è ora, e inserire
891 un'altra riga dopo questa che dice <tt>Suggests: file</tt>,
892 perchè gentoo può usare alcune funzionalità offerte da quel
893 programma/pachetto.
894
895 <p>La riga 12 è una breve descrizione. Gli schermi di molte persone
896 sono larghi 80 colonne, per cui non dovrebbe essere di più di 60
897 caratteri. Modificherai tale campo in "A fully GUI configurable X file
898 manager using GTK+".
899
900 <p>La riga 13 contiene una descrizione estesa. Dovrebbe essere un
901 paragrafo dove vengono dati più dettagli sul pacchetto. La colonna 1
902 di ogni riga dovrebbe essere vuota. Non ci devono essere righe
903 vuote in mezzo, ma puoi mettere un . (punto) in una colonna, per simularle.
904 Inoltre, non ci deve essere più di una riga vuota dopo la descrizione.
905
906 <p>Questo è il file control aggiornato:
907
908 <p><example>
909 1 Source: gentoo
910 2 Section: x11
911 3 Priority: optional
912 4 Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
913 5 Build-Depends: debhelper (>> 3.0.0), xlibs-dev, libgtk1.2-dev, libglib1.2-dev
914 6 Standards-Version: 3.5.2
915 7
916 8 Package: gentoo
917 9 Architecture: any
918 10 Depends: ${shlibs:Depends}
919 11 Suggests: file
920 12 Description: A fully GUI configurable GTK+ file manager
921 13 gentoo is a file manager for Linux written from scratch in pure C. It
922 14 uses the GTK+ toolkit for all of its interface needs. gentoo provides
923 15 100% GUI configurability; no need to edit config files by hand and re-
924 16 start the program. gentoo supports identifying the type of various
925 17 files (using extension, regular expressions, or the 'file' command),
926 18 and can display files of different types with different colors and icons.
927 19 .
928 20 gentoo borrows some of its look and feel from the classic Amiga file
929 21 manager "Directory OPUS" (written by Jonathan Potter).
930 </example>
931 (Ho aggiunto i numeri di riga.)
932
933 <sect id="copyright">Il file `copyright'
934
935 <p>Questo file contiene le informazioni sui riferimenti, copyright
936 e licenza del pacchetto upstream. Il suo formato non è dettato dalla
937 Policy, ma i contenuti lo sono (sezioni 13.6 "Informazioni di Copyright").
938
939 <p>dh_make ne ha creato uno di default, quello di seguito:
940
941 <p><example>
942 1 This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&gt; on
943 2 Wed, 11 Nov 1998 21:02:14 +0100.
944 3
945 4 It was downloaded from &lt;fill in ftp site&gt;
946 5
947 6 Upstream Author(s): &lt;put author(s) name and email here&gt;
948 7
949 8 Copyright:
950 9
951 10 &lt;Must follow here&gt;
952 </example>
953 (Ho aggiunto i numeri di riga.)
954
955 <p>Le cose importanti da aggiungere a questo file sono l'indirizzo
956 da cui il pacchetto è stato preso e l'effettiva nota di copyright e
957 licenza. Devi includere la licenza completa, a meno che non sia una delle
958 comuni licenze di free software, come la GNU GPL o LGPL, la BSD o
959 l'Artistic, nel quale caso puoi semplicemente fare riferimento
960 all'opportuno file in /usr/share/common-licenses/ che esiste su tutti
961 i sistemi Debian.
962
963 <p>In breve, ecco come il file copyright di gentoo appare:
964
965 <p><example>
966 1 This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&gt; on
967 2 Wed, 11 Nov 1998 21:02:14 +0100.
968 3
969 4 It was downloaded from: ftp://ftp.obsession.se/gentoo/
970 5
971 6 Upstream author: Emil Brink &lt;emil@obsession.se&gt;
972 7
973 8 This software is copyright (c) 1998-99 by Emil Brink, Obsession
974 9 Development.
975 10
976 11 You are free to distribute this software under the terms of
977 12 the GNU General Public License.
978 13 On Debian systems, the complete text of the GNU General Public
979 14 License can be found in /usr/share/common-licenses/GPL file.
980 </example>
981 (Ho aggiunto i numeri di riga.)
982
983 <sect id="changelog">Il file `changelog'
984
985 <p>Questo è un file obbligatorio, che ha un formato speciale descritto
986 nella Policy alla sezione 5.3 "debian/changelog".
987 Tale formato è usato da dpkg e
988 altri programmi per ricavare il numero di versione, revisione,
989 distribuzione e livello di urgenza del tuo pacchetto.
990
991 <p>Per te è ugualmente importante dal momento che è una buona
992 cosa aver documentato tutte le modifiche apportate. Questo aiuterà
993 chi scarica il tuo pacchetto a vedere velocemente se ci sono problemi
994 non risolti con il pacchetto, che dovrebbe sapere. Sarà salvato come
995 `/usr/share/doc/gentoo/changelog.Debian.gz' nel pacchetto binario.
996
997 <p>dh_make ne crea uno di default, che appare così:
998
999 <p><example>
1000 1 gentoo (0.9.12-1) unstable; urgency=low
1001 2
1002 3 * Initial Release.
1003 4
1004 5 -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
1005 6
1006 7 Local variables:
1007 8 mode: debian-changelog
1008 9 End:
1009 </example>
1010 (Ho aggiunto i numeri di riga.)
1011
1012 <p>La riga 1 è il nome del pacchetto, versione, distribuzione e
1013 livello di urgenza. Il nome deve corrispondere al nome del pacchetto
1014 sorgente, la distribuzione dovrebbe essere `unstable' o `experimental'
1015 (per ora), e il livello non dovrebbe essere modificato in qualcosa
1016 maggiore di `low'. :-).
1017
1018 <p>Le righe 3-5 sono voci di log, dove documenti le modifiche fatte
1019 nella revisione del pacchetto (non le modifiche di upstream - c'è un
1020 file speciale a tale scopo, creato dall'autore di upstream, installato
1021 come /usr/share/doc/gentoo/changelog.gz). Le nuove righe devono essere
1022 inserite prima della riga più in alto, che inizia con un asterisco
1023 (`*'). Puoi farlo con <manref name="dch" section="1">, <manref
1024 name="emacs" section="1"> o a mano con un editor di testo.
1025
1026 <p>Devi metterci qualcosa di questo genere:
1027
1028 <p><example>
1029 1 gentoo (0.9.12-1) unstable; urgency=low
1030 2
1031 3 * Initial Release.
1032 4 * This is my first Debian package.
1033 5 * Adjusted the Makefile to fix $DESTDIR problems.
1034 6
1035 7 -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
1036 8
1037 </example>
1038 (Ho aggiunto i numeri di riga.)
1039
1040 <p>Puoi leggere altro sull'aggiornamento del file changelog più oltre
1041 in <ref id="update">.
1042
1043 <sect id="rules">Il file `rules'
1044
1045 <p>Ora occorre dare una occhiata alle regole esatte che
1046 <manref name="dpkg-buildpackage" section="1"> userà per creare
1047 effettivamente il pacchetto. Questo file è in effetti un altro
1048 Makefile, ma diverso da quello dei sorgenti upstream.
1049 Diversamente da altri file in debian/, questo è marcato come
1050 eseguibile.
1051
1052 <p>Tutti i file `rules', come ogni Makefile, consistono di diverse
1053 regole che specificano come gestire i sorgenti. Ogni regola consiste
1054 di target e nomi di file o nomi di azione che devono essere intraprese
1055 (per es. `build:' o `install:'.) Le regole che tu vuoi siano eseguite
1056 sono invocate come argomenti a riga di comando (per esempio,
1057 `./debian/rules build' o `make -f rules install'.) Dopo il nome del
1058 target, puoi fornire i nomi delle dipendenze, il programma o file da
1059 cui dipende quella regola. A seguire, ci può essere un qualsiasi
1060 numero di comandi (indentati con &lt;tab&gt;!), finché si trova
1061 una riga vuota. Da quel punto inizia un'altra regola. Righe vuote
1062 multiple e linee che iniziano con `#' (hash) sono trattate come
1063 commenti e ignorate
1064
1065 <p>Sarai probabilmente confuso ora, ma sarà tutto più chiaro dopo
1066 l'esame del file `rules' che dh_make fornisce come default. Dovresti
1067 anche leggere la voce `make' in info per maggiori informazioni.
1068
1069 <p>La cosa importante da capire, a proposito del file rules creato da dh_make,
1070 è che si tratta solo di un suggerimento. Funzionerà per semplici
1071 pacchetti, ma per i più complicati non avere remore nell'aggiungere o togliere
1072 qualcosa ad esso, per accomodarlo alle tue necessità. L'unica cosa che
1073 non devi modificare sono i nomi delle regole, perché gli strumenti usano tutti
1074 gli stessi nomi, come richiesto dalla Policy.
1075
1076 <p>Ecco (approssimativamente) come appare il file di default debian/rules
1077 che dh_make ha generato:
1078
1079 <p><example>
1080 1 #!/usr/bin/make -f
1081 2 # Sample debian/rules that uses debhelper.
1082 3 # GNU copyright 1997 to 1999 by Joey Hess.
1083 4
1084 5 # Uncomment this to turn on verbose mode.
1085 6 #export DH_VERBOSE=1
1086 7
1087 8 # This is the debhelper compatibility version to use.
1088 9 export DH_COMPAT=3
1089 10
1090 11 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
1091 12 CFLAGS += -g
1092 13 endif
1093 14 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
1094 15 INSTALL_PROGRAM += -s
1095 16 endif
1096 17
1097 18 build: build-stamp
1098 19 build-stamp:
1099 20 dh_testdir
1100 21
1101 22 # Add here commands to compile the package.
1102 23 $(MAKE)
1103 24 #/usr/bin/docbook-to-man debian/gentoo.sgml > gentoo.1
1104 25
1105 26 touch build-stamp
1106 27
1107 28 clean:
1108 29 dh_testdir
1109 30 dh_testroot
1110 31 rm -f build-stamp
1111 32
1112 33 # Add here commands to clean up after the build process.
1113 34 -$(MAKE) clean
1114 35
1115 36 dh_clean
1116 37
1117 38 install: build
1118 39 dh_testdir
1119 40 dh_testroot
1120 41 dh_clean -k
1121 42 dh_installdirs
1122 43
1123 44 # Add here commands to install the package into debian/gentoo.
1124 45 $(MAKE) install DESTDIR=$(CURDIR)/debian/gentoo
1125 46
1126 47 # Build architecture-independent files here.
1127 48 binary-indep: build install
1128 49 # We have nothing to do by default.
1129 50
1130 51 # Build architecture-dependent files here.
1131 52 binary-arch: build install
1132 53 dh_testdir
1133 54 dh_testroot
1134 55 # dh_installdebconf
1135 56 dh_installdocs
1136 57 dh_installexamples
1137 58 dh_installmenu
1138 59 # dh_installlogrotate
1139 60 # dh_installemacsen
1140 61 # dh_installpam
1141 62 # dh_installmime
1142 63 # dh_installinit
1143 64 dh_installcron
1144 65 dh_installman
1145 66 dh_installinfo
1146 67 # dh_undocumented
1147 68 dh_installchangelogs ChangeLog
1148 69 dh_link
1149 70 dh_strip
1150 71 dh_compress
1151 72 dh_fixperms
1152 73 # dh_makeshlibs
1153 74 dh_installdeb
1154 75 # dh_perl
1155 76 dh_shlibdeps
1156 77 dh_gencontrol
1157 78 dh_md5sums
1158 79 dh_builddeb
1159 80
1160 81 binary: binary-indep binary-arch
1161 82 .PHONY: build clean binary-indep binary-arch binary install
1162 </example>
1163 (Ho aggiunto i numeri di riga.)
1164
1165 <p>Hai probabilmente familiarità con righe come la prima, dagli
1166 script di shell e Perl. Essa dice al sistema operativo che questo file
1167 deve essere processato usando /usr/bin/make.
1168
1169 <p>Il senso delle variabili DH_* menzionate alle righe 6 e 9 dovrebbe
1170 essere evidente dalla breve descrizione. Per maggiori informazioni su
1171 DH_COMPAT leggi la sezione "livelli di compatibilità di Debhelper"
1172 della <manref name="debhelper" section="1">pagina di manuale.
1173
1174 <p>Le righe da 11 a 16 sono schemi di supporto per i parametri DEB_BUILD_OPTIONS,
1175 descritti nella sezione 11.1 "Binari" della Policy. Di base queste cose
1176 controllano se i binari sono creati con i simboli per il debugging,
1177 e se questi possono essere eliminati al momento della installazione.
1178 Di nuovo, si tratta solo di uno schema, un suggerimento che dovresti
1179 seguire. Dovresti controllare come il sistema di compilazione dell'upstream
1180 gestisce l'inclusione di simboli di debugging e la loro cancellazione
1181 in installazione e implementare il tutto tu stesso.
1182
1183 <p>Generalmente puoi dire al gcc di compilare con "-g" usando la
1184 variabile CFLAGS -- se questo è il caso del tuo pacchetto, propaga
1185 la variabile <em>aggiungendo</em> <tt>CFLAGS="$(CFLAGS)"</tt> alla
1186 chiamata $(MAKE) nella regola build (vedi oltre). In alternativa,
1187 se il tuo pacchetto usa uno script configure di autoconf, puoi passarlo
1188 a configure <em>premettendo</em> la suddetta stringa alla invocazione
1189 di ./configure nella regola di build.
1190
1191 <p>A proposito di stripping, i programmi sono configurati comunemente
1192 per essere installati non strippati, e spesso senza una opzione
1193 per modificare questa cosa. Fortunatamente,
1194 hai anche <manref name="dh_strip" section="1"> che controllerà se
1195 il flag DEB_BUILD_OPTIONS=nostrip è configurato e terminerà
1196 silenziosamente.
1197
1198 <p>Le righe dalla 18 alla 26 descrivono la regola `build' (e la figlia
1199 `build-stamp') che lanciano make con il Makefile proprio della
1200 applicazione per compilare il programma. Parleremo dell'esempio
1201 commentato docbook-to-man più avanti in <ref id="manpage">.
1202
1203 <p>La regola `clean', come specificata nelle righe 28-36, ripulisce
1204 ogni binario non necessario e file autogenerati, lasciati in giro
1205 dalla creazione del pacchetto. Questa regola deve lavorare tutte le
1206 volte (anche quando l'albero dei sorgenti <em/è/ già ripulito!),
1207 per cui usa le opzioni di forzatura (per es. per rm, è -f),
1208 oppure fai in modo che make ignori i
1209 valori di ritorno (errori) usando un `-' prima del nome del comando.
1210
1211 <p>Il processo di installazione, la regola `install', inizia a riga 38.
1212 Fondamentalmente lancia la regola `install' del Makefile del programma,
1213 ma installa nella directory <tt>$(CURDIR)/debian/gentoo</tt> -
1214 questo è il motivo per cui abbiamo
1215 specificato $(DESTDIR) come directory radice per l'installazione nel
1216 Makefile di gentoo.
1217
1218 <p>Come suggeriscono i commenti, la regola `binary-indep', alla riga
1219 48, è usata per costruire i pacchetti indipendenti dalla architettura.
1220 Dal momento che non ne abbiamo, non verrà fatto niente in questo caso.
1221
1222 <p>Fino alla prossima regola - `binary-arch', dalla riga 52 alla 79,
1223 lanciamo una serie di piccoli programmi di utilità dal pacchetto debhelper
1224 che svolgono varie operazioni sui file del tuo pacchetto per renderlo
1225 conforme alla Policy.
1226
1227 <p>Se il
1228 tuo pacchetto fosse del tipo `Architecture: all', avresti bisogno di
1229 includere tutti i comandi per costruire i pacchetti sotto la regola `binary-indep',
1230 e lasciare la regola `binary-arch' vuota, invece.
1231
1232 <p>I nomi dei programmi di debhelper iniziano con dh_, e il resto è
1233 la descrizione di cosa fa effettivamente il programma di utilità.
1234 È tutto abbastanza auto esplicativo, ma ecco
1235 qualche spiegazione addizionale:
1236
1237 <list>
1238 <item><manref name="dh_testdir" section="1"> controlla di trovarsi
1239 nella giusta directory (cioè la directory superiore dei
1240 sorgenti),
1241 <item><manref name="dh_testroot" section="1"> controlla che tu abbia
1242 i privilegi di root che sono necessari per i target `binary-arch',
1243 `binary-indep' e 'clean',
1244 <item><manref name="dh_installman" section="1">
1245 copia tutte le pagine di man al posto giusto nella directory
1246 destinazione, devi solo dirgli dove sono relativamente alla
1247 directory superiore dei sorgenti,
1248 <item><manref name="dh_strip" section="1">
1249 elimina le intestazioni per il debugging dagli eseguibili e
1250 librerie, per renderli più piccoli,
1251 <item><manref name="dh_compress" section="1"> comprime pagine di
1252 man e documentazioni più grandi di 4kB con <manref name="gzip" section="1">,
1253 <item><manref name="dh_installdeb" section="1"> copia i file legati
1254 al pacchetto (per es. gli script da maintainer) sotto la
1255 directory <file>debian/gentoo/DEBIAN</file>,
1256 <item><manref name="dh_shlibdeps" section="1"> calcola le dipendenze
1257 da librerie condivise di librerie ed eseguibili,
1258 <item><manref name="dh_gencontrol" section="1"> installa una versione
1259 modificata del file di controllo in <file>debian/gentoo/DEBIAN</file>,
1260 <item><manref name="dh_md5sums" section="1"> genera i codici di
1261 controllo MD5 per tutti i file del pacchetto.
1262 </list>
1263
1264 <p>Per informazioni più complete su cosa fanno tutti questi script
1265 dh_*, e quali sono le loro altre opzioni, leggi le rispettive pagine di
1266 manuale. Ci sono alcuni altri, alle volte utili, script dh_*, che non
1267 sono menzionati qui. Se ne avessi bisogno, leggi la documentazione
1268 di debhelper.
1269
1270 <p>La sezione binary-arch è quella dove dovresti effettivamente
1271 commentare qualsiasi riga che richiama funzionalità che non occorrono.
1272 Per gentoo, commenterò tutte le righe su examples, cron, init, man and info,
1273 semplicemente perché
1274 gentoo non le richiede. Inoltre alla linea 68, avrò bisogno di
1275 sostituirò `ChangeLog' con `FIXES',
1276 perché è il nome reale del file di changelog dell'upstream.
1277
1278 <p>Le ultime due righe (insieme con le altre non spiegate qui) sono
1279 solo cose più o meno necessarie, delle quali puoi leggere nel manuale
1280 del make e nella Policy. Al momento, non è essenziale conoscerle.
1281
1282 <chapt id="dother">Altri file sotto debian/
1283
1284 <p>Vedrai che ci sono altri file nella sottodirectory debian/, molti dei
1285 quali con suffisso `.ex', che sta a indicare degli esempi.
1286 Dagli una occhiata. Se volessi
1287 usarli o avessi necessità di usarne le funzionalità:
1288
1289 <list>
1290 <item>esamina la documentazione relativa (suggerimento: il Policy Manual),
1291 <item>se necessario modifica i file per adattarli alle tue necessità,
1292 <item>rinominali per eliminare il suffisso `.ex' se ne hanno uno,
1293 <item>modifica il file rules se necessario.
1294 </list>
1295
1296 <p>Alcuni di questi file, quelli più comunemente usati, sono
1297 spiegati nelle sezioni seguenti.
1298
1299 <sect id="readme">README.Debian
1300
1301 <p>Qualsiasi dettaglo extra o discrepanza fra il pacchetto originale
1302 e la versione debianizzata, deve essere documentata qui.
1303
1304 <p>dh_make ne crea uno di default, che appare come segue:
1305
1306 <example>
1307 gentoo for Debian
1308 ----------------------
1309
1310 &lt;possible notes regarding this package - if none, delete this file&gt;
1311
1312 -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt;, Wed, 11 Nov 1998 21:02:14 +0100
1313 </example>
1314
1315 <p>Poiché non dobbiamo aggiungere niente qui, cancelleremo questo file.
1316
1317 <sect id="conffiles">conffiles.ex
1318
1319 <p>Una delle esperienze più tedianti con il software, capita quando si passa
1320 parecchio tempo a configurare con tutti gli sforzi un programma, per vedersi
1321 poi cancellate tutte le modifiche effettuate, a seguito di un aggiornamento.
1322 Debian risolve questo problema marcando i file di configurazione in modo
1323 che quando si aggiorna un pacchetto venga richiesto se si vogliono
1324 conservare i vecchi file di configurazione, o meno.
1325
1326 <p>Il modo di fare questo in un pacchetto è inserire il path completo
1327 di ciascun file di
1328 configurazione (generalmente in /etc), uno per riga, in un file che si
1329 chiama <tt/conffiles/. Gentoo ha un file di configurazione, /etc/gentoorc,
1330 e lo inseriremo nel file <tt/conffiles/.
1331
1332 <p>Se il programma che stai pacchettizzando richiede che ogni utente
1333 modifichi il file di configurazione per funzionare, prendi in
1334 considerazione la possibilità di non marcarlo come conffile.
1335
1336 <p>Puoi gestire degli esempi di configurazione dagli `script del
1337 maintainer', per maggiori informazioni vedi <ref id="maintscripts">.
1338
1339 <p>Se il tuo programma non ha conffiles, puoi in tutta sicurezza
1340 cancellare il file <tt/conffiles/ dalla directory debian/.
1341
1342 <sect id="crond">cron.d.ex
1343
1344 <p>Se il tuo pacchetto richiede che compiti regolarmente schedulati
1345 siano svolti in modo appropriato, puoi usare questo file per configurarli.
1346
1347 <p>Nota che questo non include la rotazione dei log; per quello
1348 guarda <manref name="dh_installlogrotate" section="1"> e
1349 <manref name="logrotate" section="8">.
1350
1351 <p>In caso contrario rimuovilo.
1352
1353 <sect id="dirs">dirs
1354
1355 <p>Questo file specifica le directory che occorrono, ma che la normale
1356 procedura di installazione (make install), per qualche motivo, non crea.
1357
1358 Per default, contiene:
1359 <p><example>
1360 usr/bin
1361 usr/sbin
1362 </example>
1363
1364 <p>Osserva che lo slash prefisso non è incluso. Cambieremo normalmente
1365 tale file come segue:
1366
1367 <p><example>
1368 usr/bin
1369 usr/man/man1
1370 </example>
1371
1372 <p>ma queste directory sono già create nel Makefile, per cui non ci serve
1373 tale file, e lo cancelleremo.
1374
1375 <sect id="docs">docs
1376
1377 <p>Questo file specifica i nomi dei file di documentazione che possiamo
1378 far installare a dh_installdocs nella directory temporanea per noi.
1379
1380 <p>Per default, includerà tutti i file esistenti nella directory
1381 principale dei sorgenti che si chiamano "BUGS", "README*", "TODO", ecc.
1382
1383 <p>Per gentoo, ho incluso anche qualcos'altro:
1384
1385 <p><example>
1386 BUGS
1387 CONFIG-CHANGES
1388 CREDITS
1389 ONEWS
1390 README
1391 README.gtkrc
1392 TODO
1393 </example>
1394
1395 <p>Possiamo anche rimuovere questo file e invece elencare quei file
1396 sulla riga di comando di <tt/dh_installdocs/ nel file <tt/rules/,
1397 in questo modo:
1398
1399 <p><example>
1400 dh_installdocs BUGS CONFIG-CHANGES CREDITS ONEWS README \
1401 README.gtkrc TODO
1402 </example>
1403
1404 <p>Per quanto inversomile possa sembrare, potresti non avere nessuno
1405 di questi file nella directory dei sorgenti del pacchetto. In tal
1406 caso potresti in tutta sicurezza cancellare questo file. Ma non
1407 rimuovere la chiamata <tt/dh_installdocs/ nel file <tt/rules/
1408 perchè è usata per installare il file <tt/copyright/ e altre cose.
1409
1410 <sect id="emacsen">emacsen-*.ex
1411
1412 <p>Se il tuo pacchetto fornisce dei file Emacs che possono essere
1413 compilati al momento della installazione, puoi usare questi file
1414 per configurarlo.
1415
1416 <p>Sono installati nella directory temporanea da
1417 <manref name="dh_installemacsen" section="1">, per cui non dimenticare
1418 di decommentare quella riga nel file <tt/rules/ se lo usi.
1419
1420 <p>Se non ti servono, rimuovili.
1421
1422 <sect id="initd">init.d.ex
1423
1424 <p>Se il tuo pacchetto è un daemon che richiede di essere lanciato
1425 alla partenza del sistema, hai ovviamente ignorato la mia
1426 raccomandazione iniziale, vero? :-)
1427
1428 <p>Questo è uno schema di file abbastanza generico per uno script
1429 da <file>/etc/init.d/</file>, per cui dovrai verosimilmente modificarlo
1430 parecchio. Viene installato nalla directory temporanea da
1431 <manref name="dh_installinit" section="1">.
1432
1433 <p>Se non ti serve, rimuovilo.
1434
1435 <sect id="manpage">manpage.1.ex, manpage.sgml.ex
1436
1437
1438 <p>Il tuo programma dovrebbe avere una pagina di man. Se non ce l'ha
1439 questo file contiene lo scheletro di una pagina che puoi riempire.
1440
1441 <p>Le pagine di manuale sono normalmente scritte in
1442 <manref name="nroff" section="1">. L'esempio <tt/manpage.1.ex/
1443 è scritto in nroff, anche.
1444 Vedi la pagina di manuale relativa a <manref name="man" section="7">,
1445 per una breve descrizione di come modificare tale file.
1446
1447 <p>Se d'altro canto preferisci scrivere in SGML invece che in nroff
1448 puoi usare lo schema in <tt/manpage.sgml.ex/. Se lo fai, devi:
1449 <list>
1450 <item>installare il pacchetto <package/docbook-to-man/
1451 <item>aggiungere <tt/docbook-to-man/ alla riga <tt/Build-Depends/
1452 nel file <tt/control/
1453 <item>rimuovere il commento dalla chiamata di docbook-to-man
1454 nella regola `build' del tuo file <tt/rules/
1455 </list>
1456
1457 <p>E ricorda di rinominare il file in qualcosa tipo <tt/gentoo.sgml/!
1458
1459 <p>Il nome della pagina finale di manuale dovrebbe includere il
1460 nome del programma che sta documentando, per cui la rinomineremo da
1461 "manpage" a "gentoo".
1462 Questo nome di file include ".1" come primo suffisso, il che indica
1463 che è una pagina di manuale per un comando utente. Assicurati che
1464 questa sezione sia di fatto quella corretta.
1465 Ecco una breve lista delle sezioni di pagina di man:
1466
1467 <p><example>
1468 Sezione | Descrizione | Note
1469 1 User commands Comandi e script eseguibili
1470 2 System calls Funzioni del kernel
1471 3 Library calls Funzioni delle librerie di sistema
1472 4 Special files File di /dev
1473 5 File formats Per es. formato di /etc/passwd
1474 6 Games O programmi frivoli
1475 7 Macro packages Come le macro di man.
1476 8 System administration Programmi usati da root.
1477 9 Kernel routines Chiamate non standard e interne
1478 </example>
1479
1480 <p>Così la manpage di gentoo dovrebbe chiamarsi <tt/gentoo.1/.
1481 Per programmi per X puoi aggiungere una "x" alla sezione, cioè
1482 <tt/gentoo.1x/.
1483 Non c'era nessuna pagina man gentoo.1 nei sorgenti
1484 originali, per cui ne ho scritta una, usando le informazioni
1485 dell'esempio e la documentazione dall'upstream.
1486
1487 <sect id="menu">menu.ex
1488
1489 <p>Gli utenti di X Window generalmente hanno un window manager con un
1490 menu che può essere adattato per lanciare programmi. Se è stato installato
1491 il pacchetto <package/menu/, verrà creato un insieme di menu per ciascun
1492 programma del sistema.
1493
1494 <p>Questo è il file <tt/menu.ex/ che di default dh_make crea:
1495
1496 <p><example>
1497 ?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual\
1498 title="gentoo" command="/usr/bin/gentoo"
1499 </example>
1500
1501 <p>Il primo campo dopo i due punti è "needs", e specifica di che
1502 tipo di interfaccia il programma
1503 ha bisogno. Modificalo in una delle alternative in elenco,
1504 per esempio "text" o "X11".
1505
1506 <p>Il successivo è "section", dove voce
1507 di menu e sottomenu dove dovrebbe apparire. L'elenco corrente delle
1508 sezioni si trova in:
1509 <file>/usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1</file>
1510
1511 <p>Il campo "title" è il nome del programma. Puoi iniziarlo in
1512 maiuscolo se preferisci. Solo, mantienilo breve.
1513
1514 <p>Infine, il campo "command" è la riga di comando
1515 che lancia il programma.
1516
1517 <p>Adesso, cambieremo la voce di menu in questo:
1518
1519 <p><example>
1520 ?package(gentoo):needs=X11 section=Apps/Tools \
1521 title="Gentoo" command="gentoo"
1522 </example>
1523
1524 <p>Puoi anche aggiungere altri campi come "longtitle", "icon", "hints", ecc.
1525 <p>Vedi <manref name="menufile" section="5">, <manref name="update-menus" section="1">
1526 e <file>/usr/share/doc/debian-policy/menu-policy.html/</file>
1527 per maggiori informazioni.
1528
1529 <sect id="watch">watch.ex
1530
1531 <p>Questo file è usato per configurare
1532 <manref name="uscan" section="1">
1533 e <manref name="uupdate" section="1"> (nel pacchetto <package/devscripts/)
1534 Sono usati per controllare il sito da dove hai recuperato il
1535 sorgente originale.
1536
1537 <p>Questo è quello che vi ho inserito:
1538
1539 <p><example>
1540 # watch control file for uscan
1541 # Site Directory Pattern Version Script
1542 ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate
1543 </example>
1544
1545 <p>Suggerimento: collegati a Internet,
1546 e prova a eseguire "uscan" nella directory del programma, dopo avere
1547 creato il file. E leggi le pagine di manuale! :)
1548
1549 <sect id="doc-base">ex.package.doc-base
1550
1551 <p>Se il tuo pacchetto ha altra documentazione a
1552 parte le pagine man e i documenti info, dovresti usare il file
1553 `<package/doc-base/'
1554 per registrarle, in modo che l'utente possa trovarle, con
1555 <manref name="dhelp" section="1">, <manref name="dwww" section="1">
1556 o <manref name="doccentral" section="1">,
1557 per esempio.
1558
1559 <p>Questo in genere include file HTML,PS e PDF, distribuiti in
1560 <file>/usr/share/doc/packagename/</file>.
1561
1562 <p>Il file doc-base di gentoo appare come segue:
1563
1564 <p><example>
1565 Document: gentoo
1566 Title: Gentoo Manual
1567 Author: Emil Brink
1568 Abstract: This manual describes what Gentoo is, and how it can be used.
1569 Section: Apps/Tools
1570
1571 Format: HTML
1572 Index: /usr/share/doc/gentoo/html/index.html
1573 Files: /usr/share/doc/gentoo/html/*.html
1574 </example>
1575
1576 <p>Per informazioni sul formato del file, vedi
1577 <manref name="install-docs" section="8">
1578 e il manuale di <package/doc-base/,
1579 in <file>/usr/share/doc/doc-base/doc-base.html/</file>.
1580
1581 <sect id="maintscripts">postinst.ex, preinst.ex, postrm.ex, prerm.ex
1582
1583 <p>Questi file sono chiamati script del maintainer. Sono script posti
1584 nell'area di controllo del pacchetto e lanciati da <prgn/dpkg/ quando il
1585 tuo pacchetto è installato, aggiornato o rimosso.
1586
1587 <p>Per il momento, dovresti evitare qualsiasi modifica manuale degli
1588 script, se possibile, perché sono complicati. Per maggiori
1589 informazioni guarda il Policy Manual alla sezione 6, e dai una
1590 occhiata a questi file di esempio forniti da dh_make.
1591
1592 <chapt id="build">Costruzione del pacchetto
1593
1594 <p>A questo punto, dovresti essere pronto a creare il pacchetto.
1595
1596 <sect id="completebuild">Costruzione completa
1597
1598 <p>Spostati nella directory principale del programma e lancia il
1599 comando:
1600
1601 <p><example>
1602 dpkg-buildpackage -rfakeroot
1603 </example>
1604
1605 <p>Questo farà tutto il necessario per te.
1606 <list>
1607 <item>pulirà l'albero dei sorgenti (debian/rules clean), usando <prgn/fakeroot/
1608 <item>costuirà il pacchetto sorgente (dpkg-source -b)
1609 <item>costruirà il programma (debian/rules build)
1610 <item>costruirà il pacchetto binario (debian/rules binary), usando <prgn/fakeroot/
1611 <item>firmerà il file sorgente <tt/.dsc/, usando <prgn/gnupg/
1612 <item>creerà e firmerà il file di upload <tt/.changes/ usando
1613 <prgn/dpkg-genchanges/ e <prgn/gnupg/
1614 </list>
1615
1616 <p>Il solo input da te richiesto è tua chiave PGP segreta, due volte.
1617
1618 <p>Fatto ciò, vedrai quattro nuovi
1619 file nella directory di cui sopra (<tt>~/debian/</tt>):
1620
1621 <p><list>
1622 <item><em>gentoo_0.9.12.orig.tar.gz</em>
1623
1624 <p>Questo è il codice sorgente originale, semplicemente
1625 rinominato in questo modo in modo da aderire allo standard Debian.
1626 Osserva che questo è stato creato usando l'opzione `-f'
1627 per <prgn/dh_make/ quando è stato inizialmente lanciato.
1628
1629 <item><em>gentoo_0.9.12-1.dsc</em>
1630
1631 <p>È un sommario del contenuto del codice sorgente. Questo file è
1632 generato dal tuo file `control', ed è usato
1633 quando si scompatta il sorgente con <manref name="dpkg-source"
1634 section="1">. Questo file è firmato con PGP, in modo che si possa
1635 essere sicuri che effettivamente è fatto da te.
1636
1637 <item><em>gentoo_0.9.12-1.diff.gz</em>
1638
1639 <p>Questo file compresso contiene ogni singola modifica fatta al
1640 codice sorgente originale, in una forma nota come "diff unificata".
1641 Viene creata e usata da <manref name="dpkg-source" section="1">.
1642 Attenzione: se non chiami il file di distribuzione originale
1643 packagename_version.orig.tar.gz, <prgn/dpkg-source/ non riuscirà
1644 a creare il file .diff.gz correttamente!
1645
1646 <p>Se qualcun altro volesse ri-creare il tuo pacchetto da zero,
1647 potrebbe farlo facilmente usando i suddetti tre file.
1648 La procedura di estrazione è banale: copiare semplicemente i tre file
1649 da qualche parte e lanciare <tt>dpkg-source -x gentoo_0.9.12-1.dsc</tt>.
1650
1651 <item><em>gentoo_0.9.12-1_i386.deb</em>
1652
1653 <p>Questo è il pacchetto binario completo. Puoi usare <prgn/dpkg/
1654 per installarlo e rimuoverlo, come per ogni altro pacchetto.
1655
1656 <item><em>gentoo_0.9.12-1_i386.changes</em>
1657
1658 <p>Questo file descrive tutte le modifiche fatte nella revisione
1659 corrente del pacchetto, ed è usata dai programmi di mantenimento
1660 dell'archivio FTP di Debian per installare i pacchetti binari
1661 e sorgenti. È parzialmente generato dal contenuto del file
1662 `changelog' e dal file .dsc. Questo file è firmato con PGP,
1663 in modo che si possa essere sicuri che è effettivamente tuo.
1664
1665 <p>Quando lavori sul pacchetto, cambieranno le modalità di
1666 funzionamento e nuove funzionalità
1667 potranno essere aggiunte. Quelli che scaricano il tuo pacchetto, possono
1668 quardare questo file per vedere velocemente quali sono i cambiamenti.
1669 I programmi di mantenimento dell'archivio Debian invieranno anche
1670 i contenuti di questo file alla mailing list debian-devel-changes.
1671 </list>
1672
1673 Le lunghe stringhe di numeri nei file .dsc e .changes sono
1674 codici di controllo MD5 per i file
1675 menzionati. Chi scarica questi file, può controllarli con <manref
1676 name="md5sum" section="1"> e se i numeri non corrispondessero
1677 saprebbe che il file relativo è corrotto, o è stato alterato.
1678
1679 <sect id="quickrebuild">Ricostruzione veloce
1680
1681 <p>Con un grosso pacchetto, potresti non voler ricostruire tutto da zero,
1682 ogni volte che modifichi un dettaglio in debian/rules. Per motivi
1683 di testing puoi creare un file .deb, ricostruendo i sorgenti upstream
1684 come segue:
1685
1686 <p><example>
1687 fakeroot debian/rules binary
1688 </example>
1689
1690 <p>Una volta finito con i tuoi aggiustamenti, ricorda di ricostruire
1691 usando la giusta procedura. Potresti non essere in grado
1692 di caricare il pacchetto correttamente se provi con dei file .deb
1693 creati in questo modo.
1694
1695 <sect id="checkit">Controllare il pacchetto per errori
1696
1697 <p>Lancia <manref name="lintian" section="1"> sul tuo file .changes;
1698 questo programma fa una verifica in merito a molti comuni errori di
1699 pacchettizzazione. Il comando è:
1700
1701 <p><example>
1702 lintian -i gentoo_0.9.12-1_i386.changes
1703 </example>
1704
1705 <p>Ovviamente, sostituisci il nome del file con il nome del file
1706 changes generato per il tuo pacchetto. Se sembra che ci siano errori
1707 (le righe che iniziano con E:), leggi la spiegazione (le righe con
1708 N:), correggi e ricostruisci come descritto in <ref id="completebuild">.
1709 Se ci sono righe che iniziano con W:, si tratta di warning, per cui
1710 aggiusta il pacchetto o verifica che i warning siano spuri (e crea
1711 gli ovverrides per Lintian; vedi la documentazione per i dettagli)
1712
1713 <p>Osserva che puoi costruire il pacchetto con <prgn/dpkg-buildpackage/ e
1714 <prgn/lintian/ in un unico comando con <manref name="debuild"
1715 section="1">.
1716
1717 <p>Guarda all'interno del pacchetto usando un file manager come
1718 <manref name="mc" section="1">, o spacchettalo in una posizione
1719 temporanea usando <manref name="dpkg-deb" section="1">.
1720 Stai in guardia per file extra non necessari nel pacchetto binario
1721 e sorgente. Spesso un po' di robaccia non
1722 viene cancellata propriamente; modifica le tue regole per
1723 compensare questa cosa.
1724 Suggerimento: `zgrep ^+++ ../gentoo_0.9.12-1.diff.gz'
1725 ti darà una lista di modifiche/aggiunte ai file sorgenti, e
1726 `dpkg-deb -c gentoo_0.9.12-1_i386.deb' elencherà tutti i file nel pacchetto.
1727
1728 <p>Installa il pacchetto per testarlo tu stesso, per esempio usando il
1729 comando <manref name="debi" section="1"> come root.
1730 Prova a installarlo e lanciarlo su una macchina che non sia la tua, e
1731 verifica qualsiasi errore o warning durante l'installazione o l'esecuzione.
1732
1733 <sect id="upload">Caricamento del pacchetto
1734
1735 <p>Una volta testato il nuovo pacchetto approfonditamente,
1736 sarai pronto a partire con il processo di candidatura come nuovo
1737 maintainer Debian, come descritto in
1738 <url id="http://www.debian.org/devel/join/newmaint">.
1739
1740 <p>Una volta diventato uno sviluppatore ufficiale,
1741 avrai necessità di caricare il pacchetto nell'archivio Debian.
1742 Potresti farlo a mano, ma è più semplice usare i tool automatici forniti, come
1743 <manref name="dupload" section="1"> o <manref name="dput" section="1">.
1744 Descriveremo come puoi farlo con <prgn/dupload/.
1745
1746 <p>Per prima cosa devi creare il file di configurazione di dupload.
1747 Puoi modificare il file di sistema <file>/etc/dupload.conf</file>
1748 o averne uno tuo personale <file>~/.dupload.conf</file>
1749 che fornisce le poche cose da modificare. Scrivici dentro qualcosa come:
1750
1751 <p><example>
1752 package config;
1753
1754 $default_host = "ftp-master";
1755
1756 $cfg{"ftp-master"}{"login"} = "yourdebianusername";
1757
1758 $cfg{"non-us"}{"login"} = "yourdebianusername";
1759
1760 1;
1761 </example>
1762
1763 <p>Ovviamente, modifica le mie informazini personali con le tue, e
1764 leggi la pagina man <manref name="dupload.conf" section="5"> per
1765 capire cosa significa ciascuna opzione.
1766
1767 <p>L'opzione $default_host è la più particolare -- stabilisce
1768 quale coda di caricamento sarà usata per default.
1769 "ftp-master" è la primaria, ma è possibile che tu voglia usarne
1770 un'altra, più veloce. Per maggiori informazioni sulle code,
1771 leggi la Guida di Riferimento per lo Sviluppatore, nella
1772 sezione "Caricare un pacchetto", su
1773 <file>/usr/share/doc/developers-reference/developers-reference.html/ch-upload.en.html#s-uploading</file>
1774
1775 <p>A questo punto connettiti al tuo provider Internet, e scrivi
1776 questo comando:
1777
1778 <p><example>
1779 dupload --to master gentoo_0.9.12-1_i386.changes
1780 </example>
1781
1782 <p><prgn/dupload/ verifica che i codici di controllo MD5 dei file siano
1783 coerenti con quelli del file .changes, per cui ti avvertirà di
1784 ricreare il pacchetto come descritto in
1785 <ref id="completebuild">, per caricare appropriatamente il pacchetto.
1786
1787 <p>Se carichi su "ftp-master", <prgn/dupload/
1788 ti chiederà la tua password per le macchine Debian, e quindi caricherà
1789 il pacchetto.
1790
1791 <chapt id="update">Aggiornamento del pacchetto
1792
1793 <sect id="newrevision">Nuova revisione Debian
1794
1795 <p>Supponiamo che sia stato segnalato un bug del tuo pacchetto,
1796 il #54321, e che si riferisca a un problema che sei in grado di risolvere.
1797 Per creare una nuova revisione Debian del pacchetto, hai bisogno di:
1798
1799 <list>
1800 <item>Correggere il problema nel pacchetto sorgente, ovviamente.
1801
1802 <item>Aggiungere una nuova revisione nel file changelog Debian, per
1803 esempio con `dch -i', oppure esplicitamente con
1804 `dch -v &lt;version&gt;-&lt;revision&gt;` e quindi
1805 includere i tuoi commenti usando il tuo editor preferito,
1806
1807 <p>Suggerimento: come ottenere la data facilmente nel formato
1808 richiesto? Usa `822-date`, or `date -R`.
1809
1810 <p>Includi una breve descrizione del bug e la soluzione nella
1811 voce del changelog,
1812 seguita da: "Closes: #54321". In questo modo, la sottomissione del
1813 bug sarà automaticamente chiusa dal software di mantenimento, nel
1814 momento in cui il tuo pacchetto sarà accettato nell'archivio Debian.
1815
1816 <item>Ripeti quanto fatto in <ref id="completebuild">, <ref id="checkit">,
1817 e <ref id="upload">. La differenza è che questa volta il sorgente
1818 originale non sarà incluso, dal momento che non è stato modificato
1819 e già esiste nell'archivio Debian.
1820 </list>
1821
1822 <sect id="newupstream">Nuovo rilascio di upstream
1823
1824 <p>Adesso consideriamo una situazione differente, un po' più
1825 complicata - una nuova versione upstream è stata rilasciata, e
1826 ovviamente vuoi pacchettizzarla. Avrai bisogno di fare quanto segue:
1827
1828 <list>
1829 <item>Scarica i nuovi sorgenti e sposta il relativo archivio (per
1830 es. dal nome `gentoo-0.9.13.tar.gz') nella directory al di sopra
1831 del vecchio albero di sorgenti (per es. ~/debian/).
1832
1833 <item>Spostati nella vecchia directory di sorgenti e lancia:
1834
1835 <example>
1836 uupdate -u gentoo-0.9.13.tar.gz
1837 </example>
1838
1839 <p>Ovviamente, sostituisci questo nome di file con il nome
1840 dell'archivio dei sorgenti del tuo programma.
1841 <manref name="uupdate" section="1"> rinominerà in modo appropriato
1842 quell'archivio, proverà ad applicare tutte le modifiche dal tuo
1843 precedente file .diff.gz, e aggiornerà il nuovo file
1844 debian/changelog.
1845
1846 <item>Portati nella directory `../gentoo-0.9.13', il nuovo albero
1847 di sorgenti del pacchetto, e ripeti quanto fatto in
1848 <ref id="completebuild">, <ref id="checkit">, e <ref id="upload">.
1849 </list>
1850
1851 <p>Osserva che se hai configurato il file `debian/watch' come descritto
1852 in <ref id="watch">, puoi lanciare <manref name="uscan" section="1">
1853 per cercare automaticamente i sorgenti aggiornati, scaricarli e
1854 lanciare <prgn/uupdate/.
1855
1856 <sect id="upgrading">Verificare gli aggiornamenti di pacchetti
1857
1858 <p>Quando crei una nuova versione del pacchetto, dovresti fare
1859 quanto segue per verificare che il pacchetto può essere
1860 aggiornato in modo sicuro:
1861
1862 <list>
1863 <item>aggiorna dalla versione precedente,
1864 <item>torna indietro e rimuovilo,
1865 <item>installa il nuovo pacchetto,
1866 <item>rimuovilo e reinstallalo nuovamente,
1867 <item>fanne un purge.
1868 </list>
1869
1870 <p>Tieni a mente che se il pacchetto è stato in precedenza rilasciato
1871 in Debian, la gente vorrà spesso fare un aggiornamento dalla versione
1872 che era nell'ultima versione Debian. Ricorda di provare l'aggiornamento
1873 da tale versione, anche.
1874
1875 <sect id="helpme">Dove chiedere aiuto
1876
1877 <p>Prima di deciderti a fare una domanda in qualche area pubblica,
1878 sei pregato di leggere i dannati manuali (RTFM).
1879 Questo include la documentazione in
1880 <file>/usr/share/doc/dpkg</file>,
1881 <file>/usr/share/doc/debian</file>, i file
1882 <file>/usr/share/doc/package/*</file> e
1883 e le pagine man/info di tutti i programmi menzionati in questo documento.
1884
1885 <p>Se hai domande sulla pacchettizzazione alle quale non trovi risposta
1886 nella documentazione, puoi chiedere alla mailing list dei Debian Mentors
1887 su <email/debian-mentors@lists.debian.org/. Gli sviluppatori più esperti
1888 di Debian ti aiuteranno con piacere, ma leggi almeno un po' di
1889 documentazione prima di chiedere!
1890
1891 <p>Guarda <url id="http://lists.debian.org/debian-mentors/"> per
1892 maggiori informazioni riguardo la mailing list.
1893
1894 <p>Quando ricevi una segnalazione di bug (sì, effettive segnalazioni
1895 di bug!) saprai che è il momento di fare fare riferimento al
1896 <url name="Sistema Debian di tracciamento dei bug" id="http://www.debian.org/Bugs/">
1897 e leggere la documentazione lì, per essere in grado di gestire le
1898 segnalazioni in modo efficiente. Ti raccomando di leggere
1899 la Guida di Riferimento dello Sviluppatore, al capitolo
1900 "Gestione dei Bug", su
1901 <file>/usr/share/doc/developers-reference/developers-reference.html/ch-bug-handling.en.html</file>
1902
1903 <p>Se ancora hai delle domande, chiedi sulla mailing list degli
1904 sviuppatori Debian all'indirizzo
1905 <email/debian-devel@lists.debian.org/.
1906 Guarda <url id="http://lists.debian.org/debian-devel/">
1907 per maggiori informazioni su questa mailing list.
1908
1909 <p>Anche se tutto funziona bene, è venuto il momento di iniziare
1910 a pregare. Perché? Perché in poche ore (o giorni), gli utenti di
1911 tutto il mondo inizieranno a usare il pacchetto, e se hai commesso
1912 qualche errore critico, sarai bombardato dalle mail di numerosi
1913 utenti Debian arrabbiati... sto scherzando :-)
1914
1915 <p>Rilassati e sii pronto per le segnalazioni dei bug, perché
1916 c'è molto lavoro da fare prima che il tuo pacchetto
1917 sia completamente in linea con le politiche Debian
1918 (ancora una volta, leggi la <em>documentazione reale</em> per i dettagli).
1919 Buona fortuna!
1920
1921 </book>
1922
1923 </debiandoc>

  ViewVC Help
Powered by ViewVC 1.1.5