File: maint-guide.de.sgml

package info (click to toggle)
maint-guide 1.0.2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 652 kB
  • ctags: 12
  • sloc: makefile: 104; sh: 8
file content (1658 lines) | stat: -rw-r--r-- 73,681 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
<!doctype debiandoc system>

<debiandoc>

 <book>

  <titlepag>

   <title>Anleitung f�r zuk�nftige Debian-Maintainer</title>

   <author>Josip Rodin <email/jrodin@jagor.srce.hr/
   </author>

   <author>�bersetzer: Eduard Bloch <email/edi@ka.linux.de/
   </author>

   <version>Version 1.0.2, 10. Juni 2001.</version>

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

   <p>Dieses Dokument darf gem�� der GNU General Public License (Version 2 oder h�her) verwendet werden. 
   <p>Diesem Dokument liegen die Beispiele der folgenden zwei Dokumente zugrunde:

   <p>Making a Debian Package (AKA the Debmake Manual), copyright &copy;
   1997 Jaldhar Vyas <email/jaldhar@debian.org/.

   <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
   Will Lowe <email/lowe@debian.org/.
   </copyright>
  </titlepag>
  
   <toc sect>

   <chapt id=trans>Zur dieser �bersetzung...
   
   <sect id="Vorwort">Vorwort
   <p>Anmerkung des �bersetzers:
   Ich habe bei dieser �bersetzung versucht, mich so eng wie m�glich an
   das englischsprachige Original zu halten. Dennoch musste ich an
   vielen Stellen �nderungen vornehmen, damit Zusammenh�nge verst�ndlich
   bleiben; es kann deswegen sinnvoll sein, bei Unklarheiten das
   Original oder die genannten Referenzdokumente zu lesen. Meine
   eigenen Erg�nzungen und Kommentare sind mit A.d.�. gekennzeichnet.
   Leider k�nnen viele englisch Begriffe nicht sinnvoll �bersetzt
   werden; in solchen F�llen habe ich versucht, sie so gut wie m�glich
   einzudeutschen. Im Anhang finden Sie einen ein Glossar, der die
   Bedeutung der die einzelnen Begriffe n�her erl�utert. Weiterhin
   �bernehme ich keine Verantwortung f�r Fehler und dadurch verursachte
   Sch�den. Verbesserungen sind jederzeit willkommen.
   
  <sect id="gloss">Mini-Glossar
  <p>

  <list>
  <item><em>Feature</em>: Eigenschaft, eine spezielle Funktion.
  <item><em>rtfm</em>:  "read the fucking manual" - "lies das verdammte Handbuch",
  eine Aufforderung, die zugeh�rige Dokumentation zu lesen.
  <item><em>Maintainer</em>: der zust�ndige Entwickler eines Softwarepakets. Der
  M. "wartet" seine Pakete, korrigiert Bugs usw.
  <item><em>Policy</em>, auch <em>"Policy Manual"</em>: eine Sammlung der Vorschriften, an
  die sich alle Debian-Entwickler halten m�ssen. Siehe....
  <item><em>Bug</em>: Ein Software-Fehler, meist ein Programmierfehler.
  <item><em>Manpage</em> oder <em>Man-Seite</em> bzw.
  <em>Manual-Seite</em>: "Bedienungsanleitung" eines Programms,
  gespeichert in einer gleichnamigen Datei (plus Erweiterung nach
  Kategorie). Siehe Handbuch, man(1) und die Verweise dort..
  <item><em>Upstream, Upstream Author</em>: der eigentliche Autor der
  Software, meist ausserhalb der Distribution.
  </list>

  <chapt id="start">Einstieg auf die "richtige Art"

  <p>Dieses Dokument versucht, einem typischen Debian-Benutzer (und
  einem M�chtegern-Entwickler) in einer verst�ndlichen Sprache die
  Technik der Paketerstellung f�r Debian GNU/Linux beizubringen,
  begleitet von funktionierenden Beispielen. Ein alter R�mer hat mal
  gesagt:
  <em>Longum
  iter est per preaecepta, breve et efficax per exempla!</em> 
  (Es ist ein langer Weg mit Regeln, aber ein kurzer und effizienter mit
  Beispielen).

  <p>Eines der Dinge, die Debian zu einer hervorragender Distribution
  machen, ist das Paket-System. Auch wenn es inzwischen massenhaft
  Linux-Software im Debian-Format vorhanden ist, muss man manchmal auch
  Software installieren, die es eben nicht als ".deb" gibt. Sie fragen
  sich vermutlich, wie man eigene Pakete erstellt, und vielleicht
  meinen Sie,  es sei eine komplizierte Aufgabe. Nun, wenn sie ein
  blutiger Linux-Neuling sind, dann ist es wirklich hart, aber als
  Anf�nger w�rden Sie dieses Dokument jetzt nicht lesen. :-)
  Sie sollten nur wenige Kenntnisse �ber die Unix-Programmierung
  mitbringen, aber Sie brauchen ganz sicher kein Guru zu sein.

  <p>Aktuelle Versionen dieses Dokuments sollten immer �ber
  <url name="http://www.debian.org/doc/maint-guide"
  id="http://www.debian.org/doc/maint-guide">  oder in dem
  `maint-guide'-Paket zu finden sein.

  <sect id="needprogs">Ben�tigte Programme

  <p>Bevor Sie loslegen k�nnen, m�ssen Sie sicherstellen,
  da� einige zus�tzliche Pakete richtig installiert sind, die
  f�r die Entwicklung ben�tigt werden. Beachten Sie, dass die
  Liste keine Pakete enth�lt, die als `essential' oder `required'
  markiert sind - wir gehen aber davon aus, da� Sie diese Pakete
  schon installiert haben.

  <P>Dieses Dokument entstand noch als die Slink-Distribution (2.1)
  die stabile Version war, und Potato (2.2) gerade entwickelt wurde - deswegen
  sind die die meisten aufgef�hrten Pakete aus `Potato'.
  
  <P>Die folgenden Pakete kommen mit der Standard-Installation von
  Debian 2.1, also werden Sie sie vermuttlich schon haben (und
  zus�tzliche Pakete, von den sie abh�ngen). Sie k�nnen
  es dennoch �berpr�fen, z.B. mit `dpkg -s &lt;package&gt;`.

  <list>
  <item><em>binutils</em> - diese Programme werden zum Assemblieren und
  Linken der Objekt-Dateien ben�tigt - den Stoff, aus dem die
  Programme sind. (siehe `info binutils')

  <item><em>cpp</em> - der C-Pr�prozessor. (siehe <manref name="cpp" section="1">)

  <item><em>cpio</em> - das ist ein Archivierungsprogramm wie tar oder zip. (siehe
  <manref name="cpio" section="1">)

  <item><em>dpkg-dev</em> - dieses Paket enth�lt die Tools, die zum
  Entpacken, Erstellen und dem Hochladen der Quell-Pakete ben�tigt
  werden. (siehe <manref name="dpkg-source" section="1">)

  <item><em>file</em> - dieses handliche Programm kann den Typ einer
  Datei feststellen. (siehe <manref name="file" section="1">)

  <item><em>gcc</em> - der GNU-C-Compiler. Die meisten Linux-Programme
  sind in C geschrieben. Ist ihr Programm in einer anderen Sprache
  geschrieben, z.B. C++, Fortran, Pascal, sollten Sie g++, g77, gpc oder
  einen anderen ben�tigten Compiler installieren.  (siehe <manref
  name="gcc" section="1">, <manref name="g++" section="1">, <manref
  name="g77" section="1">, <manref name="gpc" section="1">)

  <item><em>libc6-dev</em> - die C-Bibliotheken und Header-Dateien, die
  gcc zum Linken und Erstellen von Objekt-Dateien ben�tigt. Auch
  wenn einige Programme immer noch libc5 empfehlen/benutzen, sollten Sie
  die neuere Version verwenden (libc6). (siehe `info libc')

  <item><em>make</em> - normallerweise wird ein Programm in mehreren
  Schritten erstellt. Statt wieder und wieder die selben Befehle zu
  tippen, k�nnen Sie das Ganze mit Hilfe dieses Programms und der
  sogenannten `Makefile's automatisieren. Einige Programme verwenden
  auch imake und xmkmf, beides Programme die zur Generierung von
  Makefile aus einem Satz von Makro-Funktionen dienen. Viele neue
  Programme benutzen auch configure-Skripte und Makefile-Vorlage mit
  Hilfe der Programm wie autoconf und automake, also ben�tigen Sie
  diese wahrscheinlich auch.  (siehe `info make`, <manref name="imake"
  section="1">, <manref name="xmkmf" section="1">, <manref
  name="autoconf" section="1">, <manref name="automake" section="1">)

  <item><em>patch</em> - ein sehr n�tzliches Programm, dass eine
  sog. diff-Datei, eine Auflistung der Unterschiede im Dateiinhalt
  (produziert mit dem Programm "diff"), auf die urspr�ngliche Datei
  anwendet und daraus die neue Version erzeugt. (siehe <manref name="patch" section="1">)

  <item><em>perl5</em> - Perl ist eine der am meisten gebrauchten
  Skript-Sprachen auf heutigen Un*x-Systemen, oft betrachtet als "Unix'
  Schweizer Offizierskettens�ge".
  (siehe <manref name="perl" section="1">)
  </list>

  <p>Aus der `devel'-Sektion der Distribution sollten Sie vielleicht
  folgendes installieren:

  <list>
  <item><em>dh-make</em> und <em>debhelper</em> - dh-make wird
  ben�tigt, um eine Vorlage des Beispiel-Pakets zu erstellen, und
  es ben�tigt einige debhelper-Tools f�r die Paketerstellung.
  Sie sind nicht zwingend erforderlich, aber f�r neue Maintainer
  <strong>sehr</strong> empfohlen. Es vereinfacht den ersten Einstieg
  sehr, ebenso die sp�ter Kontrolle.  (siehe <manref name="dh_make"
  section="1">, <manref name="debhelper" section="1">,
  /usr/share/doc/debhelper/README)

  <item><em>devscripts</em> - dieses Paket enth�lt einige 
  n�tzliche Skripte, die f�r die Maintainer oft sehr hilfreich sein
  k�nnen, aber nicht unbedingt zum Bauen der Pakete ben�tigt
  werden. (siehe /usr/share/doc/devscripts/README.gz)

  <item><em>fakeroot</em> - dieses Utility erm�glicht ihnen, die
  Identit�t des "root"s vorzut�uschen, was f�r einige
  Teile des Build-Prozesses ben�tigt wird. (siehe <manref
  name="fakeroot" section="1">)

  <item><em>lintian</em> - das ist Debians Paket-Pr�fer, der sie
  �ber die �blichen Fehler nach der Paketerstellung informiert
  und die gefundenen Fehler erkl�rt.  (siehe <manref name="lintian"
  section="1">, /usr/share/doc/lintian/lintian.html/index.html) </list>

  <p>Und schliesslich noch diese <em>sehr wichtigen</em> Pakete in der
  doc-Sektion der Distribution:

  <list>
  <item><em>debian-policy</em> - beinhaltet die Beschreibung der
  Struktur und des Inhalts eines Archives, Texte �ber das Systemdesign,
  den Filesystem Hierarchy Standard, und das wichtigste (f�r Sie), es
  beschreibt die Anforderungen, die ein Paket erf�llen muss, um in eine
  Distribution aufgenommen zu werden.  (siehe
  /usr/share/doc/debian-policy/policy.html/index.html)

  <item><em>developers-reference</em> - f�r alle Fragen, die nicht
  ausschliesslich technischer Natur der Paketerstellung sind, z.B. �ber
  die Struktur des Archivs, wie man Pakete umbenennt, aufgibt,
  �bernimmt, NMUs durchf�hrt, Fehler verwaltet, wie und wo die Archive
  hochl�dt usw.
  (siehe /usr/share/doc/developers-reference/developers-reference.html/index.html)
  </list>

  <p>Sie werden ebenfalls ein Verschl�sselungsprogramm brauchen,
  entweder PGP (die "pgp-*"-Pakete) oder GPG (das gnupg-Paket), um ihr
  Paket digital zu <em>signieren</em>. Dies ist besonders wichtig, wenn
  Sie das Paket an andere Menschen verteilen wollen (und das werden Sie
  sicher tun, wenn ihre Arbeit in die Debian-Distribution aufgenommen
  wird). Dummerweise kann aufgrund der bescheuerten U.S.-Exportgesetze
  nicht jeder diese Pakete von dem n�chstliegenden Debian-FTP-Server
  beziehen. Dennoch bietet Debian diese Pakete an, und zwar �ber
  FTP-Server, die physisch ausserhalb von USA liegen, z.B.
  non-US.debian.org (ftp://non-us.debian.org/debian-non-US/). Auf
  "ihrem" FTP-Server befindet sich eine Datei namens README.non-US, mit
  der Sie den n�chstliegenden non-US-Spiegelserver finden k�nnen.
  
  <p>Die kurzen Erkl�rungen oben dienen nur der
  Einf�hrung. Bevor sie weitermachen, sollten Sie die Dokumentation
  jedes Programms durchlesen, dass Sie verwenden werden. Das mag am
  Anfang �berfl�ssig vorkommen, aber schon bald werden Sie <em>froh</em>
  dar�ber sein, sich schon vorher informiert zu haben.
  
  Anmerkung: das Paket <em>debmake</em> enth�lt einige Programme, die
  dh-make in der Funktionalit�t sehr �hneln. Die Benutzung von debmake
  wird hier nicht weiterbeschrieben, die Dokumentation von debmake
  finden Sie im <url name="the Debmake manual"
  id="http://www.debian.org/~jaldhar/">.

  <sect id="otherinfo">Andere Informationen

  <p>Sie k�nnen zwei Arten von Paketen erstellen: bin�re und
  Quell-Pakete. Ein Quell-Paket enth�lt den Code, aus dem man ein
  Programm kompilieren kann.  Ein Bin�r-Paket enth�lt das
  fertige Programm. Bringen Sie die Begriffe Quellcode und Quell-Paket
  des Programms nicht durcheinander! Lesen Sie andere Anleitungen, falls
  die Terminologie nicht klar ist.

  <p>In Debian bezeichnet der Ausdruck: `maintainer' eine Person, die
  Pakete baut, `upstream author' die Person, die das Programm eigentlich
  macht und `upstream maintainer' die Person ausserhalb von Debian, die
  zur Zeit das Programm pflegt. �blicherweise sind `upstream
  author� und `upstream maintainer' die selbe Person, und manchmal ist
  es sogar der Maintainer selbst.  Wenn Sie also ein Programm erstellen
  und in Debian integriert sehen m�chten, dann k�nnen Sie sich
  ruhig als Maintainer bewerben.

  <p>Nachdem Sie ein eigenes Paket erstellt haben (oder w�hrend Sie
  gerade dabei sind), m�chten Sie vermuttlich ein offizieller
  Debian-Maintainer werden, damit ihr Paket den Weg in die n�chste
  Distribution findet (wenn das Programm wirklich n�tzlich ist, warum
  nicht?). Dieser Prozess ist in der "Developer's Reference"
  beschrieben; bitte lesen Sie es.

  <chapt id="first">Erste Schritte

  <p>W�hrend die Dokumentation unter <url name="Developers corner"
  id="http://www.debian.org/devel/"> nicht richtig erkl�rt, wo ein
  neuer Maintainer mit der Arbeit beginnen soll,  wird dieses Dokument
  jeden kleinsten Schritt beschreiben (auch m�glicherweise
  irrelevante Schritte), um ihnen bei der Erstellung zu helfen damit Sie
  etwas mehr Erfahrungen sammeln, die Sie bei anderen Paketen gebrauchen
  k�nnen.

  <sect id="choose">Ein Programm w�hlen

  <p>Sie werden wahrscheinlich schon ein Programm ausgesucht haben, aber
  hier noch einige Hinweise f�r Sie als Erstmaintainer:

  <list>
  <item>�berpr�fen Sie, ob das Paket nicht bereits in der
  Distribution existiert. Wenn eine `stable�-Distribution verwendet
  wird, sollte man am besten ein �ber <url name="package search
  page" id="http://www.debian.org/distrib/packages.html"> nach dem Paket
  suchen.  [A.d.�.: Oder von der unstable-Distribution die
  Contents-Datei zieht und nach bekannten Dateinamen durch'grep'en]

  Benutzen Sie die <strong>aktuelle</strong> `unstable'-Distribution,
  versuchen Sie es mit Kommandos wie:
  <example>
  dpkg -s program
  dpkg -l '*program*'
  </example>

  <item>Durchsuchen Sie <url name="WNPP page"
  id="http://www.debian.org/devel/wnpp/"> und die
  List-Archvie der Mailingliste debian-devel nach den Hinweisen auf die
  gleichzeitige Arbeit eines anderen Maintainers an dem selben Paket.
  Wenn es so ist, k�nnen Sie den Maintainer kontaktieren (sofern
  Sie ihm etwas mitteilen m�chten). Andernfalls werden Sie
  sicherlich ein anderes Programm finden, an dem noch kein Maintainer
  arbeitet.  </item>

  <item>Das Programm <strong>muss</strong> eine Lizense haben, eine
  m�glichst `frei� nach den Richtlinien der <url name="Debian Free
  Software Guidelines"
  id="http://www.debian.org/social_contract.html#guidelines">.  Wenn sie
  diesen Richtlinien nicht entspricht, kann das Paket oft noch in die
  Sektionen `contrib' oder `non-free' der Debian-Distribution
  aufgenommen werden. Sind Sie sich �ber die Lizenzfragen nicht
  sicher, fragen Sie ruhig auf <email/debian-legal@lists.debian.org/.
  </item>

  <item>Das Programm sollte sicherlich <strong>nicht</strong> als
  "setuid root" laufen, oder noch besesr, es sollte f�r die Ausf�hrung
  �berhaupt keine setuid- oder setgid-Rechte brauchen.</item>

  <item>Das Programm sollte kein daemon sein, oder etwas was in in die
  */sbin-Verzeichnisse installiert wird.</item>

  <item>Das Programm sollte in einer bin�ren ausf�hrbaren Form daher
  kommen, versuchen Sie sich (noch) nicht an Bibliotheken.</item>

  <item>Es sollte gut dokumentiert sein, oder zumindest verst�ndlich
  sein (f�r jedermann).</item>

  <item>Sie sollten den Autor des Programms kontaktieren und
  sicherstellen, dass er mit ihrer Aktion einverstanden ist. Es ist
  wichtig, dass man den Autor auch sp�ter �ber
  programmspezifische Probleme fragen kann, versuchen Sie also nicht,
  ungepflegte/aufgegebene Programme zu packen.

  <item>And last but not the least, Sie m�ssen wissen, wie es
  funktioniert und damit schon einige Zeit arbeiten.</item>
  </list>

  <p>Nat�rlich sind die aufgef�hrten Punkte eher Sicherheitsmassnahmen
  und sollten Sie vor tobenden Benutzern sch�tzen, falls ihr
  setuid-Daemon irgendwo mistbaut. Wenn Sie mehr Erfahrungen im
  Paketerstellen gesammelt haben, k�nnen Sie sich auch an solchen
  Paketen versuchen, aber selbst die erfahrensten Debian-Entwickler
  fragen schon mal in der debian-devel-Mailingliste, wenn sie irgendwo
  Zweifel haben. Und die Menschen dort helfen gern.

  <p>F�r weitere Fragen konsultieren Sie die `Developer's Reference�.

  <sect id="getit">Programm holen und ausprobieren
  
  <p>Als Erstes m�ssen Sie das Original-Paket des Programms finden und
  herunterladen. Ich nehme an, dass sie bereits die Quell-Dateien von
  der Homepage des Autors gezogen haben. Quellen der freien
  Linux-Programm kommen i.d.R. im tar/gzip-Format, mit der erweiterung
  .tar.gz, und enthalten �blicherweise ein Unterverzeichniss, genannt
  nach dem PROGRAMM-VERSION-Schema, das alle Quellcode-Dateien enth�lt.
  Kommt der Quellcode in einem anderen Archivtyp daher (z.B. wenn der
  Dateiname auf ".Z" oder ".zip" ender), entpacken Sie es mit den
  entsprechenden Tools oder fragen Sie in debian-menthors, wie man es
  richtig entpackt (Tip: `file archive.extension� versuchen.)

  <p>Als Beispiel nehme ich hier das Programm namens `gentoo', ein
  X11/GTK+-Dateimanager. Das Programm ist bereits verpackt, und wurde
  wesentlich ver�ndert seit dieser Text geschrieben wurde.

  <p>Erstellen Sie ein Verzeichniss in ihrem Heimverzeichniss, z.B.
  'debian' oder 'deb' oder irgendwas anderes, was f�r Sie geeignet
  erscheint, etwa ~/gentoo/ in diesem Fall. Kopieren sie das
  heruntergeladene Archiv dorthin, und entpacken Sie es, z.B. mit 
  `tar zxvf gentoo-0.9.12.tar.gz�. Vergewissern Sie sich, dass es keine
  Fehler beim Entpacken gab, nicht mal soz. `irrelevante� Fehler, weil
  es auf anderen Systemen Probleme geben kann, wenn andere Entpacker
  bestimmte Anomalien nicht ignorieren.

  <p>Jetzt haben Sie ein neues Unterverzeichniss, 'gentoo-0.9.12'.
  Wechseln Sie dorthin und lesen Sie die mitgelieferte Dokumentation
  <strong>komplett durch</strong>. Meist sind es die Dateien mit Namen
  nach dem Schema README*, INSTALL*, *.lsm oder *.html. Sie m�ssen
  eine Anleitung finden, wie man das Programm richtig �bersetzt und
  installiert (meistens wird von einer Installation in /usr/local/bin
  ausgegangen, aber das wollen wir nicht. Mehr dazu sp�ter in <ref
  id="destdir">).

  <p>Der Prozess ist vom Programm zu Programm unterschiedlich, aber
  viele moderne Programme kommen mit einem `configure'-Skript, dass den
  Quellcode an die Systemumgebung anpasst. Nach dem Erfolgreien
  `konfigurieren� mit `./configure' k�nnen die Programm mit `make�
  kompiliert werden. Einige unterst�tzen auch `make check�, dass
  zus�tzlche Selbsttests durchf�hrt. Die Installation in die
  Zielverzeichnisse geschieht dann mit `make install�.
  
  <p>Versuchen Sie nun, das Programm zu kompilieren und stellen Sie
  sicher, dass es einwandfrei funktioniert und nichts anderes w�hrend
  der Installation oder der Ausf�hrung kaputt macht.

  <p>Ebenfalls kann man oft `make uninstall` ausf�hren, dass die
  installierten Dateien entfernt, und `make clean� (oder besser `make
  distclean`), um im aktuellen Arbeitsverzeichniss aufzur�umen.

  <sect id="namever">Bevor man mit `dh_make' loslegt...

  <p>Sie sollten mit einem aufger�umten oder besser frisch
  ausgepackten Quellcode-Verzeichniss anfangen.
  
  <p>Damit alles richtig funktioniert sollten Sie den urspr�nglichen
  Namen in Kleinbuchstaben umwandeln. Ebenfalls sollten Sie den Namen zu
  &lt;Paketname&gt;-&lt;Version&gt; ver�ndern.
  
  <p>Wenn der Programmname aus mehr als einem Wort besteht, machen Sie
  ein Wort oder eine Abk�rzung verwenden. Zum Beispiel k�nnte man
  "John's little editor for X" in johnledx, oder jle4x umbennen, oder
  wie auch immer, solange die L�nge in einem vern�nftigen Rahmen von
  etwa 20 Zeichen bleibt.
  
  <p>�berpr�fen Sie auch die exakte Versionsnummer des Programms, die
  als Versionsnummer des Pakets verwendet wird. Wenn dieses St�ck
  Software keine Nummerierung nach dem Schema X.Y.Z, sondern nach dem
  Datum verwendet, k�nnen Sie dieses Datum mit davorstehenden "0.0"
  verwenden ("0.0" f�r den Fall, das sich der `upstream author� dazu
  entschliesst, eine zuk�nftige Version mit 1.0 nummeriert). In diesem
  Fall bekommt ein Abzug vom 19. Dezember 1998 eine Versionsnummer wie
  0.0.19981219. Einige Programme haben gar keine Versionsnummeriurung -
  in diesem Fall sollten Sie den `upstream maintainer� kontaktieren und
  eine eindeutige Methode ausarbeiten.
  
  <sect id="dh_make">`dh_make' ausf�hren

  <p>Wechseln Sie in das Quell-Verzeichniss des Programms und f�hren Sie
  folgendes aus:

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

  <p>Nat�rlich ersetzen Sie "your.maintainer@address" mit ihren
  eigenen E-Mail-Adresse f�r den Eintrag in changelog sowie andere
  Dateien, ebenfalls verwenden Sie den Dateinamen ihres Quell-Archivs.
  (Weitere Details in <manref name="dh_make" section="1">).
 
  <p>Es werden einige Informationen angezeigt und Sie werden gefragt,
  welcher Art das Paket sein wird. Gentoo ist ein "single binary
  package" - es wird eine Bin�rdatei und ein .deb-Paket erstellt,
  also w�hlen wir die erste Option mit der `s�-Taste,
  �berpr�fen nochmal die Informationen und best�tigen mit
  &lt;enter&gt;. Als einem beginnenden Maintainer wird es davon
  abgeraten, mehrere Bin�r-Pakete (`multiple binary packages�) oder
  Bibliotheken (`libraries�) zu erstellen, wie es schon vorher
  erw�hnt wurde, deswegen gehen ich hier nicht weiter darauf ein.

  <p>Beachten Sie, dass dh_make nur <strong>ein Mal</strong> ausgef�hrt
  wird und bei sp�teren Aufrufen nicht sauber funktionieren wird, wenn
  es im "debianisierten" Verzeichniss ausgef�hrt wird. Das bedeutet
  auch, dass Sie bei sp�teren Updates mit neueren Programm-Versionen
  anders vorgehen m�ssen, mehr dazu sp�ter in <ref id="update">.

  <chapt id="modify">Quellcode modifizieren

  <p>Normallerweise installieren sich die Programme in Verzeichnissen
  unterhalb von /usr/local. Da bei Debian-Paketen dieses Verzeichniss
  nicht verwendet werden darf und ausschliesslich zur Verf�gung des
  lokalen Administrators (oder der User) steht, m�ssen Sie einen Blick
  auf den Erstellungsprozess werfen, normallerweise beginnend mit dem
  Makefile. Das ist der Skript, mit dem <manref name="make" section="1">
  die Arbeit automatisiert. Weitere Details �ber Makefiles in <ref
  id="rules">.

  <p>Beachten Sie, da� wenn ihr Programm GNU <manref
  name="automake" section="1"> und/oder <manref name="autoconf"
  section="1"> verwendet, werden Sie die �nderungen in der Datei
  Makefile.am bzw. Makefile.in machen m�ssen, weil jeder Aufruf von
  automake die Datei Makefile.in mit Informationen aus Makefile.am neu
  erzeugt (und die vorhandene Maikefile.in-Datei �berschreibt!),
  genau wie jeder Aufruf von ./configure mit den Daten aus Makefile.in
  die fertige Makefile-Datei erzeugt. �nderungen in Makefile.am
  erfordern einige Kenntnisse �ber die Funktionsweise von automake;
  mehr dar�ber finden Sie in der "info"-Hilfe von automake.
  Bearbeiten von Makefile.in-Dateien geht dagegen fast genauso einfach
  wie das Bearbeiten von Makefiles, man muss lediglich bei der
  Verwendung der Variablen aufpassen, d.h. Strings, die mit `@' umgeben
  sind, z.B. @CFLAGS@ oder @LN_S@; in diese werden beim
  ./configure-Aufruf die entsprechenden Werte eingesetzt.

  <p>Wir k�nnen an dieser Stelle nicht auf <EM>alle</EM> Feinheiten
  eingehen, denn es w�rde den Ramen dieser Anleitung sprengen, aber
  an dieser Stelle tretten auch die wenigsten Probleme auf.
  
  <sect id="destdir">Installation in ein Unterverzeichnis

  <p>Die meisten Programme installieren sich in die vorhandene
  Verzeichnisstruktur, so dass die ausf�hrbaren Bin�rdateien
  irgendwo in ihrem $PATH landen und die Dokumentation an einem der
  �blichen Positionen. Sie m�ssen sicherstellen, dass dies
  korrekt funktioniert, anderseits muss sich das Programm auch in ein
  alternatives Verzeichniss installieren lassen, das in unserem Fall
  unterhalb des debian/-Verzeichnisses erstellt wird (normallerweise
  <tt>debian/tmp/</tt>), aus dem die Maintainer-Tools dann das Paket
  bauen werden. Alles, was dieses Unterverzeichniss enth�lt, wird
  sp�ter auf das System des Benutzers installiert, mit dem einzigen
  Unterschied, dass dpkg den Inhalt im Stamm-Verzeichniss auspackt.

  <p>Grunds�tzlich m�ssen sie das Programm in debian/tmp
  installiert, dabei soll das Programm aber auch noch dann korrekt
  funktionieren, wenn es im Stamm-Verzeichniss installiert ist. Mit
  Programmen, die GNU autoconf benutzen wird es ein leichtes Spiel sein,
  weil dh_make schon die richtigen Kommandos ausw�hlt, also
  k�nnen Sie diesen Abschnitt vermuttich �berspringen. Bei
  anderen Programmen m�ssen Sie die entsprechenden Makefiles
  untersuchen und ggf. anpassen. (A.d.�.: Bei einigen Programmen
  kommt man auch um das Anpassen des Quellcodes nicht herum, wenn z.B.
  die Pfade zu best. Konfigurationsdateien fest einkompiliert werden).
  
  <p>Hier ist der relevante Abschnitt des Makefiles von gentoo:

  <p><example>
  # Where to put binary on 'make install'?
  BIN     = /usr/local/bin
  # Where to put icons on 'make install'? Note: if you change this,
  # gentoo will not find the icons as it starts up. You're going to
  # have to alter gentoo's icon path (in the config window, "Paths"
  # tab) to get it work.
  ICONS   = /usr/local/lib/gentoo/
  </example>

  <p>Bevor dieser kommt sollten Sie zwei neue Zeilen einsetzen:

  <p><example>
  # Edited for Debian GNU/Linux.
  DESTDIR =
  </example>
  Dies wird beim build-Prozess ben�tigt (Erkl�rungen kommen
  sp�ter in <ref id="rules">).

  <p>Dann legt das Makefile die Position der endg�ltigen Programmdatei fest, dies �ndern wir zu:
  <p><example>
  # Where to put binary on 'make install'?
  BIN     = $(DESTDIR)/usr/X11R6/bin
  </example>

  <p>Sie fragen sich vielleicht, warum in dieses Verzeichniss, warum
  nicht in irgendeinen anderen? Weil Debian klar definierte Regeln hat,
  die beschreiben, wohin die Programm zu installieren sind. Diese sind
  in dem Filesystem Hierarchy Standard n�her spezifiziert (siehe
  /usr/share/doc/debian-policy/fhs/).  Demnach soll die Bin�rdatei
  (f�r X11) in /usr/X11R6/bin und nicht in /usr/local/bin
  installiert sein, genau wie die Man-Seite in /usr/share/man/man1 statt
  in /usr/local/man/man1.

  <p>Danach haben wir eine etwas kompliziertere Situation. Wenn man die
  n�chste Zeile entsprechend ver�ndert, also zu:

  <p><example>
  ICONS   = $(DESTDIR)/usr/share/gentoo/
  </example>
  (das der Policy entspricht), werden Sie wahrscheinlich die
  C-Quelltexte direkt bearbeiten m�ssen. (A.d.�.: Warum? Ganz
  einfach, weil dieser Pfad beim Kompilieren nirgendwo verwendet wird,
  m�ssen wir davon ausgehen, dass der Autor die Pfadangaben direkt
  einkodiert hat). Aber wie und wo soll man suchen? Man kann z.B. mit
  <p><example>
  grep -n usr/local/lib *.[ch]
  </example>
  jedes Verzeichniss durch'grep'en, das .c- und .h-Dateien enth�lt.
  Grep wird die Stellen aufzeigen, an den der Pfadname verwendet wurde.
  (A.d.�.:Meine Idee w�re eher: 
  <example>find -regex ".*\.h$\|.*\.c$"|xargs grep -n usr/local/lib | less
  </example>
  oder �hnliches). Nunm�ssen Sie die entsprechenden Dateien
  bearbeiten und usr/local/lib mit den neuen Pfad ersetzen - und dabei
  aufpassen, dass Sie den restlichen Code nicht versauen. Keine Angst,
  f�r diese simple Aufgabe man muss nicht gleich C programmieren
  k�nnen ;)

  <p>Wenn alles erledigt ist, sollten Sie das Install-Target im Makefile
  lokalisieren (suchen Sie nach der Zeile die mit `install:' beginnt)
  und die Verweise auf die Verzeichnisse gegen die Variablen
  austauschen, die wir am Anfang definiert haben. Fr�her hat das
  Install-Target so ausgesehen:

  <p><example>
  # ----------------------------------------- Installation

  # You're going to have to be root to do this!
  install:        gentoo
                  install ./gentoo $(BIN)
                  install icons $(ICONS)
                  install gentoorc-example $(HOME)/.gentoorc
  </example>

  <p>Nach unseren �nderungen sieht es so aus:
  <example>
  # ----------------------------------------- Installation

  # You're going to have to be root to do this!
  install:        gentoo-target
                  install -d $(BIN) $(ICONS) $(DESTDIR)/etc
                  install ./gentoo $(BIN)
                  install -m644 icons/* $(ICONS)
                  install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
                  install -d $(DESTDIR)/usr/share/doc/gentoo/html
                  cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
  </example>

  <p>Einem aufmerksamem Leser wird auffallen, dass ich gentoo zu
  gentoo-target ge�nder habe. Das nennt man auch Bugfix ;-)

  <p>Wo sie auch immer �nderungen machen, die nicht aussliesslich
  auf Debian bezogen sind, sollten Sie diese dem Upstream-Maintainer
  zukommen lassen, damit er diese in zuk�nftigen Programm-Versionen
  verwenden kann. Sie brauchen dem Upstream nicht das ganze
  debian/-Verzeichniss zu schicken, sondern nur die einzelnen Patches.
  Und versuchen Sie, dem Upstream entgegen zu kommen, in dem Sie keine
  Debian- oder Linux- (oder eben Unix-)spezifische Patches senden.

  <p>(A.d.�.: Speziell hier k�nnte man dem Upstream mit
  wenigen C-Kenntnissen helfen, in dem man die Pfade variabel macht.
  D.h. man ver�ndert im Makefile die gcc-Parameter so, dass die
  Variable ICONS an den C-Pr�prozessor �bergeben wird. In
  dem Programm verwendet man dann ICONS statt den festgelegten Pfaden.)

  <sect id="difflibs">Unterschiedliche Programmbibliotheken

  <p>Das ist ein allt�gliches Problem: Bibliotheken sind von
  Plattform zu Plattform verschieden. Z.b. kann ein Makefile ein Verweis
  auf eine Bibliothek enthalten, die es f�r Debian oder vieleicht
  �berhaupt nicht f�r Linux gibt. In diesem Fall m�ssen
  wir ihn so ver�ndern, dass eine Bibliothek verwendet wird, die es
  in Debian gibt und den selben Zweck erf�llt. Am besten, man
  kommentiert die Zeilen nur aus, weil andere vielleicht auf anderen
  Plattformen kompilieren und auf die gleiche Schwierigkeiten stossen.

  <p>Wenn also im Makefile (bzw. in Makefile.in) eine Zeile wie die
  Folgende vorkommt, und ihr Programm sich nicht kompiliert l�sst:

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

  <p>�ndern Sie sie zum Folgenden und es k�nnte funktionieren:
  <p><example>
  LIBS = -lncurses -lsomething -lsomethingelse
  #LIBS = -lcurses -lsomething -lsomethingelse
  </example>

  <chapt id="dreq">Ben�tigte Sachen in debian/

  <p>Es gibt nun ein neues Unterverzeichniss `debian� im
  Hauptverzeichniss des Quellcode-Pakets (`gentoo-0.9.12'), in dem
  bereits einige Dateien liegen. Wir werden diese �ndern, um die
  Eigenschaften des Pakets anzupassen. Die wichtigsten Dateien sind `control',
  `changelog', `copyright' und 'rules', die f�r die Erstellung
  jedes Pakets ben�tigt werden.

  <sect id="control">Die `control'-Datei

  <p>Diese Datei enth�lt verschiedene Werte, die dpkg und dselect
  f�r die Paketverwaltung ben�tigen. Das ist die
  control-Datei, die dh_make f�r uns erstellt hat:

  <p><example>
  1  Source: gentoo
  2  Section: unknown
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
  5  Standards-Version: 3.0.1
  6
  7  Package: gentoo
  8  Architecture: any
  9  Depends: ${shlibs:Depends}
  10 Description: &lt;insert up to 60 chars description&gt;
  11  &lt;insert long description, indented with spaces&gt;
  </example>
  (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <p>Zeilen 1-5 sind Kontrol-Informationen f�r das Quellcode-Paket.
  Zeile 1 ist die Bezeichnung des Quellcode-Pakets.
  
  <p>Zeile 2 bestimmt die Sektion der Distribution, in die das Paket
  geh�rt. Sie haben bestimmt schon gemerkt, dass Debian in
  Sektionen aufgeteilt ist: main (die Freie Software), non-free (nicht
  wirklich freie Software) und contrib (Freie Software, die von
  non-free-Sachen abh�ngt). Unterhalb dieser Sektionen existieren
  logische Untersektionen, die eine minimale Beschreibung des Pakets
  geben. D.h. die `admin'-Sektion enth�lt Programme f�r
  Administration, `base' die grundlegenden Pakete, `devel' die
  Pakete f�r die Programmierer, `doc' die Dokumentation, `libs' die
  Programmbibliotheken, `mail' die E-Mail-Reader und -Daemonen, `net'
  die Netzwerk-Anwendungen und Daemonen, `x11'-Sektion die
  X11-spezifischen Programme, usw.

  <p>Ver�ndern wir Sektion also zu x11.

  <p>Die dritte Zeile beschreibt, wie wichtig es f�r den
  durschnittlichen Benutzer es w�re, das Paket zu installieren.
  Sektion und Priorit�t werden zur Zeit nur von dselect benutzt, um
  die Pakete zu sortieren, und k�nnen (und werden es wahrscheinlich
  auch) von den FTP-Maintainern �berschrieben. Die Policy
  enth�lt weitere Vorschriften f�r die Wahl der Sektion und
  Priorit�t.
  
  <p>Da es sich um ein normalles Paket handelt, lassen wir es bei
  optional.

  <p>Zeile 4 ist der Name und die E-Mail-Adresse des Maintainers.

  <p>Zeile 5 enth�lt die Version des Debian-Policy-Standards, dem
  dieses Paket folgt. (Zwei Hauptversionen des installierten
  debian-policy-Pakets).

  <p>Wenn ein nicht-standardisierter Compiler oder ein anderes Tool
  f�r die Paketerstellung ben�tigt wird, sollten Sie hier noch
  eine Zeile mit `Build-Depends', in der ben�tigten Pakete
  auflistet werden. Mehr Informationen dar�ber finden Sie in dem
  Packaging Manual (Sektion 8.7) und in der Documentation des
  `build-essential'-Pakets.
  
  <p>Zeile 7 enth�lt die Bezeichnung des Bin�rpakets.

  <p>Zeile 8 beschreibt die CPU-Architektur f�r die das
  Bin�rpaket kompiliert wird. Wir k�nnen das bei "any"
  belassen, weil es dann von  <manref name="dpkg-gencontrol"
  section="1"> mit dem richtigen Inhalt ersetzt wird, der f�r den
  Rechner gilt, auf dem das Paket gebaut wird (siehe die
  Erkl�rungen �ber die Portierung in Developer's Reference).
  Wenn ihr Paket unabh�ngig von der Architektur funktioniert (z.B.
  ein Shell- oder Perl-Skript, oder Dokumentation), �ndern Sie dies
  zu "all", und lesen Sie sp�ter unter <ref id="rules"> �ber
  die Benutzung der `binary-indep'-"rule" statt `binary-arch'.

  <p>Zeile 9 zeigt eine der m�chtigsten Eigenschaften des
  Paketsystems von Debian. �ber spezielle Attribute kann das Verhalten
  des Paketmanagers in Bezug auf andere  Pakete ver�ndert werden.  Neben
  Depends: (d.h. Abh�nqiqkeit) gibt es noch weitere Attribute:
  Recommends: (Empfehlung), Suggests: (Vorschlag), Pre-Depends:
  (Voraussetzung), Conflicts: (Konflikt), Provides: (Enth�lt) und
  Replaces: (Ersetzt) .  <p>Paketverwaltungsprogramme  wie  dpkg,
  dselect oder APT (und seine Frontends) verhalten sich dabei �hnlich
  (Abweichungen weden weiter unten erkl�rt).  (siehe <manref name="dpkg"
  section="8">, <manref name="dselect" section="8">, <manref name="apt"
  section="8">, <manref name="console-apt" section="8">, <manref
  name="gnome-apt" section="8">)

  <p>Und das bedeuten die einzelnen Felder:

  <p><list>
  <item>Depends:
  <p>Das Paket wird erst installiert, wenn die hier aufgelisteten Pakete
  ebenfalls installiert sind. Benutzen Sie dies, wenn ihr Programm ohne
  diese Pakete �berhaupt nicht (oder nicht vern�nftig) laufen kann.
  .</item>

  <item>Recommends:
  <p>Dselect l�sst das Paket nicht ohne weiteres installieren, wenn die
  hier aufgelisteten Pakete nicht ebenfalls installiert werden. Dpkg und
  APT erlauben es trotzdem. Benutzen Sie dieses Feld, wenn die Pakete
  nicht zwingend erforderlich sind, aber normalerweise mitinstalliert
  werden.</item>

  <item>Suggests:
  <p>Wenn der Benutzer ihr Programm installiert, wird Dselect ihn
  auffordern, die hier aufgelisteten Pakete zu installeren. Dpkg und APT
  k�mmern sich nicht weiter darum. Benutzen Sie dies f�r Pakete, die mit
  ihrem Programm gut zusammenarbeiten, aber eigentlich nicht ben�tigt
  werden.</item>

  <item>Pre-Depends:
  <p>Dies "wirkt"  st�rker  als Depends:. Das Paket wird nicht
  installiert, bevor die hier aufgelisteten Pakete fertig installiert
  <em>und richtig konfiguriert</em> sind. Benutzen Sie dies sehr sparsam
  damit und erst, wenn auf  debian-devel-Mailingliste dar�ber diskutiert
  wurde. Lies: verwende es �berhaupt nicht. :-)</item>

  <item>Conflicts:
  <p>Das Paket wird nicht installiert, bevor alle aufgelisteten Pakete
  deinstalliert sind.  Benutzen Sie dies, wenn ihr Programm �berhaupt
  nicht (oder nicht vern�nftig) laufen kann, solange eines dieser Pakete
  installiert ist.</item>

  <item>Provides:
  <p>F�r einige Paketarten mit mehreren Alternativen wurden sog.
  "virtual names" eingef�hrt. Die vollst�ndige Liste dieser virtuellen
  Pakete (A.d.�.:leider nicht immer aktuell) finden Sie in der Datei
  /usr/share/doc/debian-policy/virtual-package-names-list.text.gz .
  Benutzen Sie dies, wenn ihr Paket die Funktionalit�t eines
  existierenden virtuellen Pakets bietet.
  </item>

  <item>Replaces:
  <p>Benutzen Sie dies, wenn ihr Paket die Dateien eines anderen Pakets
  �berschreibt oder dieses Paket vollst�ndig ersetzt (benutzt zusmmen
  mit Conflicts:). Die Dateien des gennanten Pakets werden gel�scht,
  bevor ihre Versionen  installiert werden.

  </item>
  </list>

  <p>All diese Felder haben eine einheitliche Syntax. Dies ist eine
  Liste der Paketnamen, getrennt durch Kommas.  Ein Paketname kann auch
  aus einer Liste der alternativen Paketnamen bestehen, die durch
  senkrechte Striche <tt>|</tt> ("pipe"-Zeichen)  getrennt werden.  Die
  Angabe des Pakets kann auch auf ganz bestimmte Paketversionen
  beschr�nkt werden. Diese Versionen werden in Klammern nach jedem
  einzelnen Paketnamen aufgef�hrt und werden durch spezielle Symbole
  festgelegt, gefolgt von einer Versionsnummer. Folgende Symbole sind
  erlaubt: <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>, <tt>=</tt>, <tt>&gt;=</tt>
  und <tt>&gt;&gt;</tt> f�r niedriger, niedriger oder gleich, gleich,
  h�her oder gleich und h�her.

  <p>Das letzte Feature, das erw�hnt werden sollte, ist die Variable
  $(shlibs:Depends). Der Inhalt wird automatisch mit  <manref
  name="dh_shlibdeps" section="1"> erzeugt und von <manref
  name="dh_gencontrol" section="1"> eingesetzt. Die Variable enth�lt die
  Namen der Programmbibliothken, die ihr Programm benutzt, z. B. libc6
  oder xlib6g; somit brauchen Sie nicht jedesmal die passenden
  Paketnamem angeben. Nachdem es nun gesagt wurde k�nnen wir die Zeile 9
  so stehen lassen.

  <p>Zeile 10 enth�lt die Liste der Paketvorschl.�ge.Hier steht nur
  `file', weil  gentoo f�r einige Funktionen dieses Programm/Paket
  braucht.

  <p>Zeile 11 enth�lt eine Kurzbeschreibung. Bei den meisten Leuten sind
  die Terminalzeilen 80 Zeichen breit, also sollte die Kurubeschreibung
  nicht l�nger als 60 Zeichen sein. Ich �ndere es ins  "A fully GUI
  configurable GTK+ file manager".

  <p>In die Zeile 12 kommt eine ausf�hrliche Beschreibung des Pakets.
  Sie sollte aus einem kleinen Text bestehen, der mehr �ber das Paket
  verr�t. Der erste Spalt der Zeilen sollte immer leer sein. Es d�rfen
  keine leeren Zeilen vorkommen, Sie k�nnen aber welche simulieren, in
  dem Sie ein . (Punkt) in die Zeile einsetzen. Es darf nach der
  ausf�hrlichen Beschreibung auch nicht mehr als eine Leerzeile
  vorkommen.

  <p>Und so sieht die angepasste control-Datei aus:

  <p><example>
  1  Source: gentoo
  2  Section: x11
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
  5  Standards-Version: 3.0.1
  6
  7  Package: gentoo
  8  Architecture: any
  9  Depends: ${shlibs:Depends}
  10 Suggests: file
  11 Description: A fully GUI configurable GTK+ file manager
  12  gentoo is a file manager for Linux written from scratch in pure C. It
  13  uses the GTK+ toolkit for all of its interface needs. gentoo provides
  14  100% GUI configurability; no need to edit config files by hand and re-
  15  start the program. gentoo supports identifying the type of various
  16  files (using extension, regular expressions, or the 'file' command),
  17  and can display files of different types with different colors and icons.
  18  .
  19  gentoo borrows some of its look and feel from the classic Amiga file
  20  manager "Directory OPUS" (written by Jonathan Potter).
  </example>
  (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <sect id="copyright">Die `copyright'-Datei

  <p>In dieser Datei stehen Informationen �ber die Herkunft des Pakets
  (bzw. der Quellen), �ber die Lizenz und das Urheberrecht (Copyright).
  Die Policy schreibt keine bestimmte Form vor, aber den ben�tigten
  Inhalt  (siehe Abschnitt 6.5). Dh_make erstellt uns eine
  Standardvorlage, die etwa so aussieht:

  <p><example>
  1  This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&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>
   (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <p>Die wichtigsten Dinge, die Sie hier einzutragen haben, sind die
  Quelle, von der Sie das Paket bezogen haben, die  geltenden
  Copyright-Vermerke  und die Lizenz. Sie m�ssen die komplete Lizenz
  einf�gen, sofern es sich nicht um eine der g�ngigen freien
  Softwarelizenzen handelt, z.B. die GNU GPL oder LGPL, die BSD- oder
  die Artistic-Lizenz; in diesem Fall reicht ein Verweiss auf die
  entsprechende Datei im Verzeichniss /usr/share/common-licenses/, das
  auf jedem Debian-System existieren sollte. Gentoo unterliegt der "GNU
  General Public License", also bearbeiten wir die Datei und machen
  Folgendes daraus:

  <p><example>
  1  This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&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>
   (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <sect id="changelog">Die `changelog'-Datei

  <p>Dies ist eine zwingend vorgeschriebene Datei, deren Format in
  Packaging Manual (Sektion 3.2.3) beschrieben wird. Dieses Format
  ben�tigen dpkg und andere Programme um Dinge wie  Versionsnummer,
  Revision, Distribution und die Wichtigkeit ihres Pakets zu bestimmen.
  <p>F�r sie ist es ebenfalls wichtig, weil man hier die gemachten
  �nderungen dokumentieren kann. Damit k�nnen Leute, die ihr Paket
  herunterladen, einfacher herausfinden, ob es noch ungel�ste Probleme
  mit dem Paket gibt, �ber die Sie wissen sollten. Diese Datei wird im
  Bi�rpaket als `/usr/share/doc/gentoo/changelog.Debian.gz' gespeichert.

  <p>Dh_make erstellt uns eine Standardvorlage, die etwa so aussieht:

  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4
  5  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  6
  7  Local variables:
  8  mode: debian-changelog
  9  End:
  </example>
  (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <p>In der Zeile 1 stehen der Paketname, die Version, die Distribution
  und die Wichtigkeit.  Der Name muss mit dem Namen des
  Quellpakets�bereinstimmen, Distribution sollte vorerst `unstable' oder
  `experimental' sein und die Wichtigkeit nicht h�her als `low'. :-)
  <p>Zeilen 3-5 sind Logeintr�ge, in den Sie die in dieser Revision
  gemachten �nderungen dokumentieren k�nnen. Hierher kommt nichts �ber
  die �nderungen des Upstream-Maintainers, f�r diese Zwecke gibt es eine
  separate Datei, die als /usr/share/doc/gentoo/changelog.gz)
  gespeichert wird. Neue Zeilen werden direkt �ber die oberste Zeile,
  die mit einem Stern (`*') beginnt, eingef�gt. Sie k�nnen das mit
  <manref name="dch" section="1">, <manref name="emacs" section="1">
  oder einem anderen Texteditor erledigen (die letzten Zeilen enthalten
  Informationen f�r den Editor Emacs). Schliesslich kommen Sie zu einer
  Datei wie diese hier:

  <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;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  8
  9  Local variables:
  10  mode: debian-changelog
  11 End:
  </example>
    (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <p>Wenn Sie eine neue Revision herausbringen, m�ssen Sie die
  Versionsnummer erh�hen.  Das kann man  `dch -i` machen (oder explizit
  with `dch -v &lt;version&gt;-&lt;revision&gt;`) und dann die
  Kommentare mit ihrem Lieblingsedior einf�gen.  Tip: wie bekommt man
  das Datum im passenden Format?  Verwenden Sie `822-date`, oder `date
  -R` (A.d.�.: f�r eingedeutschte Umgebung: "LC_ALL=C date -R").

  <p>Neuere Versionsinformation wird immer oben eingef�gt..
  Und so siht die changelog-Datei sp�ter aus:

  <p><example>
  1  gentoo (0.9.12-2) unstable; urgency=low
  2
  3   * Fixed a glitch in the menu file.
  4
  5  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 22:15:39 +0100
  6
  7  gentoo (0.9.12-1) unstable; urgency=low
  8
  9   * Initial Release.
  10  * This is my first Debian package.
  11  * Adjusted the Makefile to fix $DESTDIR problems.
  12
  13 -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  14
  15 Local variables:
  16 mode: debian-changelog
  17 End:
  </example>
    (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)

  <p>Mehr �ber die neuen Versionen/Revisionen k�nnen Sie sp�ter in
  <ref id="update"> lesen.

  <sect id="rules">Die `rules'-Datei

  <p>Nun m�ssen wir einen Blick auf die eigentlichen Befehlssequenzen,
  sog. Rules, werfen, mit den <manref name="dpkg-buildpackage"
  section="1">  das Paket schliesslich erstellt. Die "rules"-Datei ist
  im Prinzip ein weiteres Makefile, das mit  `make -f` ausgef�hrt wird,
  und nur etwas anders als Upstreams Makefile aufgebaut ist.

  <p>Wie jedes andere Makefile besteht eine `rules'-Datei aus mehreren
  Rules, die bestimmen, wie mit dem Quellcode verfahren wird. Jede Rule
  besteht wiederrum aus weiteren Targets, Dateinamen oder Namen der
  Aktionen, die durchgef�hrt werden (z.B.. `build:' oder `install:').
  Rules, die Sie ausf�hren m�chten, werden beim Aufruf als
  Programmparameter angegeben (z.B., `./debian/rules build` oder `make
  -f rules install`). Nach dem Targetnamen  (A.d.�.: d.h. nach der
  Bezeichnung unserer Rule) k�nnen Sie Programme oder Dateinamen
  angeben, von der die Ausf�hrung der Rule abh�ngt. Danach folgt eine
  beliebige Anzahl von Kommandos (WICHTIG: einger�ckt mit
  &lt;tab&gt;!), bis eine leere Zeile vorkommt. Danach beginnt eine neue
  Rule bzw. ein neues Target. Mehrere Leerzeilen und mit einem `#'
  (hash) beginnende Zeilen werden als Kommentare betrachtet und
  ignoriert.

  <p>Sie sind vielleicht etwas verwirrt, aber es wird alles verst�ndlich
  nach der genaueren Betrachtung der `rules'-Datei, die uns dh_make
  erstellt hat. Sie sollten evtl. die Info-Seiten von `make' lesen, um
  mehr �ber die Funktionsweise zu erfahren.
  <p>Wichtig zu wissen ist noch, dass dh_make nur einen Muster der
  "rules"-Date erzeugt, also einen Vorschlag, wie sie ungef�hr
  auszusehen hat. Diese Datei wird f�r simple Packete wahrscheinlich
  funktionieren, aber bei komplizierteren d�rfen Sie die Datei nach
  Bedarf anpassen und erweitern. Sie d�rfen nur die Namen der Rules
  nicht �ndern, weil diese im "Packaging Manual" vorgeschrieben sind und
  von allen Programmen (f�r die Paketerstellung) so erwartet werden.

  <p><example>
  1  #!/usr/bin/make -f
  2  # Made with the aid of dh_make, by Craig Small
  3  # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
  4  # Some lines taken from debmake, by Christoph Lameter.
  5
  6  # Uncomment this to turn on verbose mode.
  7  #export DH_VERBOSE=1
  8
  9  # This is the debhelper compatability version to use.
  10 export DH_COMPAT=1
  11
  12 build: build-stamp
  13 build-stamp:
  14	dh_testdir
  15
  16	# Add here commands to compile the package.
  17	$(MAKE)
  18
  19	touch build-stamp
  20
  21 clean:
  22	dh_testdir
  23	dh_testroot
  24	rm -f build-stamp
  25
  26	# Add here commands to clean up after the build process.
  27	-$(MAKE) clean
  28
  29	dh_clean
  30
  31 install: build-stamp
  32	dh_testdir
  33	dh_testroot
  34	dh_clean -k
  35	dh_installdirs
  36
  37	# Add here commands to install the package into debian/tmp.
  38	$(MAKE) install DESTDIR=`pwd`/debian/tmp
  39
  40 # Build architecture-independent files here.
  41 binary-indep: build install
  42 # We have nothing to do by default.
  43
  44 # Build architecture-dependent files here.
  45 binary-arch: build install
  46 #	dh_testversion
  47	dh_testdir
  48	dh_testroot
  49 #	dh_installdebconf
  50	dh_installdocs
  51	dh_installexamples
  52	dh_installmenu
  53 #	dh_installemacsen
  54 #	dh_installpam
  55 #	dh_installinit
  56	dh_installcron
  57	dh_installmanpages
  58	dh_installinfo
  59 #	dh_undocumented
  60	dh_installchangelogs
  61	dh_link
  62	dh_strip
  63	dh_compress
  64	dh_fixperms
  65	# You may want to make some executables suid here.
  66	dh_suidregister
  67 #	dh_makeshlibs
  68	dh_installdeb
  69 #	dh_perl
  70	dh_shlibdeps
  71	dh_gencontrol
  72	dh_md5sums
  73	dh_builddeb
  74
  75 binary: binary-indep binary-arch
  76 .PHONY: build clean binary-indep binary-arch binary install
  </example>
  (Zeilennummerierung habe ich f�r dieses Beispiel hinzugef�gt.)
  <p>Die Funktion der ersten Zeile kennen Sie vielleicht von den Perl-
  oder Shell-Skripts. Sie teilt dem Betriebssystem mit, dass das Skript
  mit /usr/bin/make interpretiert wird.

  <p>Zeilen 12 bis 19 enthalten die `build'-Rule (und die untergeordnete
  `build-stamp'-Rule), die mit dem Makefile der Anwendung das Programm
  kompiliert.

  <p>Die  `clean'-Rule in 21-29, entsorgt alle unn�tigen bin�re und
  automatisch generierte Dateien, die nach der Paketerstellung
  zur�ckbleiben. Diese Rule muss jederzeit funktionsf�hig sein, aucj
  wenn im Quellcode-Verzeichniss bereits aufger�umt wurde, also sollren
  Sie evtl. die "zwang"-Optionen benutzen (z.B. "-f" bei  rm), oder die
  R�ckgabewerte  ignorieren (mit einem `-' am Anfang des Befehls).

  <p>Der Installationsprozess, die `install'-Rule, beginnt in der Zeile
  31.  Es wird einfach die `install'-Rule des programmeigenen Makefiles
  ausgef�hrt, aber in das Verzeichniss `pwd`/debian/tmp installiert -
  aus diesem Grund haben wir in Gentoos Makefile auch die
  "$(DESTDIR)"-Variable (als Root-Verzeichniss der Installation)
  eingebaut.

  <p>Die Rule `binary-indep' in der Zeile 41, ist, wie das Komentar
  bereits sagt, f�r die Erstellung von architekturunabh�ngigen Paketen
  vorgesehen. Das ist beim unseren Paket nicht der Fall, also wird hier
  auch nichts gemacht. W�re ihr Paket vom Typ `Architecture: all',
  m�ssten Sie alle Befehle f�r den "build" in diese Rule packen und
  stattdessen die n�chste Rule (`binary-arch') leer lassen.

  <p>Auf zur n�chsten Rule - `binary-arch' in den Zeilen 45 bis 73, in
  der wir verschiedene kleine Utilities aus dem Debhelper-Paket starten,
  die an unseren Dateien verschiedene Operation durchf�hren, um das
  Paket Policy-konform zu machen.

  <p>Die Namen beginnen mit dh_ und der Rest erkl�rt bereits die Aufgabe
  des Tools.  Alles ist praktisch selbsterkl�rend, hier noch einige
  zus�tzlichen Erk�rungen:

  <list>
  <item><manref name="dh_testdir" section="1"> �berpr�ft, ob Sie im
  richtigen Verzeichniss sind (d.h. im obersten Verzeichniss des
  Quellcode-Verzeichnissbaums).
  <item><manref name="dh_testroot" section="1"> �berpr�ft, ob Sie
  root-Rechte besitzen, die f�r die binary*-Targets ben�tigt werden.
  <item><manref name="dh_installmanpages" section="1"> kopiert alle
  Manpages, die es in Quellcode-Verzeichnissen finden kann  (aufgepasst,
  das ist DWIM).
  <item><manref name="dh_strip" section="1"> "stript" (A.d.�.: siehe
  'man strip') die Debugging-Header aus Libs und ausf�hrbaren Dateien,
  um die Dateigr�sse zu reduzieren.
  <item><manref name="dh_compress" section="1"> komprimiert (mit gzip)
  Manpages und Doku-Dateien, die gr�sser als 4 kB sind.
  <item><manref name="dh_installdeb" section="1"> kopiert sonstige, f�rs
  Paket ben�tigte Dateien (z.B. die Maintainer-Skripte) ins Verzeichniss
  debian/tmp/DEBIAN.
  <item><manref name="dh_shlibdeps" section="1"> berechnet
  Abh�ngigkeiten von Libs und anderen Bin�ries.
  <item><manref name="dh_gencontrol" section="1"> erweitert und
  installiert die control-Datei.
  <item><manref name="dh_md5sums" section="1"> generiert MD5-Pr�fsummen
  f�r alle Dateien im Paket.
  </list>

  <p>Die vollst�ndigeren Infos �ber die Aufgaben und Bedienung all
  dieser dh_*-Skripte finden Sie in den jeweiligen Manpages.  Es gibt
  noch weitere, m�glicherweise sehr n�tzliche dh_*-Skripte, die hier
  nicht weiter erw�hnt werden. Wenn Sie sie mal brauchen, lesen Sie die
  Debhelper-Dokumentation.

  <p>Die Sektion "binary-arch" ist so eine, in der Sie wirklich alle
  Zeilen, in den nicht ben�tigte Features installert werden,
  auskomentieren sollten. Bei Gentoo komentiere ich Zeilen mit folgenden
  Befehlen aus, und zwar weil Gentoo diese einfach nicht braucht:
  testversion, emacsen, pam, init, cron, manpages, info, undocumented,
  suidregister, makeshlibs und perl. In der Zeile 60 werde ich ebenfalls
  `FIXES' hinzuf�gen, weil das der Name der Changelog-Datei des
  Upstreams ist.

  <p>Die letzten zwei Zeilen sind (genau wie andere, nicht weiter
  erkl�rte Zeien) einfach nur irgendwelche, mehr oder weniger ben�tigen
  Dinge, �ber die Sie mehr im Make- oder Packaging-Manual nachlesen
  k�nnen. Im Moment brauchen wir dar�ber nichts zu wissen.

  <chapt id="dother">Andere Dateien unter debian/

  <p>Wie Sie sehen gibt es noch verschiedene weitere Dateien im
  "debian/"-Unterverzeichniss, von den die meisten mit der `.ex'-Endung
  versehen sind, was bedeutet, dass es sich um Beispiele handelt. Wenn
  Sie eines dieser Features unbedingt brauchen oder einfach so verwenden
  m�chten, lesen Sie die entsprechende Dokumentation (Tip: Policy
  Manual), bennen Sie die Datei um (`.ex' entfernen) und passen Sie die
  rules-Datei an, soweit notwendig..  Einige dieser Dateien, die am
  meisten benutzten,  werden in den follgenden Abschnitten beschrieben.

  <sect id="readme">README.Debian

  <p>Alle zus�tzlichen Details und nennenswerte Unterschiede zw. dem
  Original und ihrer "debianisierten" Version sollten hier dokumentiert
  werden. Dh_make erstellt uns eine  Standardvorlage, die etwa so
  aussieht:

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

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

  Josip Rodin &lt;jrodin@jagor.srce.hr&gt;, Wed, 11 Nov 1998 21:02:14 +0100
  </example>

  <p>Da wir nichts einzutragen haben, kann die Datei ruhig gel�scht werden.


  <sect id="conffiles">conffiles

  <p>Eine der �rgerlichsten Sachen bei der Software ist es, wenn Sie
  richtig viel Zeit und M�he in die Konfiguration eines Programms
  investieren, und schon das n�chste Update ihre Konfigurationsdateien
  platt macht. Debian l�st dieses Problem, in dem die
  Konfigurationsdateien markiert werden und der Administrator beim
  n�chsten Paketupgrde gefragt wird, ob er seine Konfiguration behalten
  will oder nicht.
   <p>Zu markierende Konfigurationsdateien k�nnen Sie in die Datei
   "conffiles" eintragen, pro Zeile ein Dateiname mit dem vollst�ndigen
   Pfad der Konfigurationsdatei (normallerweise in /etc/...)

  <p>Gentoo hat eine Konfigurationsdatei, "/etc/gentoorc", also werden
  wir diesen String in die `conffiles'-Datei eintragen. Wenn ihr
  Programm keine Konfigurationsdateien braucht, kann diese Datei
  nat�rlich verschwinden.

  <sect id="dirs">dirs

  <p>In dieser Datei werden Verzeichnisse festgelegt, die wir brauchen,
  die von der Installationsprozedur (hier: "make install") aber nicht
  automatisch erstellt werden. 

  Die Vorlage sieht so aus:
  <p><example>
  usr/bin
  usr/sbin
  </example>

  <p>Beachten Sie, dass kein einleitender Schr�gstrich dabei ist.
  Normallerweise w�rden wir das jetzt ins Folgende �ndern:

  <p><example>
  usr/X11R6/bin
  usr/X11R6/man/man1
  </example>
  
  Allerdings werden diese Verzeichnisse bereits durch das Makefile
  erstellt, wir brauchen die "dirs"-Datei also nicht und k�nnen sie
  ruhig l�schen.

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

  <p>Die Dateien mit der ".ex"-Erweiterung sind Beispiele daf�r, wie man
  bestimmte Features in das Paket einbaut. Um diese zu verwenden,
  bearbeiten Sie die entsprechende Dateien und entfernen die "
  .ex"-Erweiterung. Wenn Sir die Funktion nicht brauchen, l�schen Sie
  die Datei.

  <p>Ihr Programm sollte eine Manpage haben. Hat es keine, dann k�nnen
  Sie die erstellte Vorlage umbennen und mit dem eigenen Text f�llen. In
  den Manpages von <manref name="man" section="7"> finden Sie weitere
  Hinweise zur Erstellung von Man-Seiten. Geben Sie der fertigen Datei
  auf jeden Fall den Namen des Programms mit der Endung der
  Zielkategorie dieser Manpage. Hier ist eine kurze Liste der
  Kategorien:

  <p><example>
  Sektion |     Beschreibung     |     Anmerkungen
     1     Benutzerkomandos       Ausf�hrbare Programme oder Skripte
     2     Systemaufrufe          Kernelfunktionen
     3     Bibliotheksaufrufe     Funktionen in System-Bibliotheken
     4     Spezielle Dateien      gew�hnlich in /dev
     5     Dateiformate und 
           Konventionen           z.B. das Format von /etc/passwd
     6     Spiele                 und �hnliche Programme
     7     Makropakete und 
           Konventionen           z.B. man(7), groff(7)
     8     Systemadministrations-
           befehle                in der Regel nur f�r root
     9     Kernelroutinen         [Nicht Standard]
  </example>
  
  <p>Also bekommt unsere Manpage den Dateinamen gentoo.1, oder besser
  gentoo.1x, weil es ein X11-Programm ist. Im gentoo-Archiv gab es keine
  gentoo.1-Manpage, also habe ich eine geschrieben, mit Hilfe der
  Informationen aus dem Beispiel und aus der Doku des Upstream's.

  <sect id="menu">menu.ex

  <p>Benutzer von  "X Window System" haben normallerweise einen
  Fenstermanager mit konfigurierbaren Men�s, aus den die Programme
  gestartet werden. Wenn Sie Debian's "menu"-Paket installiert haben,
  wird eine Reihe Men�eintr�ge f�r die installierten Programme
  automatisch hinzugef�gt. Dies ist von der Policy nicht vorgeschrieben,
  wird aber sicherlich von vielen Benutzern erw�nscht. Wir k�nnen Gentoo
  in das Men�system eintragen, in dem wir die "menu"-Datei erstellen.
  Das Beispiel von dh_make sieht so aus:
  
  <p><example>
  ?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual\
    title="gentoo" command="/usr/bin/gentoo"
  </example>

  <p>Das erste Feld (needs) bestimmt, welche Art der Benutzerschnittstelle das
  Programm braucht (z.B. Text oder X11). Das n�chste ist das
  Men�/Untermen� (section), in dem der Eintrag sp�ter erscheinen soll.  Die
  aktuelle Liste der Sektionen ist in:
  /usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1 zu finden.
  Das dritte Feld (title) enth�lt die Bezeichnung des Programms. Das
  "icon"-Feld gibt die Icondatei an oder keinen Icon mit dem Eintrag
  "none". Und das letzte Feld ist das Kommando, das das Programm
  ausf�hrt.

  <p>Die Men�-Datei ver�ndern wir also zum folgenden:
  <p><example>
  ?package(gentoo):needs=X11 section=Apps/Misc \
    title="Gentoo" command="/usr/X11R6/bin/gentoo"
  </example>

  <p>Siehe <manref name="menufile" section="5">, <manref
  name="update-menus" section="1"> und
  /usr/share/doc/debian-policy/menu-policy.html/ f�r mehr Info �ber das
  Men�system.

  <sect id="watch">watch.ex

  <p>Sie k�nnen diese Datei mit Programmen <manref name="uscan"
  section="1"> und <manref name="uupdate" section="1"> (aus dem
  devscripts-Paket) benutzen, um die Seite zu �berwachen, von der Sie
  die Original-Quellen bezogen haben. Folgendes habe ich da eingetragen:

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

  <p>Hinweiss: wechseln Sie, wenn Sie die Datei mal erstellt haben, mit
  einer stehenden Internetverbindung in das Arbeitsverzeichniss und
  probieren Sie "uscan" auszuf�hren. Und RTFM.

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

  <p>Hat ihr Programm Dokumentation in HTML oder einem anderen Format
  (ausser Man- und Info-Seiten), so sollten die Datei `doc-base'
  benutzen, um diese zu registrieren, damit der Benutzer sie mit
  Programmen wie <manref name="dhelp" section="1"> oder <manref
  name="dwww" section="1"> einfacher finden kann.

  <p>So k�nnte Gentoo's doc-base-Datei dann aussehen.
  <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>Informationen �ber das Format dieser Datei finden Sie in <manref name="install-docs" section="8">
  und der Anleitung von doc-base in /usr/doc/doc-base/doc-base.html/index.html.

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

  <p>Diese Dateien werden Maintainer-Skripte gennant, Skripte die im
  Kontrol-Bereich des Pakets ligen und von dpkg ausgef�hrt werden, und
  zwar wenn ihr Paket installiert, aktualisiert oder entfernt wird.

  <p>Vorerst sollten Sie aber von den Maintainer-Skripten die Finger
  lassen, weil die manuelle Bearbeitung schnell kompliziert werden kann.
  Mehr Informationen finden Sie im Packaging Manual, Sektion 6, und
  werfen Sie einen Blick auf die Beispiele von dh_make.

  <p>Nun sollten wir soweit sein, das Paket zu "bauen".

  <chapt id="final">Letzte Schritte

  <sect id="build">"Bau" des Pakets.

  <p>Wechseln Sie nun in das Verzeichniss des Programms und f�hren Sie
  das folgende Kommando aus:

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

  <p>Das wird alles f�r Sie erledigen, Sie m�ssen nur noch zwei mal die
  PGP-Mantra eingeben. Anschliessend finden Sie vier neue Dateien im
  dar�berliegenden Verzeichniss:

  <p><list>
  <item><em>gentoo_0.9.12-1_i386.deb</em>
  <p>Das ist das komplete Bin�rpaket, Sie k�nnen es mit dpkg oder
  dselect wie jedes andere Paket (de)installieren.

  <item><em>gentoo_0.9.12.orig.tar.gz</em>
  <p>Dies ist der urspr�ngliche Quellcode, mit dem jemand ihr Paket von
  Grund auf erstellen kann, auch wenn diese Person Debians Paketsystem
  nicht benutzt und den Quellcode manuell herunterladen und kompilieren
  muss.

  <item><em>gentoo_0.9.12-1.dsc</em>
  <p>Dies ist eine Zusammenfassung des Inhalts des Quellcode-Pakets. Die
  Datei wird aus der Datei gentoo-0.9.12/debian/control generiert und
  f�r das Entpacken des Quellcodes mittels <manref name="dpkg-source"
  section="1"> ben�tigt. Diese Datei ist mit PGP signiert, somit k�nnen
  sich die Leute vergewissern, dass sie von ihnen kommt.
  <item><em>gentoo_0.9.12-1.diff.gz</em>
  <p>Diese komprimierte Datei enth�lt alle Zus�tze und �nderungen, die
  Sie mit dem urspr�nglichen Quellcode gemacht haben, im Format, der als
  "unified diff" bekannt ist. Die Datei wird erstellt und benutzt von
  <manref name="dpkg-source" section="1">.

  <item><em>gentoo_0.9.12-1_i386.changes</em>
  <p>Diese Datei beschreibt die �nderungen  in dieser Paket-Revision.
  Die Verwaltungsprogramme f�r Debians FTP-Archive ben�tigen diese Datei
  zur Installation der Bin�r- und Quellcode-Pakete ins FTP-Archiv. Sie
  wird zum Teil aus den Dateien gentoo-0.9.12/debian/changelog und
  ...dsc generiert.
  
  Personen, die ihre Dateien herunterladen, k�nnen diese mit <manref
  name="md5sum" section="1"> �berpr�fen und sollten die Zahl nicht
  �bereinstimmen, dann wissen sie, das die Datei besch�digt oder gehackt
  wurde. Die changes-Datei ist PGP-signert, damit die Leute ganz sicher
  sein k�nnen, das sie von Ihnen kommt.
  </list>

  <p>Bei einem grossen Paket wollen Sie bestimmt nicht alles nach jeder
  kleiner �nderung in debian/rules neu kompilieren. F�r Testzwecke
  k�nnen Sie ein .deb erstellen, ohne alles Schritte durchmachen, z.B.
  so:

  <p><example>
  fakeroot debian/rules binary
  </example>

  <p>Vergewissern Sie sich nur, dass ihre `install'-Rule <strong/nie/
  das untergeordnete Target `install-stamp' aufruft (ist heutzutage
  Normallfall), damit auch sichergestellt wird, dass `dh_clean -k`
  jedesmal aufgerufen wird. Und wenn irgendwann alles richtig
  funktioniert, f�hren Sie den kompleten build-Prozess nochmal aus,
  damit Sie korrekt uploaden k�nnen.

  <sect id="checkit">�berpr�fung auf Fehler
  <p>Lassen Sie <manref name="lintian" section="1"> auf ihre
  .changes-Datei los; dieses Programm findet viele Fehler, die beim
  Paketerstellen h�ufig gemacht werden. Der Aufruf ist folgender:
  
  <p><example>
  lintian -i gentoo_0.9.12-1_i386.changes
  </example>
  
  <p>Den Dateinamen ersetzen Sie durch den Namen der changes-Datei ihres
  Pakets. Erscheinen bei der �berpr�fung einige Fehler, (mit E:
  anfangende Zeilen), lesen Sie die Erkl�rung (die N:-Zeilen),
  korrigieren Sie die Fehler und erstellen Sie das Paket neu, wie in
  <ref id="build"> beschrieben wurde. Erscheinen nur Zeilen mit W: am
  Anfang, dann sind es nur Warnungen und Sie k�nnen davon ausgehen, dass
  ihr Paket in Ordnung ist und wahrscheinlich nur einige Verbesserungen
  braucht.

  <p>Noch ein Tip: Sie k�nnen dpkg-buildpackage und lintian auf einmal
  ausf�hren, mit dem Befehl <manref name="debuild" section="1">.

  <p>Betrachten Sie nun den Inhalt des Pakets mit einem Dateimanager wie
  <manref name="mc" section="1"> oder entpacken Sie es tempor�r mit
  Hilfe von  <manref name="dpkg-deb" section="1">. Halten Sie Ausschau
  nach unn�tigen Dateien im Quellcode und im Bin�r-Paket, f�r den Fall
  das etwas schief ging oder irgendwelcher Scrott beim "clean" �brig
  geblieben ist. Tips: `zgrep ^+++ ../gentoo_0.9.12-1.diff.gz` erzeugt
  eine Liste der neuen und ver�nderten Dateien im Quellcode, und
  `dpkg-deb -c gentoo_0.9.12-1_i386.deb` listet die im Paket enthaltenen
  Dateien auf.
  <p>Installieren Sie das Paket nun selbst, z.B. mit dem Kommando
  <manref name="debi" section="1"> als root. Versuchen Sie jetzt, das
  Paket auf anderen Rechnern zu installieren und das Programm laufen zu
  lassen, passen  Sie dabei auf Warnungen und Fehlermeldungen bei der
  Installation und Ausf�hrung auf.

  <p>Sp�ter, wenn Sie eine neue Version des Pakets erstellen, sollten
  Sie folgende Schritte durchf�hren, um die Upgrade-Kompabilit�t zu
  �berpr�fen:

  <list>
  <item>Upgrade von der vorherigen Version (und von der Version im letzten Debian-Release),
  <item>Downgrade zur�ck
  <item>Installation des Pakets als ein neues Paket (d.h., ohne dass eine vorherige Version installiert ist),
  <item>Deinstallation, Neuinstallation, dann ein "Purge".
  </list>

  <sect id="upload">Upload des Pakets

  <p>Nun, nach dem Sie das Paket ausreichend getestet haben, sollten Sie
  die Paketdateien auf master.debian.org uploaden, z.B. mit Hilfe von
  <manref name="dupload" section="1">.  Zun�chst m�ssen Sie duploads
  Konfigurationsdatei ~/.dupload.conf erstellen. Schreiben Sie etwas wie
  folgendes dort rein:

  <p><example>
  package config;
  $default_host = "master";
  
  $cfg{"master"}{"method"} = "scpb";
  $cfg{"master"}{"login"} = "joy";
  $cfg{"master"}{"visibleuser"} = "jrodin";
  $cfg{"master"}{"visiblename"} = "jagor.srce.hr";
  $cfg{"master"}{"fullname"} = "Josip Rodin";
  
  $cfg{"non-us"}{"method"} = "scpb";
  $cfg{"non-us"}{"login"} = "joy";
  $cfg{"non-us"}{"visibleuser"} = "jrodin";
  $cfg{"non-us"}{"visiblename"} = "jagor.srce.hr";
  $cfg{"non-us"}{"fullname"} = "Josip Rodin";
  
  1;
  </example>

  <p>Angaben zu meiner Person ersetzen Sie nat�rlich durch ihre eigenen, und lesen Sie die Manpage f�r 
  <manref name="dupload.conf" section="5"> um die einzelnen Optionen zu verstehen.

  <p>Bauen Sie eine Verbindung zu ihrem Internet-Provider auf, und f�hren Sie dieses Kommando aus:
  
  <p><example>
  dupload --to master gentoo_0.9.12-1_i386.changes
  </example>

  <p>Dupload vergleicht die md5-Pr�fsummen mit denen aus der
  changes-Datei und weisst Sie ggf. an, das Paket neu zu "bauen", wie
  unter <ref id="build"> bereits beschrieben.

  <p>Dupload fragt nach ihrem Passwort auf master.debian.org, l�dt die
  Pakete hoch und schickt eine kurze Info-Mail �ber ihren Upload an
  <email/debian-devel-changes@lists.debian.org/, falls erforderlich.

  <p>Wenn Sie in Europa wohnen, dann k�nnen Sie auch andere
  Upload-Stellen anstelle von Master benutzen. Mehr dar�ber in <manref
  name="dupload" section="1">, <manref name="dupload.conf" section="5">
  und der "Developer's Reference".

  <sect id="update">Weiterentwicklung des Pakets

  <p>Nehmen wir mal an, es wurde ein Bug-Report(#54321) erstellt wurde,
  und er beschreibt ein Problem, das Sie l�sen k�nnen. Um eine neue
  Revision zu erstellen brauchen Sie folgendes zu tun:

  <list>
  <item>L�sen Sie das Problem im Quellode (wohl selbstverst�ndlich)

  <item>Machen Sie einen neuen Revision-Eintrag in der changelog-Datei mit
  `dch -i`, f�gen Sie eine kleine Beschreibung des Bugs und der L�sung
  hinzu, gefolgt von: "Closes: #54321". Auf diese Weise wird der
  Bugreport von der Verwaltungssoftware"automagisch" geschlossen, sobald
  das Paket ins Debian-Archive �bernommen ist.

  <item>Wiederholen Sie die Schritte aus <ref id="build">, <ref
  id="checkit">, und <ref id="upload">. Der einzige Unterschied ist
  jetzt nur, dass der Original-Quellcode nicht mehr hochgeladen wird, da
  das Tar-Archiv nicht mehr ge�ndert wurde und die alte Version bereits
  auf dem Server liegt.
  </list>

  <p>Betrachten wir jetzt eine andere, etwas kompliziertere Situation -
  eine neue Upstream-Version wurde freigegeben, und Sie wollen sie
  nat�rlich gleich �bernehmen. Sie k�nnen nun folgendes tun:

  <list>
  <item>Den neuen Quellcode-Tarball herunterladen (z.B. das Archive
  `gentoo-0.9.13.tar.gz'), in das Verzeichniss �ber dem alten
  Source-Verzeichniss (z.B. ~/debian/) ablegen.

  <item>Das alte Quellcode-Verzeichniss betretten und folgendes
  ausf�hren:

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

  Nat�rlich ersetzen Sie den Dateinamen mit dem Namen des neuen
  Source-Tarballs ihres Programms.
  <manref name="uupdate" section="1"> wird es dann richtig umbennen und
  versuchen, alle �nderungen aus ihrer vorherigen .diff.gz-Datei in die
  neue Version zu �bernehmen. Anschliessend wird debian/changelog
  aktualisiert.

  <item>Wechseln Sie in das neue Verzeichniss `../gentoo-0.9.13' (ihr
  neues Quellcode-Arbeitsverzeichniss) und wiederholen Sie die Schritte
  aus <ref id="build">, <ref id="checkit"> und <ref id="upload">.
  </list>

  <p>�brigens k�nnen Sie, vorausgesetzt Sie haben `debian/watch' wie in 
  <ref id="watch"> aufgesetzt, durch Ausf�hrung von <manref name="uscan"
  section="1"> "automagisch" nach aktuellem Quellcode suchen,
  herunterladen und "uupdate" durchf�hren.

  <sect id="helpme">Wo kriegt man Hilfe?

  <p>Bevor Sie sich dazu entschliessen, ihre Frage irgendwo zu
  ver�ffentlichen, versuchen Sie es doch einfach mal zuerst mit RTFM.
  Dazu geh�rt Dokumentation in
   /usr/share/doc/dpkg,
  /usr/share/doc/debian, /usr/share/doc/package/*-Dateien und die
  man/info-Seiten f�r alle Programme, die in diesem Artikel erw�hnt
  wurden. Wenn Sie ein Bug-Report erhalten (ja, richtige Bug-Reports!),
  dann wissen Sie auch, dass es an der Zeit ist, sich n�her mit der
  Fehlerdatenbank <url name="Fehlerdatenbank"
  id="http://www.debian.org/Bugs/"> zu besch�ftigen, d.h. die Doku dort
  zu lesen, um mit den Reports effizient umgehen zu k�nnen.
 
  <p>Durch das Beitreten der "Debian Mentors"-Mailing-Liste �ber
  <email/debian-mentors@lists.debian.org/ kommen Sie in Kontakt mit
  erfahrenen Debian-Entwicklern, die ihnen mit potentiellen Fragen
  helfen k�nnen. Sie k�nnen die Liste �ber Mail zu
  <email/debian-mentors-request@lists.debian.org/ abonnieren, mit dem
  Wort `subscribe' im Betreff der Nachricht.

  <p>Wenn Sie dann immer noch Fragen haben, stellen Sie diese auf der 
  "Debian Developers"-Mailing-Liste �ber <email/debian-devel@lists.debian.org/.
   Sie k�nnen die Liste �ber Mail zu <email/debian-devel-request@lists.debian.org/ abonnieren, mit dem
  Wort `subscribe' im Betreff der Nachricht. Wenn Sie bereits ein
  Debian-Entwickler sind, sollten Sie sowieso abonnieren.

  <p>Auch wenn alles richtig funktioniert hat, ist es jetzt Zeit f�r ein
  Gebet. Warum? Weil in wenigen Stunden (oder Tagen) die Benutzer aus
  aller Welt ihr Paket benutzen werden - und da Sie irgendwo kritische
  Fehler gemacht haben, werden Sie von Tausenden von ver�rgerten
  Debian-Benutzern zugemailt... Nur ein Scherz. :-)

  <p>Entspannen sie Sich und machen Sie sich gefasst auf Bug-Meldungen,
  da i.d.R. noch viel Arbeit zu erledigen ist, bis alles den "Debian
  policies" vollst�ndig entspricht (und noch einmal: lesen Sie in der
  <em>richtigen Doku</em> �ber Details). Viel Gl�ck!

 </book>

</debiandoc>