File: maint-guide.it.sgml

package info (click to toggle)
maint-guide 1.2.14
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 1,256 kB
  • ctags: 27
  • sloc: makefile: 186; sh: 39
file content (2432 lines) | stat: -rw-r--r-- 104,662 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
<!DOCTYPE debiandoc PUBLIC "-//DebianDoc//DTD DebianDoc//EN" [

        <!-- textual data entities -->
        <!-- first definition wins in SGML -->
<!ENTITY % default  SYSTEM "default.ent">  %default;

]>
<!-- CVS revision of this document "$Revision: 1.28 $"  -->
<!-- CVS revision of original english document "1.97"  -->

<debiandoc>

 <book>

  <titlepag>

   <title>Guida per il nuovo Maintainer</title>

   <author>Josip Rodin <email/joy-mg@debian.org/
   </author>
   <author>Traduzione: Francesco P. Lovergine <email/frankie@debian.org/
   </author>

   <version>versione 1.2.3, 18 January 2005.</version>

   <copyright>
   <copyrightsummary>Copyright &copy; 1998-2002 Josip Rodin.</copyrightsummary>

   <p>Questa guida pu� essere utilizzata nei termini della GNU General Public License
   versione 2 o successive.

   <p>Questo documento � stato realizzato utilizzando come modello i documenti seguenti:

   <p>Making a Debian Package (noto come Manuale di Debmake), copyright &copy;
   1997 Jaldhar Vyas.

   <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
   Will Lowe.
   </copyright>

  </titlepag>

  <toc sect>

  <chapt id="start">Partire "nel modo giusto"

  <p>Questo documento prover� a descrivere la costruzione di un pacchetto
  Debian GNU/Linux per un comune utente Debian (e aspirante sviluppatore),
  utilizzando un linguaggio immediato e con l'ausilio di esempi concreti.
  C'� un detto latino che dice <em> Longum iter est per preaecepta, breve 
  et efficax per exempla!</em> (La via � lunga usando la teoria, 
  ma breve ed efficiente con gli esempi!).

  <p>Una cosa che rende Debian una distribuzione Linux di prima scelta,
  � il suo sistema di pacchettizzazione. Sebbene ci sia una vasta quantit�
  di software gi� in formato Debian, qualche volta � necessario installare
  del software che non lo �. 
  Potresti chiederti come creare personalmente i tuoi pacchetti e forse 
  pensare che sia un compito molto difficile. In effetti, se sei un 
  novizio di Linux � dura, ma se sei un un utente stagionato non puoi
  non leggere questo documento subito :-) Avrai bisogno di conoscere 
  dei rudimenti di programmazione Unix, ma certamente non occorrer� che
  tu sia un mago della programmazione.

  <p>Una cosa � certa, per�: per creare propriamente e manutenere
  pacchetti Debian ti occorrono ore-uomo di lavoro. Non commettere errori, per
  far funzionare il nostro sistema, i maintainer necessitano di essere
  insieme tecnicamente competenti e diligenti.

  <p>Questo documento spiegher� ogni piccolo (e in apparenza irrilevante)
  passo, e ti aiuter� a creare il tuo primo pacchetto, e conseguire
  qualche esperienza nel costruire i successivi rilasci di questo e forse
  altri pacchetti pi� in l�.
  
  <p>Versioni aggiornate di questo documento dovrebbero sempre essere
  disponibili all'indirizzo
  <url name="http://www.debian.org/doc/maint-guide/" id="http://www.debian.org/doc/maint-guide/">
  e nel pacchetto `<package/maint-guide/'.
  La traduzione in italiano � anche disponibile nel pacchetto `<package/maint-guide-it/'.

  <sect id="needprogs">Programmi necessari per lo sviluppo

  <p>Prima di iniziare, dovresti assicurarti di avere correttamente
  installati alcuni pacchetti addizionali, necessari per lo sviluppo
  del software. Osserva che la lista non contiene alcun pacchetto
  etichettato `essential' o `required' - ci aspettiamo che tu li abbia
  gi� installati.

  <p>Questa revisione del documento � stata aggiornata per i 
  pacchetti in Debian 2.2 (`potato') e 3.0 (`woody').

  <p>I pacchetti seguenti fanno parte della installazione standard della
  Debian,  per cui probabilmente li hai gi� installati (insieme ai
  pacchetti addizionali dai quali dipendono). Comunque dovresti
  controllare con `dpkg -s &lt;package&gt;'.

  <list>
  <item><package/dpkg-dev/ - questo pacchetto contiene gli 
  strumenti necessari per spacchettare, creare e caricare i pacchetti
  sorgenti Debian. (vedi
  <manref name="dpkg-source" section="1">)

  <item><package/file/ - questo comodo programma pu� stabilire la
  tipologia di un file.
  (vedi <manref name="file" section="1">)

  <item><package/gcc/ - il compilatore GNU C, necessario se il tuo programma
  come molti altri � scritto nel linguaggio di programmazione C. 
  (vedi <manref name="gcc" section="1">,
  Questo pacchetto caricher� anche un gruppo di altri pacchetti come
  <package/binutils/ che include programmi usati per assemblare e
  linkare file oggetto (vedi `info binutils` nel pacchetto 
  <package/binutils-doc/)
  e <package/cpp/, il preprocessore C. 
  (vedi <manref name="cpp" section="1">)

  <item><package/g++/ - il compilatore GNU C++, necessario se il tuo 
  programma � scritto in C++. (vedi <manref name="g++" section="1">).

  <item><package/libc6-dev/ - le librerie e i file header che il gcc
  richiede per la compilazione e il link dei file oggetto. 
  (vedi `info libc' nel pacchetto <package/glibc-doc/)

  <item><package/make/ - generalmente la creazione di programmi richiede
  una serie di passi. Piuttosto di riscrivere continuamente gli stessi
  comandi, puoi utilizzare questo programma per automatizzare il
  processo, creando dei `Makefile'. (vedi `info make`) 

  <item><package/patch/ - questo programma di utilit� molto utile 
  impiega un file
  contenente una lista di differenze (prodotta dal programma diff) e
  la applica al file originale, per produrre una versione modificata.
  (vedi <manref name="patch" section="1">)

  <item><package/perl/ - Perl � uno dei linguaggi per script
  interpretati pi� utilizzati sui moderni sistemi simil-Unix, spesso definito
  come "il coltellino svizzero di Unix". 
  (vedi <manref name="perl" section="1">)
  </list>

  <p>Probabilmente vorrai installare i pacchetti seguenti, anche:
  
  <list>

  <item><package/autoconf/ e <package/automake/ - molti programmi
  nuovi usano script di configurazione e Makefile preprocessati
  con l'aiuto di programmi come questi. (vedi `info autoconf`, `info automake`)
  
  <item><package/dh-make/ e <package/debhelper/- dh-make � necessario per 
  creare lo skeleton del nostro pacchetto di esempio, e utilizzer� alcuni
  strumenti di debhelper per creare i pacchetti. Non sono essenziali per la
  creazione di pacchetti, ma sono <strong>altamente</strong> raccomandati
  per i nuovi maintainer. Questo rende l'intero processo molto pi�
  semplice da iniziare e controllare successivamente. (vedi
   <manref name="dh_make" section="1">,
  <manref name="debhelper" section="1">, /usr/share/doc/debhelper/README)

  <item><package/devscripts/ - questo pacchetto contiene alcuni utili
  script che possono essere di aiuto per il maintainer, ma anche questi
  non sono strettamente necessari per la creazione di pacchetti. (vedi
  /usr/share/doc/devscripts/README.gz)

  <item><package/fakeroot/ - questa programma di utilit� permette di emulare i
  privilegi di root necessari per alcune parti del processo di creazione.
  (vedi <manref name="fakeroot" section="1">)

  <item><package/gnupg/ - un programma che ti consente di <em>firmare</em>
  elettronicamente i pacchetti. Questo � soprattutto importante se vuoi
  distribuirli ad altre persone, e certamente lo farai quando il tuo
  lavoro verr� incluso nella distribuzione Debian. 
  (vedi <manref name="gpg" section="1">)

  <item><package/g77/ - il compilatore GNU Fortran 77, necessario se il
  tuo programma � scritto in Fortran. (vedi <manref name="g77" section="1">)
  
  <item><package/gpc/ - il compilatore GNU Pascal, necessario se il tuo
  programma � scritto in Pascal. Degno di nota qui � <package/fp-compiler/,
  il Compilatore Free Pascal, che � anche adatto a questo compito.
  (vedi <manref name="gpc" section="1">, <manref name="ppc386" section="1">)

  <item><package/xutils/ - alcuni programmi, generalmente
  quelli fatti per X11, usano anche questi programmi per generare i Makefile
  da insiemi di macro funzioni. (vedi <manref name="imake" section="1">,
    <manref name="xmkmf" section="1">)
  
  <item><package/lintian/ - questo � il verificatore dei pacchetti Debian,
  che permette di scoprire errori comuni dopo la costruzione del
  pacchetto e spiega gli errori trovati. (vedi
  <manref name="lintian" section="1">, 
  /usr/share/doc/lintian/lintian.html/index.html)

  <item><package/pbuilder/ - questo pacchetto contiene programmi che sono usati
  per creare e mantenere un ambiente chroot. Creare pacchetti in tale ambiente
  chroot permette di verificare le appropiate dipendenze ed evitare i bug FTBS.
  (vedi <manref name="pbuilder" section="8"> e <manref name="pdebuild" section="1">)
  </list>

  <p>Quanto segue � la documentazione <em>molto importante</em> 
  che dovresti leggere insieme a questo documento:

  <list>
  <item><package/debian-policy/ - la Policy include la struttura e i contenuti
  dell'archivio, una serie di indicazioni sul disegno del sistema operativo, 
  lo Standard della Gerarchia del Filesystem (che dice dove ogni file
  e directory dovrebbe stare), ecc.
  La cosa che per te � pi� importante � 
  che descrive gli obblighi che ogni pacchetto deve soddisfare per
  essere incluso nella distribuzione. (vedi &debian-policy;)

  <item><package/developers-reference/ - contiene tutto il materiale non
  specificatamente relativo ai dettagli tecnici della pacchettizzazione,
  come la struttura dell'archivio, come rinominare, rendere orfano o 
  prendere in carico un pacchetto, come fare gli NMU, come gestire 
  i bug, suggerimenti pratici di pacchettizzazione,quando e dove fare i caricamenti, ecc.
  (vedi &developers-reference;)
  </list>

  <p>Le brevi note date sino a questo punto servono solo come
  introduzione a cosa ciascun pacchetto fa. Prima di continuare, leggi
  approfonditamente la documentazione di ogni programma, almeno per
  un uso standard. Potr� sembrarti molto pesante farlo adesso, ma 
  pi� avanti sarai <em>lietissimo</em> di averlo fatto.
  
  Nota: <package/debmake/ � un pacchetto che contiene alcuni programmi
  con funzioni simile a dh-make, ma il suo specifico uso
  <strong>non</strong> � illustrato in questo documento, perch� il suo
  uso � <em>sconsigliato</em>.
  Si rimanda al <url name="manuale di Debmake"
  id="http://www.debian.org/~jaldhar/"> per maggiori informazioni.

  <sect id="otherinfo">Altre informazioni

  <p>Ci sono due tipi di pacchetti che puoi creare, sorgente e binario.
  Un pacchetto sorgente contiene codice che puoi compilare in un
  programma. Un pacchetto binario contiene il solo programma finito.
  Non confondere il sorgente di un programma con i sorgenti del pacchetto
  del programma! Leggi gli altri manuali se hai necessit� di avere
  maggiori dettagli sulla terminologia.
  
  <p>In Debian, il termine `maintainer' � utilizzato per la persona che 
  crea pacchetti, `upstream author' per chi ha realizzato il programma,
  e  `upstream maintainer' per la persona che correntemente  manutiene
  quel programma, al di fuori di Debian. Generalmente author e upstream
  maintainer sono la stessa persona - e talvolta anche il maintainer
  � la stessa persona. Se hai realizzato un programma, e vuoi che faccia
  parte di Debian, sentiti libero di sottomettere la richiesta per
  diventare un maintainer.
  
  <p>Una volta creato il pacchetto (o mentre lo fai), dovrai diventare
  un maintainer Debian ufficiale, se vuoi che il tuo programma vada a
  far parte della prossima distribuzione (se il programma � utile
  perch� no?). La procedura � spiegata nella Guida di Riferimento
  per lo Sviluppatore. Sei pregato di leggerla.
  
  <chapt id="first">Primi passi

  <sect id="choose">Scegli il tuo programma

  <p>Devi probabilmente scegliere il pacchetto che vuoi creare. La prima
  cosa da fare � controllare se il pacchetto � gi� nella distribuzione.
  Se usi la distribuzione `stabile', forse � meglio che tu
  vada all'indirizzo
  <url name="pagina di ricerca dei pacchetti" id="http://www.debian.org/distrib/packages">.
  Se usi la <strong>corrente</strong> distribuzione `instabile', verificalo
  con i comandi:
  <example>
  dpkg -s program
  dpkg -l '*program*'
  </example>

  <p>Se il pacchetto gi� esiste, bene, installalo! :-) Se fosse stato
  reso orfano -- se il suo maintainer � configurato come "Debian QA Group",
  dovresti essere in grado di prenderlo in carico. Consulta
  <url name="lista dei pacchetti orfani" id="http://www.debian.org/devel/wnpp/orphaned">
  e
  <url name="la lista dei pacchetti in adozione" id="http://www.debian.org/devel/wnpp/rfa_bypackage">
  per verificare che il pacchetto sia effettivamente disponibile.

  <p>Se sei in grado di adottare il pacchetto, prendi i sorgenti (con qualcosa
  come <tt/apt-get source packagename/) ed esaminali. Questo documento 
  purtroppo non include informazioni esaustive sulla adozione 
  di pacchetti. Fortunatamente non dovrai fare un duro lavoro per capire
  come il pacchetto funziona poich� qualcuno avr� gi� fatto la configurazione
  iniziale al posto tuo. Continua a leggere comunque, molti dei suggerimenti 
  nel seguito saranno ancora applicabili nel tuo caso.
  
  <p>Se il pacchetto � nuovo, e decidi che ti piacerebbe facesse parte
  di Debian, procedi come segue:

  <list>
  <item>consulta la <url name="la lista dei pacchetti sui quali si lavora" id="http://www.debian.org/devel/wnpp/being_packaged">
  per vedere se qualcun altro sta lavorando sullo stesso pacchetto. 
  Se cos� fosse, contatta il maintainer corrente se pensi che occorra.
  Altrimenti - trova un altro programma interessante che nessuno 
  ha in mantenimento.
  </item>

  <item>il programma <strong>deve</strong> avere una licenza, 
  se possibile free, in accordo con le 
  <url name="Linee Guida per il Software Libero Debian" id="http://www.debian.org/social_contract.html#guidelines">.
  Se non � conforme a qualcuna di tali regole, ma pu� comunque 
  essere distribuito, pu� ancora essere incluso nelle sezioni
  `contrib' o `non-free'..
  Se non sei sicuro di dove debba essere incluso chiedi un suggerimento
  su <email/debian-legal@lists.debian.org/.
  </item>

  <item>il programma in questione certamente <strong>non</strong> 
  dovrebbe girare come setuid root, o anche meglio, non dovrebbe richiedere di essere
  setuid o setgid a nessun utente.</item>

  <item>il programma non dovrebbe essere un daemon, o qualcosa che 
  debba essere installato nelle directory */sbin, o aprire una porta
  come root.
  </item>

  <item>il programma dovrebbe essere in forma di binario eseguibile,
  le librerie sono pi� difficili da gestire.
  </item>

  <item>dovrebbe essere ben documentato, o almeno comprensibile (cio�
  non confuso).
  </item>

  <item>dovresti contattare l'autore o gli autori del programma per
  controllare che siano d'accordo con la sua pacchettizzazione.
  � importante essere in grado di consultarsi con l'autore/i sul
  programma nel caso di problemi specifici del programma, per cui
  non provare a pacchettizzare prodotti software non in manutenzione. 
  </item>

  <item>infine, cosa non meno importante, dovresti essere sicuro che
  il programma funziona e averlo provato per un po'.
  </item>
  </list>

  <p>
  Ovviamente queste cose sono solo misure di sicurezza, intese per
  salvarti dall'ira degli utenti se fai qualcosa di sbagliato in 
  qualche daemon setuid...
  Una volta acquisita qualche esperienza nella pacchettizzazione, sarai
  anche in grado di creare quel tipo di pacchetti, ma anche lo
  sviluppatore pi� esperto consulta la mailing list debian-devel quando 
  ha qualche dubbio. E i partecipanti saranno lieti di darti una mano.

  <p>Per maggiori informazioni su queste cose, consulta la Guida di 
  Riferimento per lo Sviluppatore.

  <sect id="getit">Prendi il programma e provalo

  <p>La prima cosa da fare � trovare e scaricare il pacchetto originale.
  Sto supponendo che tu abbia gi� i file dei sorgenti recuperati dalla 
  homepage dell'autore. I sorgenti per programmi free Linux sono
  generalmente in formato tar/gzip, 
  con estensione .tar.gz, contengono
  una subdirectory dal nome programma-versione e tutti i sorgenti sotto
  di essa. Se il sorgente � in qualche altro formato di archiviazione
  (per esempio, il nome del file finisce in ".Z" o ".zip") scompattalo
  con i programmi appropriati, o chiedi a un esperto Debian se non sei
  sicuro su come scompattarlo correttamente (suggerimento: usa il comando
  `file archivio.estensione').

  <p>A titolo di esempio, utilizzer� un programma dal nome `gentoo', 
  un file manager per X basato su GTK+. Osserva che il programma in
  questione � gi� pacchettizzato ed ha subito sostanziali modifiche
  dal momento in cui questo testo � stato inizialmente scritto.

  <p>Crea una sottodirectory nella tua home dal nome `debian' o `deb'
  o un altro nome che ritieni appropriato (per es. anche <file>~/gentoo/</file>
  sarebbe adatto in questo caso). Sposta l'archivio scaricato in essa
  e scompattalo (con `tar xzf gentoo-0.9.12.tar.gz'). Assicurati che
  non ci siano errori, anche qualcuno "irrilevante," perch� potrebbe
  probabilmente dare problemi di spacchettamento sul sistema di altri,
  i cui programmi di scompattazione potrebbero o meno ignorare tali
  anomalie.
  
  <p>A questo punto hai un'altra sottodirectory, dal nome
  `gentoo-0.9.12'. Spostati sotto tale directory e leggi
  <strong>approfonditamente</strong> la documentazione fornita.
  Generalmente ci sono file come README*, INSTALL*, *.lsm o *.html. 
  Devi trovare le istruzioni su come compilare correttamente e
  installare il programma (molto probabilmente, si assume che tu voglia
  installare sotto /usr/local/bin; non lo farai, ma trovi altro su
  questo argomento pi� in l� in <ref id="destdir">).

  <p>La procedura cambia da programma a programma, ma molti dei
  programmi pi� recenti hanno uno script `configure' che configura 
  i sorgenti sotto il tuo sistema e ti assicura che il sistema sia
  nella condizioni di compilarli. Dopo la configurazione (con
  il comando `./configure'), i programmi sono generalmente compilati
  con `make'. Alcuni supportano il comando `make check' per lanciare
  dei controlli automatici inclusi. L'installazione nelle directory
  destinazione viene generalmente fatta con `make install'.
  
  <p>Adesso prova a compilare ed eseguire il programma, per essere sicuro
  che lavori correttamente e niente sia andato male durante
  l'installazione o l'esecuzione.
  
  <p>Puoi anche lanciare generalmente `make clean' per rimuovere i
  file installati (o meglio ancora `make distclean') per
  ripulire la directory di compilazione. Talvolta c'e' anche un
  `make uninstall` che pu� essere usato per rimuovere tutti
  i file installati.

  <sect id="namever">Nome del pacchetto e versione

  <p>Dovresti iniziare la pacchettizzazione con una directory di
  sorgenti completamente ripulita, o semplicemente partendo da una
  nuova scompattazione dei sorgenti.

  <p>Per costruire correttamente il pacchetto, dovresti modificare il nome
  del programma originale in minuscolo (se gi� non lo fosse), e
  rinominare la directory in &lt;pacchetto&gt;-&lt;versione&gt;.
  
  <p>Se il nome del programma consiste di pi� di una parola, contrailo
  in una sola parola, o fanne una abbreviazione. Per esempio, il
  pacchetto del programma "John's little editor for X" potrebbe essere
  chiamato johnledx o jle4x, o qualsiasi altra cosa tu decida in modo
  da stare sotto un numero ragionevole di caratteri, per esempio 20.

  <p>Controlla anche l'esatta versione del programma (che deve 
  essere inclusa nella versione del pacchetto). Se il programma non �
  numerato con versioni quali X.Y.Z, ma con qualche tipo di data, sei
  libero di utilizzare tale data come numero di versione, con un
  prefisso "0.0." (giusto nel caso in cui un upstream, un giorno, decida
  di rilasciare una versione pi� comoda come "1.0"). Cos� se la data 
  di rilascio fosse il 19 Dicembre 1998, potresti usare la stringa
  di versione 0.0.19981219. 
  
  <p>Alcuni programmi non hanno affatto una
  numerazione, nel qual caso dovresti contattare l'upstream maintainer,
  per vedere se viene usato qualche altro metodo di revisione.

  <sect id="dh_make">La "debianizzazione" iniziale

  <p>Assicurati di trovarti nella directory dei sorgenti del programma 
  e lancia il comando seguente:

  <p><example>
  dh_make -e tuo.maintainer@indirizzo -f ../gentoo-0.9.12.tar.gz
  </example>

  <p>Ovviamente, sostituisci alla stringa "tuo.maintainer@indirizzo" il tuo 
  indirizzo e-mail da includere come voce del changelog e in altri
  file, e al nome del file il nome originale dell'archivio dei sorgenti.
  Vedi <manref name="dh_make" section="1"> per dettagli.
 
  <p>Verranno visualizzate alcune informazioni. Ti verr� chiesto che 
  genere di pacchetto vuoi creare. Gentoo � un singolo pacchetto binario
  - crea un solo binario, e perci� un solo file .deb - per cui
  selezionerai la prima opzione con il tasto `s', e controllerai le 
  informazioni sullo schermo, confermando la scelta con &lt;invio&gt;. 
    
  <p>Dopo questa esecuzione di <prgn>dh_make</prgn>, una copia del
  tarball dell'upstream viene creato col nome <file>gentoo_0.9.12.orig.tar.gz</file>
  nella directory superiore per consentire la creazione di un pacchetto Debian
  sorgente non nativo con il <file>diff.gz</file>.
  Nota due caratteristiche chiave in questo nome di file:
  <list compact>
  <item>Nome del pacchetto e versione sono separate da "<tt>_</tt>" .
  <item>� presente "<tt>orig.</tt>" prima del "<tt>tar.gz</tt>" .
  </list>
  
  <p>Ancora una volta, come nuovo maintainer non sei incoraggiato a 
  creare pacchetti complessi, per esempio:
  <list compact>
  <item>pacchetti binari multipli,
  <item>pacchetti di libreria,
  <item>pacchetti i cui sorgenti non sono in formato <tt>tar.gz.</tt> o
     <tt>tar.bz2</tt>, oppure
  <item>il tarball sorgente ha contenuti non distribuibili.
  </list>
  Non � difficile, ma richiede un po' pi� di conoscenze, per cui non
  ne parleremo in questo documento.
  
  <p>Osserva che dovresti lanciare <prgn>dh_make</prgn> <strong>una sola volta</strong>,
  perch� non avrebbe un comportamento corretto se lo eseguissi nuovamente
  nella stessa directory gi� "debianizzata". Questo significa anche che
  userai un metodo diverso per rilasciare una nuova revisione o una
  nuova versione del tuo pacchetto, in futuro. Leggi altro in merito pi�
  oltre in <ref id="update"> 
  
  <chapt id="modify">Modificare i sorgenti

  <p>Normalmente, i programmi si auto-installano in sottodirectory di /usr/local
  I pacchetti Debian invece non usano quella directory, dal momento che
  � riservata agli amministratori (o utenti) del sistema per uso
  privato. Questo significa che dovrai dare una occhiata al sistema 
  di compilazione del programma, partendo generalmente dal Makefile.
  Questo script sar� utilizzato da <manref name="make" section="1"> per
  creare automaticamente il programma. Per maggiori dettagli sui
  Makefile dai una occhiata a <ref id="rules">.

  <p>Osserva che se il tuo programma utilizza l'utilit� GNU
  <manref name="automake" section="1">
  e/o <manref name="autoconf" section="1">, questo significa che i
  sorgenti includono un Makefile.am e/o Makefile.in rispettivamente, e
  avrai bisogno di modificare questi ultimi file, poich� ogni esecuzione
  di automake provoca la riscrittura di Makefile.in con informazioni
  generate a partire dal suo file Makefile.am, e ogni esecuzione di 
  ./configure far� lo stesso con il corrispondente Makefile, con i dati
  ricavati dal file Makefile.in. Modificare i file Makefile.am richiede
  qualche conoscenza di automake - del quale puoi leggere la relativa
  documentazione in formato info - mentre modificare 
  Makefile.in � molto simile a
  modificare i Makefile, in pi� ponendo attenzione alle
  variabili, ovvero qualsiasi stringa di caratteri compresa fra `@',
  come ad esempio @CFLAGS@ or @LN_S@, che viene sostituita con
  l'effettivo valore ad ogni invocazione di ./configure. Assicurati
  di leggere <file>&autotools-dev;</file> prima di procedere.
  
  <p>Nota anche che in questo documento, non c'� spazio sufficiente
  per entrare in tutti i dettagli di come fare le modifiche, ma di
  seguito ecco alcuni problemi che spesso si incontrano.
  
  <sect id="destdir">Installazione in una sotto-directory

  <p>
  La maggior parte dei programmi ha una qualche maniera di installarsi 
  in una struttura di directory pre-esistente del tuo sistema,
  in modo che i binari vengano inclusi nel $PATH, e si possano trovare
  le pagine di manuale e i programmi in locazioni comuni. 
  Tuttavia, se facessi questo, il programma sarebbe installato tra
  ogni altra cosa gi� presente sul tuo sistema. Questo renderebbe
  difficile per i programmi di pacchettizzazione capire quali file
  appartengono al tuo pacchetto e quali no.
  
  <p>Perci� dovrai fare qualcosa di diverso: 
  installa il programma in una sotto-directory temporanea 
  dalla quale gli strumenti di manutenzione costruiranno un pacchetto .deb
  operativo. Ogni file contenuto in tale directory sar� installato
  sul sistema dell'utente, quando questi installa il tuo pacchetto, la
  sola differenza � che dpkg installer� i file a partire dalla radice.

  <p>Questa directory temporanea � generalmente creata sotto la tua
  directory debian/ nell'albero dei sorgenti spacchettato. Si chiama
  generalmente 
  <file>debian/nomepacchetto</file>.

  <p>
  Tieni a mente che anche se avrai bisogno che il programma venga installato
  in debian/nomepacchetto, deve funzionare correttamente quando piazzato 
  nella radice, cio� quando viene installato a partire dal pacchetto .deb. 
  Cos�, non dovrai consentire che il sistema di compilazione inserisca
  stringhe come 
  <tt>/home/me/deb/gentoo-0.9.12/usr/share/gentoo</tt> nei file
  del pacchetto.

  Con programmi che
  usano GNU autoconf, questo � piuttosto semplice, 
  La maggior parte di questi programmi hanno makefile che sono creati
  per default per consentire installazioni in directory casuali,
  sebbene mantengano /usr (ad esempio) come prefisso canonico.
  Quando si accorger� che il programma usa autoconf, dh_make
  fornir� i comandi per fare tutto questo automaticamente, per cui
  potresti saltare la lettura di questa sezione. Invece con altri
  programmi, dovrai probabilmente esaminare e modificare i Makefile.
  
  <p>Questa � la parte rilevante del Makefile di gentoo:

  <p><example>
  # Where to put binary on 'make install'?
  BIN     = /usr/local/bin

  # Where to put icons on 'make install'? 
  ICONS   = /usr/local/share/gentoo/
  </example>

  <p>Osserva che il file sono configurati per installare sotto 
  <file>/usr/local</file>. Modifica questi percorsi in:

  <p><example>
  # Where to put binary on 'make install'?
  BIN     = $(DESTDIR)/usr/bin

  # Where to put icons on 'make install'?
  ICONS   = $(DESTDIR)/usr/share/gentoo
  </example>

  <p>Ma perch� in quella directory, e non altrove? Perch� i pacchetti
  Debian non installano mai file sotto <file>/usr/local</file> -- quella
  gerarchia � riservata all'uso dell'amministratore di sistema.
  Tali file in sistemi Debian vanno invece posti sotto <file>/usr</file>.

  <p>Le locazioni pi� corrette per binari, icone, documentazione ecc. sono
  specificate nello Standard per la Gerarchia del Filesystem
  (vedi /usr/share/doc/debian-policy/fhs/). Ti raccomando di visionarlo
  e leggere le sezioni che possono riguardare il tuo pacchetto.

  <p>Cos�, dobbiamo installare i binari in /usr/bin invece di /usr/local/bin,
  la pagina di manuale in /usr/share/man/man1 invece di /usr/local/man/man1, ecc.
  Nota come non ci sia una pagina di manuale menzionata nel makefile
  di gentoo, ma dal momento che la Policy Debian richiede che ogni programma
  ne abbia una, ne faremo una pi� in l� e la installeremo in /usr/share/man/man1.
  



  <p>Ma perch� in quella directory e non in qualche altra? Perch� Debian
  ha definito alcune regole su dove i programmi devono essere
  installati. Questo � specificato nello Standard della Gerarchia del
  Filesystem (vedi /usr/share/doc/debian-policy/fhs/).
  Cos� dovremmo installare il binario in /usr/X11R6/bin invece che 
  in  /usr/local/bin e le pagine di manuale (non esistono in questo
  caso, ma quasi ogni programma ne ha una, per cui ne faremo una dopo)
  in  /usr/share/man/man1 invece che in /usr/local/man/man1.

  <p>Alcuni programmi non usano variabili di makefile per definire 
  percorsi come questi. Questo significa che potrai dover editare
  alcuni sorgenti C allo scopo di correggerli per usare le locazioni
  giuste. Ma dove e come cercarle? Puoi trovarle eseguendo:

  <p><example>
  grep -nr -e 'usr/local/lib' --include='*.[c|h]' .
  </example>
  
  <p>Grep eseguir� ricorsivamente sull'albero dei sorgenti e ti dir�
  il nome di un  file e la riga in esso quando trova una occorrenza.

  <p>Edita questi file e in quelle righe sostituisci /usr/local/* con
  usr/* -- e questo e tutto. Fa attenzione a non sconvolgere il resto
  del codice! :-)
  
  <p>Dopo di questo, dovresti trovare il target install (cerca la riga
  che inizia con  `install:') e rinomina tutti i riferimenti a directory
  diverse da quelle definite all'inizio del Makefile. In precedenza,
  il target install di gentoo diceva:

  <p><example>
  install:        gentoo
                  install ./gentoo $(BIN)
                  install icons $(ICONS)
                  install gentoorc-example $(HOME)/.gentoorc
  </example>

  <p>Dopo la modifica invece:
  <example>
  install:        gentoo-target
                  install -d $(BIN) $(ICONS) $(DESTDIR)/etc
                  install ./gentoo $(BIN)
                  install -m644 icons/* $(ICONS)
                  install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
  </example>

  <p>Avrai sicuramente notato che c'� adesso un comando
  <tt>install -d</tt> prima degli altri nella regola. Il makefile
  originale non ce l'ha perch� generalmente /usr/local/bin e le
  altre directory gi� esistono sul sistema su cui si lancia
  `make install`. Tuttavia, dal momento che installeremo nella nostra
  directory vuota (o anche inesistente), dovremo creare ogni singola
  directory.

  <p>Possiamo anche aggiungere altre cose alla fine della regola, come
  l'installazione di documentazione che l'autore upstream talvolta
  omette:

  <p><example>
                    install -d $(DESTDIR)/usr/share/doc/gentoo/html
                    cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
  </example>
  
  <p>Se sei un lettore attento, avrai notato che ho modificato  `gentoo' in
  `gentoo-target' nella riga `install:'. Questo � quello che si
  definisce un bug fix :-)

  <p>Qualora effettuassi delle modifiche che non sono specificatamente 
  legate alla pacchettizzazione Debian, assicurati di inviarle
  all'upstream maintainer, in modo che possa includerle nella prossima
  revisione del programma e possano essere utili ad ogni altro. 
  Ricorda anche di rendere i tuoi fix non specifici per Debian o Linux
  (o anche Unix!) prima di inviarli -- rendili portabili. Questo
  render� la tua correzione molto pi� semplice da applicare.
  
  <sect id="difflibs">Distinguere le librerie

  <p>C'� un altro problema comune: le librerie sono spesso diverse 
  da piattaforma a piattaforma. Per esempio, il Makefile pu� contenere
  un riferimento a una libreria che non esiste in sistemi Debian.
  In tal caso occorre modificarlo in una libreria che esiste
  in Debian, e serva allo stesso scopo. 
  
  <p>Cos�, se c'� una riga nel Makefile del programma (o nel
  Makefile.in) che dice qualcosa del tipo (e il programma non compila):

  <p><example>
  LIBS = -lcurses -lsomething -lsomethingelse
  </example>

  <p>Modificala come segue, e molto probabilmente funzioner�:
  <p><example>
  LIBS = -lncurses -lsomething -lsomethingelse
  #LIBS = -lcurses -lsomething -lsomethingelse
  </example>

  <p>(L'autore si rende conto che questo non � il migliore esempio considerato
  che il nostro pacchetto libncurses adesso � distribuito con un link
  simbolico libcurses.so, ma non gliene veniva uno migliore. Suggerimenti
  sono benvenuti :-)

  <chapt id="dreq">Materiale richiesto sotto debian/

  <p>C'� adesso una nuova sotto-directory nella directory principale
  del programma (`gentoo-0.9.12'), il cui nome � `debian'. Ci sono un certo
  numero di file in questa directory che dovremo modificare allo scopo
  di adattare il comportamento del pacchetto. I pi� importati fra loro
  sono `control', `changelog', `copyright' e 'rules', 
  che sono richiesti per tutti i pacchetti.

  <sect id="control">Il file `control' 

  <p>Questo file contiene vari valori che <prgn/dpkg/,  <prgn/dselect/ e
  altri pacchetti useranno per la gestione del pacchetto. 
  
  <p>Questo � il file control che dh_make crea per noi.

  <p><example>
  1  Source: gentoo
  2  Section: unknown
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
  5  Build-Depends: debhelper (>> 3.0.0)
  6  Standards-Version: 3.5.2
  7
  8  Package: gentoo
  9  Architecture: any
  10 Depends: ${shlibs:Depends}
  11 Description: &lt;insert up to 60 chars description&gt;
  12  &lt;insert long description, indented with spaces&gt;
  </example>
  (I numeri di riga sono aggiunti).

  <p>Le righe 1-6 sono le informazioni di controllo per il pacchetto 
  sorgente. 
  
  <p>La riga 1 � il nome del pacchetto sorgente.

  <p>La riga 2 � la sezione della distribuzione in cui il pacchetto �
  incluso. 
  
  <p>Come ti sarai reso conto, Debian � diviso in sezioni: main
  (il software free), non-free (il software non esattamente free)
  e contrib (software free che dipende da software non free). Al di
  sotto di queste ci sono delle sotto-sezioni logiche che descrivono
  in breve di che genere di pacchetto si tratta. Cos� abbiamo `admin'
  per programmi da amministratore, `base' per gli strumenti di base, `devel'
  per gli strumenti per programmatori, `doc' per la documentazione, `libs' per
  le librerie, `mail' per programmi e demoni di posta elettronica, `net'
  per applicazioni e demoni di rete, `x11' per programmi specifici per
  X11, e molte altre.

  <p>Modifichiamo quindi la sezione in x11. (Un prefisso "main/" � implicito
  per cui lo omettiamo.)

  <p>La riga 3 descrive quanto sia importante che l'utente installi tale
  pacchetto. 
  Leggi il manuale della Policy per una guida su come configurare questi
  campi. La priorit� "optional" generalmente funzioner� per nuovi pacchetti.
  
  <p>Sezioni e priorit� sono usati effettivamente solo da <prgn/dselect/
  dselect quando ordina i pacchetti e seleziona i default. Una volta
  caricato il pacchetto in Debian, il valore di questi due campi possono
  essere  modificati dai maintainer dell'archivio FTP, nel qual caso
  ne sarai informato via email.
  
  <p>Dal momento che si tratta di un pacchetto a priorit� normale,
  lasciamo il campo al valore "optional".

  <p>La riga 4 � nome e e-mail del maintainer. Assicurati che 
  questo campo contenga un campo "To: " valido per una email, perch�
  dopo averlo caricato il sistema di tracciamento delle anomalie lo
  user� per inviarti le email relativi a errori. Evita l'uso di virgole,
  '&' e parentesi.

  <p>La quinta riga include la lista dei pacchetti richiesti per creare
  il tuo pacchetto. Alcuni pacchetti come gcc e make sono impliciti,
  vedi il pacchetto <package/build-essential/ per dettagli.
  Se qualche compilatore non standard o altri strumenti sono necessari
  per compilare il tuo pacchetto, dovresti aggiungerlo alla riga
  `Build-Depends'. Valori multipli sono separati con virgole; leggi
  pi� avanti la spiegazione delle dipendenze binarie per saperne
  di pi� della sintassi di questo campo.
  
  <p>Qui puoi anche avere Build-Depends-Indep, Build-Conflicts e altri campi. 
  Questi dati saranno usati dal software di costruzione automatica
  dei pacchetti per creare pacchetti binari per altre piattaforme
  di computer. Vedi il manuale della Policy per altre informazioni sulle
  build-dependencies e la Guida di Riferimento dello Sviluppatore per
  informazioni su tali piattaforme (architetture) e come portare il
  software su di esse.

  <p>Ecco un trucco che puoi usare per trovare quali pacchetti il tuo
  pacchetto richiede per la creazione:
  <example>
  strace -f -o /tmp/log ./configure
  # o make invece di ./configure, se il pacchetto non usa autoconf
  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
  </example>

  <p>Per trovare manualmente le esatte dipendenze per la compilazione di
  <prgn><var>/usr/bin/foo</var></prgn>, esegui
  <example>
  objdump -p <var>/usr/bin/foo</var> | grep NEEDED
  </example>
  e per ogni libreria elencata, per es. <prgn>libfoo.so.6</prgn>, esegui
  <example>
  dpkg -S libfoo.so.6 
  </example>
  A questo punto usa la versione -dev di ogni pacchetto come valore di
  `Build-deps'. Se usi <prgn>ldd</prgn> a questo scopo, ti verranno indicate
  anche tutte le librerie di dipendenza indiretta, col problema di un
  numero eccessivo di dipendenze per la compilazione.
  

  
  <p>Gentoo sembra richiedere <package/xlibs-dev/,
  <package/libgtk1.2-dev/ e <package/libglib1.2-dev/ per compilare,
  per cui li aggiungiamo dopo <package/debhelper/.
  
  <p>La riga 6 � la versione degli standard di Debian Policy che questo
  pacchetto segue, la versione del manuale di Policy che leggi mentre
  costruisci i pacchetti.

  <p>La riga 8 � il nome del pacchetto binario. Questo � generalmente lo
  stesso nome del sorgente, ma non deve necessariamente essere cos�.

  <p>La riga 9 descrive l'architettura di CPU per la quale il pacchetto
  binario � stato compilato. Possiamo lasciare il valore "any" perch� 
  <manref name="dpkg-gencontrol" section="1"> lo riempir� con il valore
  appropriato per qualsiasi macchina sulla quale questo pacchetto �
  stato compilato. 
  
  <p>Se il tuo
  pacchetto � indipendente dalla architettura (per esempio, uno script
  di shell o Perl, o un documento) modifica questo campo in "all", e
  leggi oltre in <ref id="rules"> sull'uso del metodo `binary-indep'
  invece di `binary-arch' per costruire un pacchetto.
  
  <p>La riga 10 mostra una della pi� potenti caratteristiche del sistema
  di pacchettizzazione Debian. I pacchetti possono far riferimento 
  l'uno all'altro in vari modi. Oltre a Depends:, altri campi di 
  relazione sono Recommends:, Suggests:, Pre-Depends:, Conflicts:, 
  Provides:, e Replaces:.

  <p>Gli strumenti di gestione dei pacchetti generalmente si comportano 
  nello stesso modo quando trattano queste relazioni; se cos� non �, viene spiegato.
  (vedi <manref name="dpkg" section="8">, <manref name="dselect" section="8">,
  <manref name="apt" section="8">, <manref name="aptitude" section="1"> ecc.)

  <p>Questo � ci� che le dipendenze significano:

  <p><list>
  <item>Depends:
  <p>Il pacchetto non sar� installato sino a quando i pacchetti da cui
  dipende non lo sono. Usa questo valore se il tuo programma non funziona
  affatto (o causa un serio malfunzionamento) quando un pacchetto
  particolare non � gi� presente.</item>

  <item>Recommends:
  <p>Alcuni frontend come dselect o aptitude ti chiederanno di installare
  i pacchetti raccomandati, insieme al tuo pacchetto; dselect insister�
  nel volerlo fare. Dpkg e apt-get invece, ingnorano questo campo.
  Usa questo valore per pacchetti che non sono strettamente
  necessari, ma tipicamente usati con il tuo programma.</item>

  <item>Suggests:
  <p>Quando un utente installa il tuo programma, tutti i frontend 
  chiedono verosimilmente se devono
  installare i pacchetti suggeriti. Dpkg e apt-get non se ne curano
  Usa questo valore per pacchetti che lavorano insieme al tuo
  programma, ma non sono affatto necessari. </item>

  <item>Pre-Depends:
  <p>Questo � pi� stringente di Depends:. Il pacchetto non sar�
  installato a meno che i pacchetti da cui pre-dipende non siano
  installati e  <em>correttamente configurati</em>. Usa questo valore
  con  <strong>molta</strong> prudenza, e solo dopo averne discusso
  nella mailing list debian-devel. Leggi: non usarlo affatto. :-)</item>

  <item>Conflicts:
  <p>Il pacchetto non sar� installato sino a quando tutti i pacchetti 
  con i quali va in conflitto non saranno stati rimossi.
  Usa questo valore se il tuo programma assolutamente non pu� girare
  (o causa un serio danno) se un particolare pacchetto � presente.</item>
  
  <item>Provides:
  <p>Per alcuni tipi di pacchetti dove ci sono alternative multiple
  sono stati definiti dei nomi virtuali. Puoi trovarne una lista 
  completa nel file
  /usr/share/doc/debian-policy/virtual-package-names-list.text.gz.
  Usa questo valore se il tuo programma fornisce una funzione di un
  pacchetto virtuale esistente .</item>

  <item>Replaces:
  <p>Usa questo valore quando il tuo programma sostituisce i file 
  di un altro pacchetto o sostituisce completamente un altro pacchetto
  (usato congiuntamente a Conflicts:). I file dei suddetti pacchetti
  saranno sostituiti con i file del tuo pacchetto.
  </item>
  </list>

  <p>Tutti questi campi hanno una sintassi uniforme. Sono una lista di
  nomi di pacchetti separati da virgole. Questi nomi di pacchetti
  possono anche essere liste di nomi di pacchetti alternativi, separati
  da una barra verticale <tt>|</tt> (simbolo di pipe). 
  
  <p>Questi campi
  possono restringere la propria applicabilit� a una particolare 
  versione di ciascun pacchetto. Tali versioni sono elencate in 
  parentesi dopo ogni nome di pacchetto, e dovrebbero contenere una 
  relazione fra le possibili qui in elenco, seguita da un numero di
  versione. Le relazioni consentite sono:  <tt>&lt;&lt;</tt>,
  <tt>&lt;=</tt>, <tt>=</tt>, <tt>&gt;=</tt> e
    <tt>&gt;&gt;</tt> che stanno per strettamente precedente, precedente
    o uguale, esattamente uguale, successiva o uguale, e strettamente
    successiva, rispettivamente. Per esempio,

  <p><example>
    Depends: foo (>= 1.2), libbar1 (= 1.3.4)
    Conflicts: baz
    Recommends: libbaz4 (>> 4.0.7)
    Suggests: quux
    Replaces: quux (<< 5), quux-foo (<= 7.6)
  </example>
  
  <p>L'ultima caratteristica che hai necessit� di conoscere �
  $(shlibs:Depends). Dopo che il tuo pacchetto sar� stato generato
  e installato nella directory temporanea,
  <manref name="dh_shlibdeps" section="1"> lo esaminer� alla ricerca
  di binari e librerie, determiner� le dipendenze da librerie condivise
  e stabilir� in quali pacchetti queste si trovano, come libc6 o xlib6g.
  Questo programma passer� la lista a <manref name="dh_gencontrol" section="1">
  che li metter� al posto giusto, e tu non dovrai preoccuparti di specificarle
  da solo.

  <p>Detto ci� possiamo lasciare la riga Depends: come � ora, e inserire
  un'altra riga dopo questa che dice <tt>Suggests: file</tt>,
  perch� gentoo pu� usare alcune funzionalit� offerte da quel 
  programma/pachetto.
  
  <p>La riga 12 � una breve descrizione. Gli schermi di molte persone
  sono larghi 80 colonne, per cui non dovrebbe essere di pi� di 60
  caratteri. Modificherai tale campo in "fully GUI configurable X file
  manager using GTK+".
  
  <p>La riga 13 contiene una descrizione estesa. Dovrebbe essere un 
  paragrafo dove vengono dati pi� dettagli sul pacchetto. La colonna 1
  di ogni riga dovrebbe essere vuota. Non ci devono essere righe
  vuote in mezzo, ma puoi mettere un . (punto) in una colonna, per simularle. 
  Inoltre, non ci deve essere pi� di una riga vuota dopo la descrizione.
  
  <p>Questo � il file control aggiornato:

  <p><example>
  1  Source: gentoo
  2  Section: x11
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
  5  Build-Depends: debhelper (>> 3.0.0), xlibs-dev, libgtk1.2-dev, libglib1.2-dev
  6  Standards-Version: 3.5.2
  7
  8  Package: gentoo
  9  Architecture: any
  10 Depends: ${shlibs:Depends}
  11 Suggests: file
  12 Description: fully GUI configurable GTK+ file manager
  13  gentoo is a file manager for Linux written from scratch in pure C. It
  14  uses the GTK+ toolkit for all of its interface needs. gentoo provides
  15  100% GUI configurability; no need to edit config files by hand and re-
  16  start the program. gentoo supports identifying the type of various
  17  files (using extension, regular expressions, or the 'file' command),
  18  and can display files of different types with different colors and icons.
  19  .
  20  gentoo borrows some of its look and feel from the classic Amiga file
  21  manager "Directory OPUS" (written by Jonathan Potter).
  </example>
  (Ho aggiunto i numeri di riga.)

  <sect id="copyright">Il file `copyright'

  <p>Questo file contiene le informazioni sui riferimenti, copyright
  e licenza del pacchetto upstream. Il suo formato non � dettato dalla 
  Policy, ma i contenuti lo sono (sezioni 12.6 "Informazioni di Copyright"). 
  
  <p>dh_make ne ha creato uno di default, quello di seguito:

  <p><example>
  1  This package was debianized by Josip Rodin &lt;joy-mg@debian.org&gt; on
  2  Wed, 11 Nov 1998 21:02:14 +0100.
  3
  4  It was downloaded from &lt;fill in ftp site&gt;
  5
  6  Upstream Author(s): &lt;put author(s) name and email here&gt;
  7
  8  Copyright:
  9
  10 &lt;Must follow here&gt;
  </example>
  (Ho aggiunto i numeri di riga.)

  <p>Le cose importanti da aggiungere a questo file sono l'indirizzo
  da cui il pacchetto � stato preso e l'effettiva nota di copyright e
  licenza. Devi includere la licenza completa, a meno che non sia una delle 
  comuni licenze di free software, come la GNU GPL o LGPL, la BSD o
  l'Artistic, nel quale caso puoi semplicemente fare riferimento
  all'opportuno file in /usr/share/common-licenses/ che esiste su tutti
  i sistemi Debian. 
  
  <p>In breve, ecco come il file copyright di gentoo appare:

  <p><example>
  1  This package was debianized by Josip Rodin &lt;joy-mg@debian.org&gt; on
  2  Wed, 11 Nov 1998 21:02:14 +0100.
  3
  4  It was downloaded from: ftp://ftp.obsession.se/gentoo/
  5
  6  Upstream author: Emil Brink &lt;emil@obsession.se&gt;
  7
  8  This software is copyright (c) 1998-99 by Emil Brink, Obsession
  9  Development.
  10
  11 You are free to distribute this software under the terms of
  12 the GNU General Public License.
  13 On Debian systems, the complete text of the GNU General Public
  14 License can be found in /usr/share/common-licenses/GPL file.
  </example>
  (Ho aggiunto i numeri di riga.)

  <sect id="changelog">Il file `changelog'

  <p>Questo � un file obbligatorio, che ha un formato speciale descritto
  nella Policy alla sezione 4.4 "debian/changelog". 
  Tale formato � usato da dpkg e
  altri programmi per ricavare il numero di versione, revisione,
  distribuzione e livello di urgenza del tuo pacchetto.
  
  <p>Per te � ugualmente importante dal momento che � una buona 
  cosa aver documentato tutte le modifiche apportate. Questo aiuter� 
  chi scarica il tuo pacchetto a vedere velocemente se ci sono problemi 
  non risolti con il pacchetto, che dovrebbe sapere. Sar� salvato come
  `/usr/share/doc/gentoo/changelog.Debian.gz' nel pacchetto binario.
  
  <p>dh_make ne crea uno di default, che appare cos�:

  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4
  5  -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
  6
  7  Local variables:
  8  mode: debian-changelog
  9  End:
  </example>
  (Ho aggiunto i numeri di riga.)

  <p>La riga 1 � il nome del pacchetto, versione, distribuzione e
  livello di urgenza. Il nome deve corrispondere al nome del pacchetto
  sorgente, la distribuzione dovrebbe essere `unstable' o `experimental'
  (per ora), e il livello non dovrebbe essere modificato in qualcosa
  maggiore di `low'. :-).

  <p>Le righe 3-5 sono voci di log, dove documenti le modifiche fatte 
  nella revisione del pacchetto (non le modifiche di upstream - c'� un 
  file speciale a tale scopo, creato dall'autore di upstream, installato
  come /usr/share/doc/gentoo/changelog.gz). Le nuove righe devono essere
  inserite prima della riga pi� in alto, che inizia con un asterisco
  (`*'). Puoi farlo con <manref name="dch" section="1">, <manref
  name="emacs" section="1"> o a mano con un editor di testo. 
  
  <p>Devi metterci qualcosa di questo genere:
  
  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4   * This is my first Debian package.
  5   * Adjusted the Makefile to fix $DESTDIR problems.
  6
  7  -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
  8
  </example>
  (Ho aggiunto i numeri di riga.)

  <p>Puoi leggere altro sull'aggiornamento del file changelog pi� oltre 
  in <ref id="update">.

  <sect id="rules">Il file `rules'

  <p>Ora occorre dare una occhiata alle regole esatte che 
  <manref name="dpkg-buildpackage" section="1"> user� per creare
  effettivamente il pacchetto. Questo file � in effetti un altro
  Makefile, ma diverso da quello dei sorgenti upstream.
  Diversamente da altri file in debian/, questo � marcato come
  eseguibile.
  
  <p>Tutti i file `rules', come ogni Makefile, consistono di diverse
  regole che specificano come gestire i sorgenti. Ogni regola consiste
  di target e nomi di file o nomi di azione che devono essere intraprese
  (per es. `build:' o `install:'.) Le regole che tu vuoi siano eseguite
  sono invocate come argomenti a riga di comando (per esempio,
  `./debian/rules build' o `make -f rules install'.) Dopo il nome del
  target, puoi fornire i nomi delle dipendenze, il programma o file da
  cui dipende quella regola. A seguire, ci pu� essere un qualsiasi
  numero di comandi (indentati con  &lt;tab&gt;!), finch� si trova
  una riga vuota. Da quel punto inizia un'altra regola. Righe vuote
  multiple e linee che iniziano con `#' (hash) sono trattate come
  commenti e ignorate

  <p>Sarai probabilmente confuso ora, ma sar� tutto pi� chiaro dopo
  l'esame del file  `rules' che dh_make fornisce come default. Dovresti
  anche leggere la voce `make' in info per maggiori informazioni.

  <p>La cosa importante da capire, a proposito del file rules creato da dh_make,
  � che si tratta solo di un suggerimento. Funzioner� per semplici
  pacchetti, ma per i pi� complicati non avere remore nell'aggiungere o togliere
  qualcosa ad esso, per accomodarlo alle tue necessit�. L'unica cosa che
  non devi modificare sono i nomi delle regole, perch� gli strumenti usano tutti
  gli stessi nomi, come richiesto dalla Policy.
  
  <p>Ecco (approssimativamente) come appare il file di default debian/rules
  che dh_make ha generato:

  <p><example>
&makefile;
  </example>
  (Ho aggiunto i numeri di riga.)

  <p>Hai probabilmente familiarit� con righe come la prima, dagli
  script di shell e Perl. Essa dice al sistema operativo che questo file
  deve essere processato usando /usr/bin/make. 

  <p>Il senso delle variabili DH_* menzionate alle righe 8 e 9 dovrebbe
  essere evidente dalla breve descrizione. Per maggiori informazioni su
  DH_COMPAT leggi la sezione "livelli di compatibilit� di Debhelper"
  della <manref name="debhelper" section="1">pagina di manuale.
  
  <p>Le righe da 11 a 16 sono schemi di supporto per i parametri DEB_BUILD_OPTIONS,
  descritti nella sezione 10.1 "Binari" della Policy. Di base queste cose
  controllano se i binari sono creati con i simboli per il debugging,
  e se questi possono essere eliminati al momento della installazione.
  Di nuovo, si tratta solo di uno schema, un suggerimento che dovresti
  seguire. Dovresti controllare come il sistema di compilazione dell'upstream
  gestisce l'inclusione di simboli di debugging e la loro cancellazione
  in installazione e implementare il tutto tu stesso.
  
  <p>Generalmente puoi dire al gcc di compilare con "-g" usando la
  variabile CFLAGS -- se questo � il caso del tuo pacchetto, propaga
  la variabile <em>aggiungendo</em> <tt>CFLAGS="$(CFLAGS)"</tt> alla
  chiamata $(MAKE) nella regola build (vedi oltre). In alternativa,
  se il tuo pacchetto usa uno script configure di autoconf, puoi passarlo
  a configure <em>premettendo</em> la suddetta stringa alla invocazione
  di ./configure nella regola di build.

  <p>A proposito di stripping, i programmi sono configurati comunemente
  per essere installati non strippati, e spesso senza una opzione
  per modificare questa cosa. Fortunatamente, 
  hai anche <manref name="dh_strip" section="1"> che controller� se
  il flag DEB_BUILD_OPTIONS=nostrip � configurato e terminer� 
  silenziosamente.
  
  <p>Le righe dalla 18 alla 26 descrivono la regola `build' (e la figlia
   `build-stamp') che lanciano make con il Makefile proprio della 
   applicazione per compilare il programma. Se il tuo pacchetto usa le utilit�
   di configurazione GNU per creare i binari, assicurati assolutamente di
   leggere <file>&autotools-dev;</file> .
   Parleremo dell'esempio commentato docbook-to-man pi� avanti in <ref id="manpage">.
  
  <p>La regola `clean', come specificata nelle righe 28-36, ripulisce
  ogni binario non necessario e file autogenerati, lasciati in giro
  dalla creazione del pacchetto. Questa regola deve lavorare tutte le
  volte (anche quando l'albero dei sorgenti <em/�/ gi� ripulito!), 
  per cui usa le opzioni di forzatura (per es. per rm, � -f), 
  oppure fai in modo che make ignori i
  valori di ritorno (errori) usando un `-' prima del nome del comando.
  
  <p>Il processo di installazione, la regola `install', inizia a riga 38.
  Fondamentalmente lancia la regola `install' del Makefile del programma,
  ma installa nella directory <tt>$(CURDIR)/debian/gentoo</tt> - 
  questo � il motivo per cui abbiamo
  specificato $(DESTDIR) come directory radice per l'installazione nel
  Makefile di gentoo.
  
  <p>Come suggeriscono i commenti, la regola `binary-indep', alla riga
  48, � usata per costruire i pacchetti indipendenti dalla architettura.
  Dal momento che non ne abbiamo, non verr� fatto niente in questo caso. 
  
  <p>Fino alla prossima regola - `binary-arch', dalla riga 52 alla 79,
  lanciamo una serie di piccoli programmi di utilit� dal pacchetto debhelper 
  che svolgono varie operazioni sui file del tuo pacchetto per renderlo
  conforme alla Policy.
  
  <p>Se il
  tuo pacchetto fosse del tipo `Architecture: all', avresti bisogno di
  includere tutti i comandi per costruire i pacchetti sotto la regola `binary-indep',
  e lasciare la regola `binary-arch' vuota, invece.
  
  <p>I nomi dei programmi di debhelper iniziano con dh_, e il resto � 
  la descrizione di cosa fa effettivamente il programma di utilit�. 
  � tutto abbastanza auto esplicativo, ma ecco
  qualche spiegazione addizionale:
  
  <list>
  <item><manref name="dh_testdir" section="1"> controlla di trovarsi 
          nella giusta directory (cio� la directory superiore dei
        sorgenti),
  <item><manref name="dh_testroot" section="1"> controlla che tu abbia
          i privilegi di root che sono necessari per i target  `binary-arch',
        `binary-indep' e 'clean',
  <item><manref name="dh_installman" section="1"> 
          copia tutte le pagine di man al posto giusto nella directory
        destinazione, devi solo dirgli dove sono relativamente alla
        directory superiore dei sorgenti,
  <item><manref name="dh_strip" section="1">
          elimina le intestazioni per il debugging dagli eseguibili e
        librerie, per renderli pi� piccoli,
  <item><manref name="dh_compress" section="1"> comprime pagine di 
          man e documentazioni pi� grandi di 4kB con <manref name="gzip" section="1">,
  <item><manref name="dh_installdeb" section="1"> copia i file legati
          al pacchetto (per es. gli script da maintainer) sotto la 
        directory <file>debian/gentoo/DEBIAN</file>,
  <item><manref name="dh_shlibdeps" section="1"> calcola le dipendenze
          da librerie condivise di librerie ed eseguibili,
  <item><manref name="dh_gencontrol" section="1"> installa una versione
          modificata del file di controllo in <file>debian/gentoo/DEBIAN</file>,
  <item><manref name="dh_md5sums" section="1"> genera i codici di
          controllo MD5 per tutti i file del pacchetto.
  </list>

  <p>Per informazioni pi� complete su cosa fanno tutti questi script
  dh_*, e quali sono le loro altre opzioni, leggi le rispettive pagine di
  manuale. Ci sono alcuni altri, alle volte utili, script dh_*, che non
  sono menzionati qui. Se ne avessi bisogno, leggi la documentazione
  di debhelper.
  
  <p>La sezione binary-arch � quella dove dovresti effettivamente
  commentare qualsiasi riga che richiama funzionalit� che non occorrono.
  Per gentoo, commenter� tutte le righe su examples, cron, init, man and info,
  semplicemente perch�
  gentoo non le richiede. Inoltre alla linea 68, avr� bisogno di
  sostituir� `ChangeLog' con `FIXES', 
  perch� � il nome reale del file di changelog dell'upstream. 

  <p>Le ultime due righe (insieme con le altre non spiegate qui) sono
  solo cose pi� o meno necessarie, delle quali puoi leggere nel manuale
  del make e nella Policy. Al momento, non � essenziale conoscerle.
  
  <chapt id="dother">Altri file sotto debian/

  <p>Vedrai che ci sono altri file nella sottodirectory debian/, molti dei
  quali con suffisso `.ex', che sta a indicare degli esempi. 
  Dagli una occhiata. Se volessi
  usarli o avessi necessit� di usarne le funzionalit�:
   
  <list>
          <item>esamina la documentazione relativa (suggerimento: il Policy Manual),
          <item>se necessario modifica i file per adattarli alle tue necessit�,
        <item>rinominali per eliminare il suffisso `.ex' se ne hanno uno, 
        <item>modifica il file rules se necessario.
  </list>
  
  <p>Alcuni di questi file, quelli pi� comunemente usati, sono
  spiegati nelle sezioni seguenti.
  
  <sect id="readme">README.Debian

  <p>Qualsiasi dettaglo extra o discrepanza fra il pacchetto originale
  e la versione debianizzata, deve essere documentata qui. 
  
  <p>dh_make ne crea uno di default, che appare come segue:

  <example>
  gentoo for Debian
  ----------------------

  &lt;possible notes regarding this package - if none, delete this file&gt;

   -- Josip Rodin &lt;joy-mg@debian.org&gt;, Wed, 11 Nov 1998 21:02:14 +0100
  </example>

  <p>Poich� non dobbiamo aggiungere niente qui, cancelleremo questo file.

  <sect id="conffiles">conffiles.ex

  <p>Una delle esperienze pi� tedianti con il software, capita quando si passa 
  parecchio tempo a configurare con tutti gli sforzi un programma, per vedersi
  poi cancellate tutte le modifiche effettuate, a seguito di un aggiornamento.
  Debian risolve questo problema marcando i file di configurazione in modo
  che quando si aggiorna un pacchetto venga richiesto se si vogliono
  conservare i vecchi file di configurazione, o meno. 
  
  <p>Il modo di fare questo in un pacchetto � inserire il path completo 
  di ciascun file di
  configurazione (generalmente in /etc), uno per riga, in un file che si
  chiama <tt/conffiles/. Gentoo ha un file di configurazione, /etc/gentoorc, 
  e lo inseriremo nel file <tt/conffiles/. 

  <p>Se il programma che stai pacchettizzando richiede che ogni utente
  modifichi il file di configurazione per funzionare, prendi in
  considerazione la possibilit� di non marcarlo come conffile.

  <p>Puoi gestire degli esempi di configurazione dagli `script del
  maintainer', per maggiori informazioni vedi <ref id="maintscripts">.

  <p>Se il tuo programma non ha conffiles, puoi in tutta sicurezza
  cancellare il file <tt/conffiles/ dalla directory debian/.

  <sect id="crond">cron.d.ex

  <p>Se il tuo pacchetto richiede che compiti regolarmente schedulati
  siano svolti in modo appropriato, puoi usare questo file per configurarli.

  <p>Nota che questo non include la rotazione dei log; per quello
  guarda <manref name="dh_installlogrotate" section="1"> e
  <manref name="logrotate" section="8">.

  <p>In caso contrario rimuovilo.

  <sect id="dirs">dirs

  <p>Questo file specifica le directory che occorrono, ma che la normale 
  procedura di installazione (make install), per qualche motivo, non crea.

  Per default, contiene:
  <p><example>
  usr/bin
  usr/sbin
  </example>

  <p>Osserva che lo slash prefisso non � incluso. Cambieremo normalmente
  tale file come segue:

  <p><example>
  usr/bin
  usr/man/man1
  </example>
  
  <p>ma queste directory sono gi� create nel Makefile, per cui non ci serve
  tale file, e lo cancelleremo.

  <sect id="docs">docs
  
  <p>Questo file specifica i nomi dei file di documentazione che possiamo
  far installare a dh_installdocs nella directory temporanea per noi.

  <p>Per default, includer� tutti i file esistenti nella directory 
  principale dei sorgenti che si chiamano "BUGS", "README*", "TODO", ecc.

  <p>Per gentoo, ho incluso anche qualcos'altro:

  <p><example>
  BUGS
  CONFIG-CHANGES
  CREDITS
  ONEWS
  README
  README.gtkrc
  TODO
  </example>

  <p>Possiamo anche rimuovere questo file e invece elencare quei file
  sulla riga di comando di <tt/dh_installdocs/ nel file  <tt/rules/,
  in questo modo:

  <p><example>
          dh_installdocs BUGS CONFIG-CHANGES CREDITS ONEWS README \
                         README.gtkrc TODO
  </example>
  
  <p>Per quanto inversomile possa sembrare, potresti non avere nessuno
  di questi file nella directory dei sorgenti del pacchetto. In tal
  caso potresti in tutta sicurezza cancellare questo file. Ma non
  rimuovere la chiamata <tt/dh_installdocs/ nel file <tt/rules/ 
  perch� � usata per installare il file <tt/copyright/ e altre cose.
  
  <sect id="emacsen">emacsen-*.ex

  <p>Se il tuo pacchetto fornisce dei file Emacs che possono essere 
  compilati al momento della installazione, puoi usare questi file
  per configurarlo.

  <p>Sono installati nella directory temporanea da
  <manref name="dh_installemacsen" section="1">, per cui non dimenticare
  di decommentare quella riga nel file <tt/rules/ se lo usi.

  <p>Se non ti servono, rimuovili.
  
  <sect id="initd">init.d.ex

  <p>Se il tuo pacchetto � un daemon che richiede di essere lanciato
  alla partenza del sistema, hai ovviamente ignorato la mia 
  raccomandazione iniziale, vero? :-)

  <p>Questo � uno schema di file abbastanza generico per uno script
  da <file>/etc/init.d/</file>, per cui dovrai verosimilmente modificarlo
  parecchio. Viene installato nalla directory temporanea da 
  <manref name="dh_installinit" section="1">.
  
  <p>Se non ti serve, rimuovilo.

  <sect id="manpage">manpage.1.ex, manpage.sgml.ex


  <p>Il tuo programma dovrebbe avere una pagina di man. Se non ce l'ha
  questo file contiene lo scheletro di una pagina che puoi riempire. 

  <p>Le pagine di manuale sono normalmente scritte in 
  <manref name="nroff" section="1">. L'esempio <tt/manpage.1.ex/
  � scritto in nroff, anche.
  Vedi la pagina di manuale relativa a <manref name="man" section="7">,
  per una breve descrizione di come modificare tale file. 
  
  <p>Se d'altro canto preferisci scrivere in SGML invece che in nroff
  puoi usare lo schema in <tt/manpage.sgml.ex/. Se lo fai, devi:
  <list>
          <item>installare il pacchetto <package/docbook-to-man/
        <item>aggiungere <tt/docbook-to-man/ alla riga <tt/Build-Depends/
        nel file <tt/control/
        <item>rimuovere il commento dalla chiamata di docbook-to-man
        nella regola `build' del tuo file <tt/rules/
  </list>

  <p>E ricorda di rinominare il file in qualcosa tipo <tt/gentoo.sgml/!

  <p>Il nome della pagina finale di manuale dovrebbe includere il
  nome del programma che sta documentando, per cui la rinomineremo da
  "manpage" a "gentoo".
  Questo nome di file include ".1" come primo suffisso, il che indica
  che � una pagina di manuale per un comando utente. Assicurati che 
  questa sezione sia di fatto quella corretta. 
  Ecco una breve lista delle sezioni di pagina di man:
  
  <p><example>
  Sezione |     Descrizione      |     Note
     1     User commands          Comandi e script eseguibili
     2     System calls           Funzioni del kernel
     3     Library calls          Funzioni delle librerie di sistema
     4     Special files          File di /dev
     5     File formats           Per es. formato di /etc/passwd
     6     Games                  O programmi frivoli 
     7     Macro packages         Come le macro di man.
     8     System administration  Programmi usati da root.
     9     Kernel routines        Chiamate non standard e interne
  </example>
  
  <p>Cos� la manpage di gentoo dovrebbe chiamarsi <tt/gentoo.1/.
  Non c'era nessuna pagina man gentoo.1 nei sorgenti
  originali, per cui ne ho scritta una, usando le informazioni
  dell'esempio e la documentazione dall'upstream.
 
  <sect id="menu">menu.ex

  <p>Gli utenti di X Window generalmente hanno un window manager con un
  menu che pu� essere adattato per lanciare programmi. Se � stato installato  
  il pacchetto <package/menu/, verr� creato un insieme di menu per ciascun
  programma del sistema. 
  
  <p>Questo � il file <tt/menu.ex/ che di default dh_make crea:
  
  <p><example>
  ?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual\
    title="gentoo" command="/usr/bin/gentoo"
  </example>

  <p>Il primo campo dopo i due punti � "needs", e specifica di che 
  tipo di interfaccia il programma
  ha bisogno. Modificalo in una delle alternative in elenco,
  per esempio "text" o "X11". 
  
  <p>Il successivo � "section", dove voce
  di menu e sottomenu dove dovrebbe apparire. L'elenco corrente delle
  sezioni si trova in:
  <file>/usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1</file>
  
  <p>Il campo "title" � il nome del programma. Puoi iniziarlo in 
  maiuscolo se preferisci. Solo, mantienilo breve.
  
  <p>Infine, il campo "command" � la riga di comando
  che lancia il programma.
  
  <p>Adesso, cambieremo la voce di menu in questo:
  
  <p><example>
  ?package(gentoo):needs=X11 section=Apps/Tools \
    title="Gentoo" command="gentoo"
  </example>

  <p>Puoi anche aggiungere altri campi come "longtitle", "icon", "hints", ecc.
  <p>Vedi <manref name="menufile" section="5">, <manref name="update-menus" section="1">
  e <file>/usr/share/doc/debian-policy/menu-policy.html/</file> 
  per maggiori informazioni.

  <sect id="watch">watch.ex

  <p>Questo file � usato per configurare
  <manref name="uscan" section="1">
  e <manref name="uupdate" section="1"> (nel pacchetto <package/devscripts/)
  Sono usati per controllare il sito da dove hai recuperato il 
  sorgente originale.
  
  <p>Questo � quello che vi ho inserito:

  <p><example>
# watch control file for uscan
# Site            Directory  Pattern              Version  Script
ftp.obsession.se  /gentoo    gentoo-(.*)\.tar\.gz  debian  uupdate
  </example>

  <p>Suggerimento: collegati a Internet, 
  e prova a eseguire "uscan" nella directory del programma, dopo avere
  creato il file. E leggi le pagine di manuale! :)

  <sect id="doc-base">ex.package.doc-base

  <p>Se il tuo pacchetto ha altra documentazione a
  parte le pagine man e i documenti info, dovresti usare il file
  `<package/doc-base/'
  per registrarle, in modo che l'utente possa trovarle, con
  <manref name="dhelp" section="1">, <manref name="dwww" section="1"> 
  o <manref name="doccentral" section="1">,
  per esempio.

  <p>Questo in genere include file HTML,PS e PDF, distribuiti in
  <file>/usr/share/doc/packagename/</file>.

  <p>Il file doc-base di gentoo appare come segue:

  <p><example>
  Document: gentoo
  Title: Gentoo Manual
  Author: Emil Brink
  Abstract: This manual describes what Gentoo is, and how it can be used.
  Section: Apps/Tools

  Format: HTML
  Index: /usr/share/doc/gentoo/html/index.html
  Files: /usr/share/doc/gentoo/html/*.html
  </example>

  <p>Per informazioni sul formato del file, vedi 
  <manref name="install-docs" section="8">
  e il manuale di <package/doc-base/, 
  in <file>/usr/share/doc/doc-base/doc-base.html/</file>.

  <sect id="maintscripts">postinst.ex, preinst.ex, postrm.ex, prerm.ex

  <p>Questi file sono chiamati script del maintainer. Sono script posti
  nell'area di controllo del pacchetto e lanciati da <prgn/dpkg/ quando il 
  tuo pacchetto � installato, aggiornato o rimosso.

  <p>Per il momento, dovresti evitare qualsiasi modifica manuale degli
  script, se possibile, perch� sono complicati. Per maggiori
  informazioni guarda il Policy Manual alla sezione 6, e dai una
  occhiata a questi file di esempio forniti da dh_make.

  <chapt id="build">Costruzione del pacchetto

  <p>A questo punto, dovresti essere pronto a creare il pacchetto.

  <sect id="completebuild">Costruzione completa
  
  <p>Spostati nella directory principale del programma e lancia il
  comando:

  <p><example>
  dpkg-buildpackage -rfakeroot
  </example>

  <p>Questo far� tutto il necessario per te.
  <list>
          <item>pulir� l'albero dei sorgenti (debian/rules clean), usando <prgn/fakeroot/
        <item>costuir� il pacchetto sorgente (dpkg-source -b)
        <item>costruir� il programma (debian/rules build)
        <item>costruir� il pacchetto binario (debian/rules binary), usando <prgn/fakeroot/
        <item>firmer� il file sorgente <tt/.dsc/, usando <prgn/gnupg/
        <item>creer� e firmer� il file di upload <tt/.changes/ usando
                <prgn/dpkg-genchanges/ e <prgn/gnupg/
  </list>
      
  <p>Il solo input da te richiesto � tua chiave PGP segreta, due volte. 
  
  <p>Fatto ci�, vedrai quattro nuovi
  file nella directory di cui sopra (<tt>~/debian/</tt>):   
  
  <p><list>
  <item><em>gentoo_0.9.12.orig.tar.gz</em>
  
  <p>Questo � il codice sorgente originale, semplicemente
  rinominato in questo modo in modo da aderire allo standard Debian.
  Osserva che questo � stato creato usando l'opzione `-f'
  per <prgn/dh_make/ quando � stato inizialmente lanciato.
  
  <item><em>gentoo_0.9.12-1.dsc</em>
  
  <p>� un sommario del contenuto del codice sorgente. Questo file �
  generato dal tuo file `control', ed � usato
  quando si scompatta il sorgente con  <manref name="dpkg-source"
  section="1">. Questo file � firmato con GPG, in modo che si possa 
  essere sicuri che effettivamente � fatto da te. 
  
  <item><em>gentoo_0.9.12-1.diff.gz</em>
  
  <p>Questo file compresso contiene ogni singola modifica fatta al
  codice sorgente originale, in una forma nota come "diff unificata".
  Viene creata e usata da <manref name="dpkg-source" section="1">.
  Attenzione: se non chiami il file di distribuzione originale 
  packagename_version.orig.tar.gz, <prgn/dpkg-source/ non riuscir�
  a creare il file .diff.gz correttamente!

  <p>Se qualcun altro volesse ri-creare il tuo pacchetto da zero,
  potrebbe farlo facilmente usando i suddetti tre file.
  La procedura di estrazione � banale: copiare semplicemente i tre file
  da qualche parte e lanciare <tt>dpkg-source -x gentoo_0.9.12-1.dsc</tt>.

  <item><em>gentoo_0.9.12-1_i386.deb</em>

  <p>Questo � il pacchetto binario completo. Puoi usare <prgn/dpkg/
  per installarlo e rimuoverlo, come per ogni altro pacchetto.

  <item><em>gentoo_0.9.12-1_i386.changes</em>
  
  <p>Questo file descrive tutte le modifiche fatte nella revisione
  corrente del pacchetto, ed � usata dai programmi di mantenimento
  dell'archivio FTP di Debian per installare i pacchetti binari 
  e sorgenti. � parzialmente generato dal contenuto del file
  `changelog' e dal file .dsc. Questo file � firmato con GPG, 
  in modo che si possa essere sicuri che � effettivamente tuo.

  <p>Quando lavori sul pacchetto, cambieranno le modalit� di
  funzionamento e nuove funzionalit�
  potranno essere aggiunte. Quelli che scaricano il tuo pacchetto, possono
  quardare questo file per vedere velocemente quali sono i cambiamenti.
  I programmi di mantenimento dell'archivio Debian invieranno anche
  i contenuti di questo file alla mailing list debian-devel-changes.
  </list>
  
  Le lunghe stringhe di numeri nei file .dsc e .changes sono 
  codici di controllo MD5 per i file
  menzionati. Chi scarica questi file, pu� controllarli con <manref
  name="md5sum" section="1"> e se i numeri non corrispondessero
  saprebbe che il file relativo � corrotto, o � stato alterato. 

  <sect id="quickrebuild">Ricostruzione veloce

  <p>Con un grosso pacchetto, potresti non voler ricostruire tutto da zero,
  ogni volte che modifichi un dettaglio in debian/rules. Per motivi
  di testing puoi creare un file .deb, ricostruendo i sorgenti upstream
  come segue:
  
  <p><example>
  fakeroot debian/rules binary
  </example>

  <p>Una volta finito con i tuoi aggiustamenti, ricorda di ricostruire
  usando la giusta procedura. Potresti non essere in grado 
  di caricare il pacchetto correttamente se provi con dei file .deb
  creati in questo modo.

  <sect id="debuild">Il comando <prgn>debuild</prgn>

  <p>Puoi automatizzare il processo di creazione di un package
  ulteriormente con il comando <prgn>debuild</prgn>.  
  Vedi <manref name="debuild" section="1">.
  
  <p>La configurazione del comando debuild pu� essere fatta
  usando <file>/etc/devscripts.conf</file> o <file>~/.devscripts</file>. 

  Suggerisco almeno le seguenti impostazioni:

  <p><example>
  DEBSIGN_KEYID="Your_GPG_keyID"
  DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -ICVS -I.svn"
  </example>
  Con tali opzioni, puoi creare i pacchetti sempre usando la tua chiave GPG
  ed evitare di includere componenti non richieste. (Questo � utile anche per le
  sponsorizzazioni.) Per esempio, ripulire i sorgenti e ricreare il pacchetto
  da un account utente si fa semplicemente con:

  <p><example>
  debuild clean
  debuild
  </example>

  <sect id="dpatch">Il sistema <prgn>dpatch</prgn>
  <p>
  Il semplice impiego dei comandi <prgn>dh_make</prgn> e
  <prgn>dpkg-buildpackage</prgn> crea un singolo grosso file
  <file>diff.gz</file> che contiene i file di mantenimento in
  <file>debian/</file> e i file di patch ai sorgenti. 
  Un file cos� fatto � ingombrante da esaminare e comprendere 
  per ogni successiva modifica successiva all'albero dei sorgenti.
  Questo non � bello.

  <footnote>
  Se non sei ancora uno sviluppatore Debian e chiedi al tuo sponsor
  di caricare il tuo pacchetto dopo averlo esaminato, dovresti rendere
  il pi� possibile semplice per lui l'analisi.
  </footnote>
  <p>
  Diversi metodi man il mantenimento di insiemi di patch sono stati proposti
  e sono in uso nei pacchetti Debian. Il sistema <prgn>dpatch</prgn> � uno
  dei pi� semplici di tali sistemi di mantenimento delle patch. Altri sono
  dbs, cdbs, ecc.
  
  <p>
  Un pacchetto che sia pacchettizzato in modo appropriato con <prgn>dpatch</prgn> 
  ha modifiche al sorgente chiaramente documentate come file di insiemi 
  di patch in <file>debian/patches/</file> mentre l'albero dei sorgenti
  non e' modificato al di fuori della directory
  <file>debian/</file>. Se chiedi a uno sponsor di caricare il tuo package,
  questo tipo di chiara separazione e documentazione delle tue modifiche
  � molto importante per rendere veloce l'analisi da parte del tuo sponsor.
  Il metodo di uso di <prgn>dpatch</prgn> � spiegato in
  <manref section="1" name="dpatch">.
  <p>
  Quando qualcuno (incluso te stesso) ti fornisce una patch per il sorgente
  successivamente, la modifica del pacchetto sotto dpatch � alquanto semplice:
  <list compact>
  <item>Edita la patch per renderla una patch di tipo -p1 per il sorgente.
  <item>Aggiungi una intestazione usando il programma <prgn>dpatch patch-template</prgn>.
  <item>Mettila in <file>debian/patches</file>
  <item>Aggiungi il nome della patch all'elenco nel file <file>debian/patches/00list</file>
  </list>
  <p>
  Inoltre, <prgn>dpatch</prgn> ha la capacit� di rendere le patch dipendenti da
  architettura, usando macro CPP.

  <sect id="option-sa">Includere <file>orig.tar.gz</file> per il caricamento.
  <p>
  Quando inserisci per la prima volta il pacchetto nell'archivio, devi includere
  il file dei sorgenti originali <file>orig.tar.gz</file>.  
  Se la versione del pacchetto non ha una revisione Debian 
  <tt>-0</tt> o <tt>-1</tt>, devi aggiungere al comando 
  <prgn>dpkg-buildpackage</prgn> l'opzione "<tt>-sa</tt>".
  Al contrario, l'opzione "<tt>-sd</tt>" forzer� l'esclusione del sorgente
  originale <file>orig.tar.gz</file>.

  <chapt id="checkit">Controllare il pacchetto per errori
  <p>
  <sect id="lintians">I pacchetti <package>lintian</package>

  <p>Lancia <manref name="lintian" section="1">
  sul tuo file .changes;
  questo programma fa una verifica in merito a molti comuni errori di
  pacchettizzazione. I comando sono:
  
  <p><example>
  lintian -i gentoo_0.9.12-1_i386.changes
  </example>
  
  <p>Ovviamente, sostituisci il nome del file con il nome del file
  changes generato per il tuo pacchetto. Se sembra che ci siano errori
  (le righe che iniziano con E:), leggi la spiegazione (le righe con
  N:), correggi e ricostruisci come descritto in <ref id="completebuild">.  
  Se ci sono righe che iniziano con  W:, si tratta di warning, per cui
  aggiusta il pacchetto o verifica che i warning siano spuri (e crea
  gli ovverrides per Lintian; vedi la documentazione per i dettagli) 
  
  <p>Nota che puoi creare il pacchetto con <prgn/dpkg-buildpackage/ , e lanciare
  <prgn/lintian/ con un solo comando con
  <manref name="debuild" section="1">.
  
  <sect id="mc">Il comando <prgn>mc</prgn>

  <p>Puoi spacchettare il contenuto di un pacchetto <file>*.deb</file> con il comando <manref
  name="dpkg-deb" section="1"> command. Puoi vedere il contenuto di un pacchetto Debian con  
  <manref name="debc" section="1">.
  <p>
  Tutto ci� pu� essere fatto in modo intuitivo usando un file manager come 
  <manref name="mc" section="1"> che permette non solo l'esame di un pacchetto <file>*.deb</file>
  ma anche di file <file>*.diff.gz</file> e <file>*.tar.gz</file>
  <p> 
  Fa attenzione a file non necessari extra o di dimensione nulla, sia nei pacchetti
  binari che sorgenti. Spesso le cose non vengono ripulite come dovrebbero: modifica
  il tuo file rules per farlo.
  <p>
  Suggerimento: `<tt>zgrep ^+++ ../gentoo_0.9.12-1.diff.gz</tt>' ti fornir� una lista
  delle modifiche/aggiunte ai file sorgenti, e `<tt>dpkg-deb -c gentoo_0.9.12-1_i386.deb</tt>' o
  `<tt>debc gentoo_0.9.12-1_i386.changes</tt>' ti fornir� l'elenco dei file nel pacchetto
  binario.

  <sect id="debdiff">Il comando <prgn>debdiff</prgn>

  <p>Puoi confrontare le liste dei file in due pacchetti binari Debian con
  il comando <manref name="debdiff" section="1">.  Questo � utile per 
  verificare che nessun file sia stato non intenzionalmente spostato o 
  rimosso, e non siano state fatte modifiche inavvertite nell'aggiornamento
  del pacchetto.
  Puoi verificare gruppi di file <file>*.deb</file> semplicemente con
  `<tt>debdiff old-package.change new-package.change</tt>'.

  <sect id="interdiff">Il comando <prgn>interdiff</prgn>

  <p>Puoi confrontare due file <file>diff.gz</file> con il comando <manref
  name="interdiff" section="1">. Questo � utile per verificare che non ci
  siano modifiche inavvertite fatte sui sorgenti dal maintainer aggiornando
  i pacchetti. Esegui `<tt>interdiff -z old-package.diff.gz
  new-package.diff.gz</tt>'.

  <sect id="debi">Il comando <prgn>debi</prgn>
  
  <p>Installa il pacchetto per testarlo tu stesso, per esempio usando il
  comando <manref name="debi" section="1"> come root. 
  Prova a installarlo e lanciarlo su una macchina che non sia la tua, e 
  verifica qualsiasi errore o warning durante l'installazione o l'esecuzione.

  <sect id="pbuilder">Il pacchetto <package>pbuilder</package>
  <p>
  Il pacchetto <package>pbuilder</package> � molto utile per verificare le 
  dipendenze di creazione del pacchetto da un ambiente di compilazione sano e minimale (chroot).
  Questo assicura compilazioni pulite dai sorgenti sotto un compilatore automatico (auto-builder)
  per differenti architetture ed evita i bug FTBS (Fails To Build from Source) di severit� seria, che sono
  sempre di categoria RC (Critici per il Rilascio). Vedi <url id="&buildd-home;"> per maggiori
  informazioni sul compilatore automatico di pacchetti Debian. 
  
  <p>
  L'uso di base pi� importante del pacchetto <package>pbuilder</package>  
  � la invocazione diretta del comando <prgn>pbuilder</prgn> come root.
  Per esempio, scrivi i comandi che seguono nella directory in cui
  si trovano i file <file>.orig.tar.gz</file>, <file>.diff.gz</file>, e <file>.dsc</file>
  per creare un pacchetto.
  <example>
  root # pbuilder create # if second time, pbuilder update
  root # pbuilder build foo.dsc
  </example>
  Il nuovo pacchetto cos� creato sar� localizzato in
  <file>/var/cache/pbuilder/result/</file> con propriet� assegnata a root.
  <p>
  Il comando <prgn>pdebuild</prgn> aiuta ad usare 
  le funzioni del pacchetto <package>pbuilder</package> come utente ordinario.
  In questo modo, dalla radice dell'albero dei sorgenti, avendo il file
  <file>orig.tar.gz</file> nella directory superiore, puoi eseguire i comandi
  seguenti:
  <example>
  $ sudo pbuilder create # if second time, sudo pbuilder update
  $ pdebuild
  </example>
  I pacchetti creati saranno collocati in
  <file>/var/cache/pbuilder/result/</file> con proprietario non-root.
<footnote>
Al momento, suggerisco di configurare il tuo sistema con la directory
<file>/var/cache/pbuilder/result/</file> scrivibile dall'utente
e impostare <file>~/.pbuilderrc</file> o <file>/etc/pbuilderrc</file>
includendo
<example>
AUTO_DEBSIGN=yes
</example>
Questo consentir� di firmare i pacchetti generati con la tua
chiave segreta GPG, impostata in 
<file>~/.gnupg/</file>. Dal momento che il pacchetto 
<package>pbuilder</package> 
� ancora in evoluzione, dovresti consultare lo situazione effettiva
in merito alla configurazione consultando la documentazione ufficiale
pi� recente.
</footnote>
<p>
Se vuoi aggiungere una sorgente apt addizionale da usare con il
pacchetto
<package>pbuilder</package>, configura <tt>OTHERMIRROR</tt> in
<file>~/.pbuilderrc</file> o
<file>/etc/pbuilderrc</file> ed esegui (per sarge)
<example>
$ sudo pbuilder update --distribution sarge --override-config
</example>
L'impiego di <tt>--override-config</tt> � necessario per aggiornare
la sorgente apt all'interno dell'ambiente chroot.
  <p>
  Vedi <url id="&pbuilder-home;">,
  <manref section="1" name="pdebuild">,
  <manref section="5" name="pbuilderrc">, e
  <manref section="8" name="pbuilder"> .

  <chapt id="upload">Caricamento del pacchetto

  <p>Una volta testato il nuovo pacchetto approfonditamente, 
  sarai pronto a partire con il processo di candidatura come nuovo
  maintainer Debian, come descritto in 
  <url id="http://www.debian.org/devel/join/newmaint">.

  <sect id="upload-debian">Caricamento nell'archivio Debian

  <p>Una volta diventato uno sviluppatore ufficiale, 
  avrai necessit� di caricare il pacchetto nell'archivio Debian.
  Potresti farlo a mano, ma � pi� semplice usare i tool automatici forniti, come
  <manref name="dupload" section="1"> o <manref name="dput" section="1">.
  Descriveremo come puoi farlo con  <prgn/dupload/.
  
  <p>Per prima cosa devi creare il file di configurazione di dupload.
  Puoi modificare il file di sistema <file>/etc/dupload.conf</file>
  o averne uno tuo personale <file>~/.dupload.conf</file>
  che fornisce le poche cose da modificare. Scrivici dentro qualcosa come:

  <p><example>
  package config;

  $default_host = "anonymous-ftp-master";
  $cfg{'anonymous-ftp-master'} = {
        fqdn => "ftp-master.debian.org",
        method => "ftp",
        incoming => "/pub/UploadQueue/",
        # i file passano per dinstall su ftp-mastr che invia email autonomamente
        dinstall_runs => 1,
  };

  1;
  </example>

  <p>Ovviamente, modifica le mie informazini personali con le tue, e 
  leggi la pagina man <manref name="dupload.conf" section="5"> per
  capire cosa significa ciascuna opzione.

  <p>L'opzione $default_host � la pi� particolare -- stabilisce
  quale coda di caricamento sar� usata per default. 
  "anonymous-ftp-master" � la primaria, ma � possibile che tu voglia usarne
  un'altra, pi� veloce. Per maggiori informazioni sulle code,
  leggi la Guida di Riferimento per lo Sviluppatore, nella
  sezione "Caricare un pacchetto", su
  <file>&uploading;</file>

  <p>A questo punto connettiti al tuo provider Internet, e scrivi
  questo comando:
  
  <p><example>
  dupload --to master gentoo_0.9.12-1_i386.changes
  </example>

  <p><prgn/dupload/ verifica che i codici di controllo MD5 dei file siano
  coerenti con quelli del file .changes, per cui ti avvertir� di 
  ricreare il pacchetto come descritto in 
  <ref id="completebuild">, per caricare appropriatamente il pacchetto.

  <p>Se trovi problemi nell'uso di <url id="&ftp-uploadqueue;">,
  puoi risolvere caricando manualmente un file 
  <file>*.commands</file> firmato con GPG all'indirizzo <url id="&ftp-uploadqueue;"> via
  <prgn>ftp</prgn>.
  <footnote>
  Vedi <url id="&ftp-command;">.  In alternativa, puoi usare il comando
  <prgn>dcut</prgn> dal pacchetto <package>dput</package> .
  </footnote>
  Per esempio, usa <file>hello.commands</file>:
<example>
-----BEGIN PGP SIGNED MESSAGE-----

Uploader: Roman Hodek &lt;Roman.Hodek@informatik.uni-erlangen.de&gt;
Commands: 
 rm hello_1.0-1_i386.deb
 mv hello_1.0-1.dsx hello_1.0-1.dsc

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia

iQCVAwUBNFiQSXVhJ0HiWnvJAQG58AP+IDJVeSWmDvzMUphScg1EK0mvChgnuD7h
BRiVQubXkB2DphLJW5UUSRnjw1iuFcYwH/lFpNpl7XP95LkLX3iFza9qItw4k2/q
tvylZkmIA9jxCyv/YB6zZCbHmbvUnL473eLRoxlnYZd3JFaCZMJ86B0Ph4GFNPAf
Z4jxNrgh7Bc=
=pH94
-----END PGP SIGNATURE-----
</example>

  <sect id="upload-private">Caricamento in archivio privato

  <p>Se volessi creare un archivio di pacchetti personal all'indirizzo
  <tt>URL="http://people.debian.org/~<var>account_name</var>"</tt> come 
  sviluppatore con un semplice comando
  <tt>dupload -t <var>target</var></tt>, dovresti aggiungere al file
  <file>/etc/dupload.conf</file> quanto segue:
<example>
# Developer account
$cfg{'<var>target_name</var>'} = {
        fqdn =&gt; "people.debian.org",
        method =&gt; "scpb",
        incoming =&gt; "/home/<var>account_name</var>/public_html/package/",
        # Non occorre annunciare
        dinstall_runs =&gt; 1,
};
$cfg{'<var>target_name</var>'}{preupload}{'changes'} = "
	echo 'mkdir -p public_html/package' | ssh people.debian.org  2&gt;/dev/null ; 
	echo 'Package directory created!'";

$cfg{'<var>target_name</var>'}{postupload}{'changes'} = "
        echo 'cd public_html/package ;
        dpkg-scanpackages . /dev/null &gt;Packages || true ;
        dpkg-scansources . /dev/null &gt;Sources || true ;
        gzip -c Packages >Packages.gz ;
        gzip -c Sources &gt;Sources.gz ' | ssh people.debian.org  2&gt;/dev/null ;
	echo 'Package archive created!'";

</example>
  In questo caso, un archivio APT viene creato con una semplice esecuzione di SSH.
  I file di override richiesti da <prgn>dpkg-scanpackages</prgn>
  e <prgn>dpkg-scansources</prgn> sono impostati a <file>/dev/null</file>.
  Questa tecnica pu� essere impiegata da chi non � sviluppatore Debian per
  archiviare i pacchetti nel proprio sito personale. In alternativa, puoi
  usare <prgn>apt-ftparchive</prgn> o altri programmi per creare un archivio APT.

  <chapt id="update">Aggiornamento del pacchetto

  <sect id="newrevision">Nuova revisione Debian

  <p>Supponiamo che sia stato segnalato un bug del tuo pacchetto,
  il #54321, e che si riferisca a un problema che sei in grado di risolvere.
  Per creare una nuova revisione Debian del pacchetto, hai bisogno di:

  <list>
  <item>Correggere il problema nel pacchetto sorgente, ovviamente.

  <item>Aggiungere una nuova revisione nel file changelog Debian, per
  esempio con `<tt>dch -i</tt>', oppure esplicitamente con 
  `<tt>dch -v &lt;version&gt;-&lt;revision&gt;</tt>` e quindi
  includere i tuoi commenti usando il tuo editor preferito,

  <p>Suggerimento: come ottenere la data facilmente nel formato
  richiesto? Usa `<tt>822-date</tt>`, or `<tt>date -R</tt>`.

  <p>Includi una breve descrizione del bug e la soluzione nella
  voce del changelog,
  seguita da: "Closes: #54321". In questo modo, la sottomissione del
  bug sar� automaticamente chiusa dal software di mantenimento, nel 
  momento in cui il tuo pacchetto sar� accettato nell'archivio Debian.
  
  <item>Ripeti quanto fatto in <ref id="completebuild">, <ref id="checkit">,
  e <ref id="upload">. La differenza � che questa volta il sorgente
  originale non sar� incluso, dal momento che non � stato modificato
  e gi� esiste nell'archivio Debian.
  </list>

  <sect id="newupstream">Nuovo rilascio di upstream (base)
  
  <p>Adesso consideriamo una situazione differente, un po' pi�
  complicata - una nuova versione upstream � stata rilasciata, e 
  ovviamente vuoi pacchettizzarla. Avrai bisogno di fare quanto segue:
  
  <list>
  <item>Scarica i nuovi sorgenti e sposta il relativo archivio (per
  es. dal nome `<file>gentoo-0.9.13.tar.gz</file>') nella directory al di sopra 
  del vecchio albero di sorgenti (per es. <file>~/gentoo/</file>).

  <item>Spostati nella vecchia directory di sorgenti e lancia:

  <example>
  uupdate -u gentoo-0.9.13.tar.gz
  </example>

  <p>Ovviamente, sostituisci questo nome di file con il nome
  dell'archivio dei sorgenti del tuo programma.  
  <manref name="uupdate" section="1"> rinominer� in modo appropriato
  quell'archivio, prover� ad applicare tutte le modifiche dal tuo 
  precedente file <file>.diff.gz</file>, e aggiorner� il nuovo file
  <file>debian/changelog</file>.

  <item>Portati nella directory `<file>../gentoo-0.9.13</file>', il nuovo albero
  di sorgenti del pacchetto, e ripeti quanto fatto in 
  <ref id="completebuild">, <ref id="checkit">, e <ref id="upload">.
  </list>

  <p>Osserva che se hai configurato il file `<file>debian/watch</file>' come descritto
  in <ref id="watch">, puoi lanciare <manref name="uscan" section="1"> 
  per cercare automaticamente i sorgenti aggiornati, scaricarli e
  lanciare <prgn/uupdate/.

  <sect id="newupstream-real">New upstream release (realistic)

<p>
Nel preparare pacchetti per il caricamento nell'archivio Debian, dovresti verificare
i pacchetti risultanti in dettaglio. Di seguito, ecco un esempio pi� realistico
di tal procedura.

<enumlist compact>

<item>Verificare le modifiche nei sorgenti upstream

<list compact>

<item>Leggi i file <file>changelog</file>, <file>NEWS</file>, e
ogni altra documentazione che possa essere stata rilasciata con la nuova versione.

<item>Esegui `<tt>diff -urN</tt>' tra la vecchia e la nuova versione dei sorgenti
upstream per prendere visione della portata delle modifiche, capire dove 
� stato fatto attivamente lavoro (e perci� dove nuovi bug potrebbero apparire),
e dai anche una occhiata per qualsiasi cosa sospetta.

</list>

<item>Migra il vecchio pacchetto Debian alla nuova versione.

<list compact>

<item>Spacchetto l'archivo dei sorgenti e rinomina la radice dell'albero dei sorgenti come
<file>&lt;packagename&gt;-&lt;upstream_version&gt;/</file> quindi spostati
con `<tt>cd</tt>' in tale directory

<item>Copia l'archivio dei sorgenti nella directory precedente e rinominalo come
<file>&lt;packagename&gt;_&lt;upstream_version&gt;.orig.tar.gz</file> .

<item>Applica lo stesso tipo di modifica al nuovo albero dei sorgenti
e al vecchio.  I metodi possibili sono>
<list compact>
<item>il comando `<tt>zcat <var>/path/to/</var>&lt;packagename&gt;_&lt;old-version&gt;.diff.gz | patch -p1</tt>' .
<item>il comando `<prgn>uupdate</prgn>' ,
<item>il comando `<tt>svn merge</tt>' se gestisci i sorgenti con un deposito Subversion , oppure
<item>semplicemente copia la directory <file>debian/</file> dai vecchi sorgenti
se era pacchettizzata con <package>dpatch</package>.
</list>

<item>Conserva i vecchi contenuti di changelog (sembra ovvio, ma ci sono stati
incidenti in proposito...)

<item>La nuova versione del pacchetto � la versione di rilascio upstream 
con l'aggiunta di 
un numero di revisione Debian <tt>-1</tt>, per esempio, `<tt>0.9.13-1</tt>'.

<item>Aggiungi una voce al changelog con indicato "New upstream release" per tale
nuova versione all'inizio del file <file>debian/changelog</file>.  Per esempio
`<tt>dch -v 0.9.13-1</tt>'.

<item>Descrivi in modo coinciso le modifiche <em>nel</em> nuovo rilascio
upstream che risolvono bug riportati e chiudi tali bug nel changelog.

<item>Descrivi in modo coinciso le modifiche apportate <em>al</em> nuovo 
rilascio upstream dal manutentore che risolvono bug riportati e chiudi
tali bug nel changelog.

<item>Se una patch/fusione non si applica in modo pulito, esamina la situazione
per stabilire cosa � andato male (indicazioni in merito sono nei file <file>.rej</file>).
Il pi� delle volte, il problema � che una patch da te applicata al sorgente � stata
integrata dall'upstream, e perci� non � pi� rilevante.

<item>Gli aggiornamenti a nuove versioni dovrebbero essere silenti non intrusivi
(utenti esistenti dovrebbero solo notare l'aggiornamento scoprendo che
che vecchi bug sono stati corretti e che ci sono forse nuove funzionalit�).

<footnote>
Per piacere, accertati che il tuo pacchetto modifichi correttamente
le configurazione durante gli aggiornamenti, usando  <prgn>postinst</prgn>
ben disegnati. ecc. in modo che 
<strong>non faccia</strong> cose non volute dall'utente! Queste sono 
i perfezionamenti che spiegano
<strong>perch�</strong> la gente sceglie Debian.
<p>
Quando l'aggiornamento � necessariamente intrusivo (per es. file di configurazione
sparsi tra varie home directory con strutture completamente diverse), puoi considerare
di configurare il pacchetto con il pi� sicuro default (per es. servizi disabilitati)
e fornire appropriata documentazione richiesta dalla policy in
(<file>README.Debian</file> e <file>NEWS.Debian</file> ) come ultima risorsa.
Ma non abusare di note in debconf.
</footnote>

<item>Se occorre aggiungere dei file modello cancellati per qualsiasi
motivo, puoi lanciare nuovamente <prgn>dh_make</prgn> nella stessa
directory, gi� "debianizzata", con l'opzione <tt>-o</tt> .  
A quel punto modificali in maniera appropriata.

<item>Le modifiche Debian esistenti devono essere nuovamente vautate:
elimina materiale che l'upstream ha incorporato (in una forma o un'altra)
e rucorda di mantenere ci� che non � stato incluso dal upstream, a meno
che non ci sia una valida ragione per non farlo.

<item>Se fosse stata fatta qualche modifica al sistema di compilazione
(sperabilmente dovresti gi� scoprirlo al passo 1 e aggiornare il
file <file>debian/rules</file> e le dipendenze per la compilazione in 
<file>debian/control</file> se necessario.

</list>

<item>Crea il nuovo pacchetto come descritto in <ref id="debuild"> o
<ref id="pbuilder">. L'impiego di <package>pbuilder</package> � consigliato.

<item>Verifica che il nuovo pacchetto compila correttamente.

<list compact>

<item>Esegui <ref id="checkit">.

<item>Esegui <ref id="upgrading">.   

<item>Controlla nuovamente per capire se qualche bug � stato corretto
ed � correntemente aperto
nel <url name="Sistema di Gestione dei Bug Debian"
id="http://www.debian.org/Bugs/"> .

<item>Verifica il contenuto del file .changes per essere sicuro
di caricare nella distribuzione corretta, che i bug appropriati
vengano chiusi nel campo
Closes: , che i campi Maintainer: e Changed-By: 
coincidano, che il file abbia una firma GPG, ecc.

</list>

<item>Se avessi apportato qualche cambiamento nel pacchetto in corso
d'opera, torna al passo 2 fino a soddisfarlo.

<item>Se il caricamento richiede uno sponsor, assicurati di annotare
qualsiasi opzione speciale richiesta nella creazione del pacchetto
(come '<tt>dpkg-buildpackage
-sa -v ...</tt>') e informane il tuo sponsor in modo che questi 
possa fare la compilazione in modo esatto.

<item>Se devi caricare tu stesso il pacchetto esegui <ref id="upload">.
</enumlist>

  <sect id="orig-tar">Il file <file>orig.tar.gz</file> 
<p>
Se provi a creare il pacchetto solo a partire dal nuovo albero dei
sorgenti, con la directory
<file>debian/</file>  ma senza il file <file>orig.tar.gz</file> 
nella directory superiore, finirai per creare non intenzinalmente
un pacchetto sorgente nativo, che risulta privo di un file <file>diff.gz</file>.
Questo tipo di pacchettizzazione � appropriato solo per pacchetti specifici
di Debian, che non saranno mai utili per un altra distribuzione.
<footnote>
Qualcuno ritiene che anche nel caso di pacchetti specifici per Debian,
� ancora opportuno nella pratica che il contenuto della directory
<file>debian/</file> sia nel file <file>diff.gz</file> , piuttosto che
nel file <file>.tar.gz</file> .
</footnote>
<p>
Per creare un pacchetto a sorgente non nativo, che consiste in una coppia
di file 
<file>orig.tar.gz</file>  e <file>diff.gz</file> , devi copiare 
manualmente l'archivio dell'upstream nella directory superiore
con il nome del file modificato in
<file>&lt;packagename&gt;_&lt;upstream_version&gt;.orig.tar.gz</file> come
viene fatto dal comando <prgn>dh_make</prgn> in <ref id="dh_make">.

  <sect id="cvs-buildpackage">Il comando <prgn>cvs-buildpackage</prgn> e similari
<p>
Dovresti prendere in considerazione l'eventualit� di usare un sistema di
gestione del codice per l'attivit� di pacchettizzazione.
Ci sono diversi programmi di interfaccia adattati per usare i sistemi
pi� comuni.
<list compact>
<item>CVS
<list compact>
<item><package>cvs-buildpackage</package>
</list>
<item>Subversion
<list compact>
<item><package>svn-buildpackage</package>
</list>
<item>Arch (tla)
<list compact>
<item><package>tla-buildpackage</package>
<item><package>arch-buildpackage</package>
</list>
</list>
<p>
Questi comandi possono anche automatizzare la pacchettizzazione
di nuovi rilasci dell'upstream.

  <sect id="upgrading">Verificare gli aggiornamenti di pacchetti

  <p>Quando crei una nuova versione del pacchetto, dovresti fare
  quanto segue per verificare che il pacchetto pu� essere 
  aggiornato in modo sicuro:

  <list>
          <item>aggiorna dalla versione precedente,
        <item>torna indietro e rimuovilo,
        <item>installa il nuovo pacchetto,
        <item>rimuovilo e reinstallalo nuovamente,
        <item>fanne un purge.
  </list>

  <p>Se il pacchetto fa un uso di script non banali di pre/post/inst/rm,
  assicurati di controllarli in aggiornamento.

  <p>Tieni a mente che se il pacchetto � stato in precedenza rilasciato
  in Debian, la gente vorr� spesso fare un aggiornamento dalla versione
  che era nell'ultima versione Debian. Ricorda di provare l'aggiornamento
  da tale versione, anche.
  
  <sect id="helpme">Dove chiedere aiuto

  <p>Prima di deciderti a fare una domanda in qualche area pubblica,
  sei pregato di leggere i dannati manuali (RTFM). 
  Questo include la documentazione in 
   <file>/usr/share/doc/dpkg</file>,
   <file>/usr/share/doc/debian</file>,
   <file>&autotools-dev;</file> i file
   <file>/usr/share/doc/package/*</file> 
  e le pagine man/info di tutti i programmi menzionati in questo documento.
  Vedi tutte le informazioni in <url id="&nm-home;">  e <url id="&mentors-faq;">.

  <p>Se hai domande sulla pacchettizzazione alle quale non trovi risposta
  nella documentazione, puoi chiedere alla mailing list dei Debian Mentors
  su  <email/debian-mentors@lists.debian.org/. Gli sviluppatori pi� esperti
  di Debian ti aiuteranno con piacere, ma leggi almeno un po' di
  documentazione prima di chiedere!

  <p>Guarda <url id="http://lists.debian.org/debian-mentors/"> per
  maggiori informazioni riguardo la mailing list.
  
  <p>Quando ricevi una segnalazione di bug (s�, effettive segnalazioni
  di bug!) saprai che � il momento di fare fare riferimento al
  <url name="Sistema Debian di tracciamento dei bug" id="http://www.debian.org/Bugs/">
  e leggere la documentazione l�, per essere in grado di gestire le 
  segnalazioni in modo efficiente. Ti raccomando di leggere
  la Guida di Riferimento dello Sviluppatore, al capitolo
  "Gestione dei Bug", su
  <file>&bughandling;</file>
  
  <p>Se ancora hai delle domande, chiedi sulla mailing list degli 
  sviuppatori Debian all'indirizzo
  <email/debian-devel@lists.debian.org/. 
  Guarda  <url id="http://lists.debian.org/debian-devel/">
  per maggiori informazioni su questa mailing list.

  <p>Anche se tutto funziona bene, � venuto il momento di iniziare
  a pregare. Perch�? Perch� in poche ore (o giorni), gli utenti di
  tutto il mondo inizieranno a usare il pacchetto, e se hai commesso
  qualche errore critico, sarai bombardato dalle mail di numerosi 
  utenti Debian arrabbiati... sto scherzando :-)

  <p>Rilassati e sii pronto per le segnalazioni dei bug, perch� 
  c'� molto lavoro da fare prima che il tuo pacchetto
  sia completamente in linea con le politiche Debian
  (ancora una volta, leggi la <em>documentazione reale</em> per i dettagli).
  Buona fortuna!

<appendix id="pkg-eg">Esempi
<p>

Di seguito pacchettiziamo l'archivio upstream 
<var>gentoo-1.0.2</var>.tar.gz e carichiamo
tutti i pacchetti risultanti <tt><var>nm_target</var></tt>.

<sect id="pkg-simple">Semplice esempio di pacchetto
<p>
<example>
$ mkdir -p <var>/path/to</var> # nuova directory vuota
$ cd <var>/path/to</var>
$ tar -xvzf <var>/path/from/gentoo-1.0.2</var>.tar.gz # prendi i sorgenti
$ cd <var>gentoo-1.0.2</var>
$ dh_make -e <var>name@domain.dom</var> -f <var>/path/from/gentoo-1.0.2</var>.tar.gz
... Rispondi alle domande
... Modifica il sorgente
... Se si tratta di un pacchetto di script, imposta debian/control con "Architecture: all"
... Non cancellare ../<var>gentoo_1.0.2</var>.orig.tar.gz
$ debuild
... Assicurati non ci siano messaggi di tipo warning
$ cd ..
$ dupload -t <var>nm_target</var> <var>gentoo_1.0.2-1</var>_i386.changes
</example>


<sect id="pkg-dpatch">Pacchettizzare l'esempio con <package>dpatch</package> e <package>pbuilder</package>
<p>
<example>
$ mkdir -p <var>/path/to</var> # nuova directory vuota
$ cd <var>/path/to</var>
$ tar -xvzf <var>/path/from/gentoo-1.0.2</var>.tar.gz
$ cp -a  <var>gentoo-1.0.2</var> <var>gentoo-1.0.2-orig</var>
$ cd <var>gentoo-1.0.2</var>
$ dh_make -e <var>name@domain.dom</var> -f /path/from/<var>gentoo-1.0.2</var>.tar.gz
... Rispondi alle domande
... Modifica i sorgenti con un editore di testi
... Prova a pacchetttizzare con "dpkg-buildpackage -rfakeroot -us -uc"
... Modifica i sorgenti per renderli compilabili
... Non cancellare ../<var>gentoo_1.0.2</var>.orig.tar.gz
$ cd ..
$ cp -a <var>gentoo-1.0.2</var> <var>gentoo-1.0.2-keep</var> # safety backup
$ mv <var>gentoo-1.0.2</var>/debian debian
$ diff -Nru  <var>gentoo-1.0.2-orig</var> <var>gentoo-1.0.2</var> &gt; <var>patch-file</var>
... Puoi sovrascrivere la directory <var>gentoo-1.0.2</var> mentre stai facendo questo
... Assicurati di mantenere una copia <var>gentoo-1.0.2</var>-keep per tua sicurezza
$ mkdir -p debian/patches
$ dpatch patch-template <var>patch-file</var> \
   -p "01_patchname" "patch-file description" \
   &lt; <var>patch-file</var> &gt; debian/patches/01_patchname.dpatch
$ cd debian/patches
$ echo 01_patchname.dpatch >00list
$ cd ../.. # torna a <var>/path/to</var>
$ rm -rf <var>gentoo-1.0.2</var>
$ editor debian/rules
</example>
Qui <file>debian/rules</file> all'origine contiene:
<example>
config.status: configure
     ./configure --prefix=/usr --mandir=/usr/share
build: config.status
     ${MAKE}
clean:
     $(testdir)
     $(testroot)
     ${MAKE} distclean
     rm -rf debian/imaginary-package debian/files debian/substvars
</example>
Modifichi <file>debian/rules</file> come segue con un editore di testi
per usare <package>dpatch</package>:
<example>
config.status: patch configure
     ./configure --prefix=/usr --mandir=/usr/share
build: config.status
     ${MAKE}
clean: clean-patched unpatch
clean-patched:
     $(testdir)
     $(testroot)
     ${MAKE} distclean
     rm -rf debian/imaginary-package debian/files debian/substvars
patch: patch-stamp
patch-stamp:
     dpatch apply-all
     dpatch call-all -a=pkg-info >patch-stamp

unpatch:
     dpatch deapply-all
     rm -rf patch-stamp debian/patched
</example>
<p>
Ora sei pronto a ripacchettizzare i sorgenti con il sistema
<package>dpatch</package>.
<example>
$ tar -xvzf <var>gentoo_1.0.2</var>.orig.tar.gz
$ cp -a debian/ <var>gentoo-1.0.2</var>/debian
$ cd <var>gentoo-1.0.2</var>
$ sudo pbuilder update
$ pdebuild
$ cd /var/cache/pbuilder/result/
$ dupload -t <var>nm_target</var> <var>gentoo_1.0.2-1</var>_i386.changes
</example>
  
 </book>
  
</debiandoc>