This file is indexed.

/usr/share/doc/maint-guide-de/html/first.de.html is in maint-guide-de 1.2.32.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   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
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Kapitel 2. Erste Schritte</title>
    <link rel="stylesheet" type="text/css" href="maint-guide.css"/>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="home" href="index.de.html" title="Debian-Leitfaden für Neue Paketbetreuer"/>
    <link rel="up" href="index.de.html" title="Debian-Leitfaden für Neue Paketbetreuer"/>
    <link rel="prev" href="start.de.html" title="Kapitel 1. Einstieg, aber richtig!"/>
    <link rel="next" href="modify.de.html" title="Kapitel 3. Den Quellcode verändern"/>
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Kapitel 2. Erste Schritte</th>
        </tr>
        <tr>
          <td align="left"><a accesskey="p" href="start.de.html"><img src="images/prev.gif" alt="Zurück"/></a> </td>
          <th width="60%" align="center"> </th>
          <td align="right"> <a accesskey="n" href="modify.de.html"><img src="images/next.gif" alt="Weiter"/></a></td>
        </tr>
      </table>
      <hr/>
    </div>
    <div class="chapter">
      <div class="titlepage">
        <div>
          <div>
            <h1 class="title"><a id="first"/>Kapitel 2. Erste Schritte</h1>
          </div>
        </div>
      </div>
      <div class="toc">
        <p>
          <strong>Inhaltsverzeichnis</strong>
        </p>
        <dl class="toc">
          <dt>
            <span class="section">
              <a href="first.de.html#workflow">2.1. Arbeitsschritte beim Bau von Debian-Paketen</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#choose">2.2. Ihr Programm auswählen</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#getit">2.3. Besorgen Sie sich das Programm und probieren Sie es aus</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#simplemake">2.4. Einfache Bausysteme</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#portable">2.5. Beliebte portable Bausysteme</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#namever">2.6. Name und Version des Pakets</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#dh-make">2.7. Einrichten von <span class="command"><strong>dh_make</strong></span></a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#non-native-dh-make">2.8. Das erste nicht native Debian-Paket</a>
            </span>
          </dt>
          <dt>
            <span class="section">
              <a href="first.de.html#native-dh-make">2.9. Das erste native Debian-Paket</a>
            </span>
          </dt>
        </dl>
      </div>
      <p>
Lassen Sie uns anfangen, indem Sie Ihr eigenes Paket erstellen (oder, noch
besser, ein vorhandenes übernehmen).
</p>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="workflow"/>2.1. Arbeitsschritte beim Bau von Debian-Paketen</h2>
            </div>
          </div>
        </div>
        <p>
Falls Sie ein Debian-Paket mit einem Programm von (anderen) Originalautoren
erstellen, ist ein Teil der typischen Arbeitsschritte des Debian-Paketbaus
die Erstellung mehrerer speziell benannter Dateien für jeden Schritt, wie
folgt:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>Besorgen Sie sich eine Kopie der Software der Originalautoren, normalerweise
in einem komprimierten Tar-Format.</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>-<em class="replaceable"><code>Version</code></em>.tar.gz</code>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem">
              <p>
Fügen Sie Debian-spezifische Paketanpassungen zu dem Programm der
Originalautoren im Verzeichnis <code class="filename">debian</code> hinzu und
erstellen Sie ein nicht natives Quellpaket (d.h. die Menge an
Eingabedateien, die zum Bau des Debian-Pakets verwandt wird) im Format
<code class="literal">3.0 (quilt)</code>.
</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>.orig.tar.gz</code>
                  </li>
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>-<em class="replaceable"><code>Revision</code></em>.debian.tar.gz</code>
                    <a href="#ftn.idp46291788" class="footnote" id="idp46291788">
                      <sup class="footnote">[4]</sup>
                    </a>
                  </li>
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>-<em class="replaceable"><code>Revision</code></em>.dsc</code>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem">
              <p>
Aus Debian-Quellpaketen gebaute Debian-Binärpakete, die normale
installierbare Paketdateien im <code class="literal">.deb</code>- (oder in dem vom
Debian-Installer verwandten <code class="literal">.udeb</code>-)Format sind.
</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>-<em class="replaceable"><code>Revision</code></em>_<em class="replaceable"><code>Arch</code></em>.deb</code>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
        <p>
Bitte beachten Sie, dass das Zeichen, das
<code class="literal"><em class="replaceable"><code>Paket</code></em></code> und
<code class="literal"><em class="replaceable"><code>Version</code></em></code> trennt, von
<code class="literal">-</code> (Bindestrich) im Tarball-Namen zu <code class="literal">_</code>
(Unterstrich) im Debian-Paketdateinamen geändert wurde.
</p>
        <p>
Im obigen Dateinamen wird der
<code class="literal"><em class="replaceable"><code>Paket</code></em></code>-Teil durch den <span class="strong"><strong>Paketnamen</strong></span>, der
<code class="literal"><em class="replaceable"><code>Version</code></em></code>-Teil durch die
<span class="strong"><strong>Version der Originalautoren</strong></span>, der
<code class="literal"><em class="replaceable"><code>Revision</code></em></code>-Teil durch die
<span class="strong"><strong>Debian-Revision</strong></span> und der
<code class="literal"><em class="replaceable"><code>arch</code></em></code>-Teil mit der <span class="strong"><strong>Paketarchitektur</strong></span>, wie dies in dem »Debian Policy
Manual« festgelegt ist, ersetzt. <a href="#ftn.idp46300396" class="footnote" id="idp46300396"><sup class="footnote">[5]</sup></a>
</p>
        <p>
Falls Sie stattdessen ein Debian-spezifisches Paket ohne (andere)
Originalautoren erstellen, ist der typische Arbeitsablauf bei der
Paketerstellung einfacher.
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
Erstellen Sie ein natives Debian-Quellpaket im Format <code class="literal">3.0
(native)</code> mit einer einzelnen komprimierten Tar-Datei, in der alle
Dateien enthalten sind.
</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>.tar.gz</code>
                  </li>
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>.dsc</code>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem">
              <p>
Bauen Sie Debian-Binärpakete aus den nativen Debian-Quellpaketen.
</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>_<em class="replaceable"><code>Arch</code></em>.deb</code>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
        <p>
Jeder Schritt dieser Übersicht wird in späteren Abschnitten mit
detaillierten Beispielen erklärt.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="choose"/>2.2. Ihr Programm auswählen</h2>
            </div>
          </div>
        </div>
        <p>
Sie haben sich wahrscheinlich schon ein Paket ausgesucht, das Sie erstellen
wollen. Zuerst müssen Sie überprüfen, ob das Paket bereits in der
Distribution existiert, indem Sie das Folgende benutzen.
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>den Befehl <span class="command"><strong>aptitude</strong></span></p>
            </li>
            <li class="listitem">
              <p>die Webseite <a class="ulink" href="http://www.debian.org/distrib/packages">Debian-Pakete</a></p>
            </li>
            <li class="listitem">
              <p>die Webseite <a class="ulink" href="http://packages.qa.debian.org/common/index.html">Debian Package Tracking
System</a></p>
            </li>
          </ul>
        </div>
        <p>
Wenn es das Paket schon gibt, na, dann installieren Sie es! :-) Falls es
<span class="strong"><strong>verwaist (»orphaned«)</strong></span> wurde (wenn als
Betreuer »<a class="ulink" href="http://qa.debian.org/">Debian QA Group</a>« eingetragen ist),
dann können Sie es übernehmen, wenn es noch verfügbar ist. Sie können auch
ein Paket adoptieren, dessen Betreuer einen »Request for Adoption«
(<span class="strong"><strong>RFA</strong></span>) geschrieben hat. <a href="#ftn.idp46312460" class="footnote" id="idp46312460"><sup class="footnote">[6]</sup></a>
</p>
        <p>
Es gibt mehrere Ressourcen zur Paketeigentümerschaft
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p> <a class="ulink" href="http://www.debian.org/devel/wnpp/">Arbeit-bedürfende und voraussichtliche Pakete</a> </p>
            </li>
            <li class="listitem">
              <p> <a class="ulink" href="http://bugs.debian.org/wnpp">Debian-Fehlerdatenbank-Protokolle: Fehler im
Pseudo-Paket <code class="systemitem">wnpp</code> in
<code class="literal">unstable</code></a> </p>
            </li>
            <li class="listitem">
              <p> <a class="ulink" href="http://wnpp.debian.net/">Debian-Pakete, die Aufmerksamkeit benötigen</a> </p>
            </li>
            <li class="listitem">
              <p> <a class="ulink" href="http://wnpp-by-tags.debian.net/">Durchsuchen Sie basierend auf Debtags die
<code class="systemitem">wnpp</code>-Fehler</a> </p>
            </li>
          </ul>
        </div>
        <p>
Als wichtige Randbemerkung sei darauf hingewiesen, dass Debian bereits für
fast alle Arten von Programmen Pakete enthält und die Anzahl der Pakete im
Debian-Archiv wesentlich größer ist als die der Mitwirkenden mit
Berechtigung zum Hochladen. Daher werden Beiträge zu Paketen, die bereits im
Archiv enthalten sind, von anderen Entwicklern wesentlich mehr gewürdigt
(und haben bessere Chancen, gesponsert zu werden) <a href="#ftn.idp46318908" class="footnote" id="idp46318908"><sup class="footnote">[7]</sup></a>. Sie können auf verschiedene Arten beitragen.
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
Pakete übernehmen, die verwaist wurden, aber aktiv benutzt werden
</p>
            </li>
            <li class="listitem">
              <p>
Mitglied in einem <a class="ulink" href="http://wiki.debian.org/Teams">Paketierungs-Team</a> werden
</p>
            </li>
            <li class="listitem">
              <p>
Fehler von sehr beliebten Paketen sortieren und bewerten
</p>
            </li>
            <li class="listitem">
              <p>
Vorbereiten von <a class="ulink" href="http://www.debian.org/doc/developers-reference/pkgs.html#nmu-qa-upload">QA- oder NMU-Uploads</a>
</p>
            </li>
          </ul>
        </div>
        <p>
Wenn Sie ein Paket übernehmen möchten, laden Sie sich das Quell-Paket
herunter (z. B. mit »<code class="literal">apt-get source
<em class="replaceable"><code>Paketname</code></em></code>«) und nehmen Sie es unter die
Lupe. Leider enthält dieses Dokument keine umfassende Anleitung zum
Übernehmen von Paketen. Der Vorteil ist, dass schon jemand das Paket für Sie
vorbereitet hat und Sie keine Schwierigkeiten haben sollten, herauszufinden,
wie das Paket funktioniert. Doch lesen Sie weiter, denn viele der folgenden
Ratschläge werden auch für Sie nützlich sein.
</p>
        <p>
Falls das Paket neu ist und Sie es gern in Debian integrieren möchten, gehen
Sie wie folgt vor:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
Zuerst sollten Sie sicher sein, dass das Programm funktioniert und es
bereits einige Zeit ausprobiert haben, damit Sie die Nützlichkeit bestätigen
können.
</p>
            </li>
            <li class="listitem">
              <p>
Überprüfen Sie auf der Site »<a class="ulink" href="http://www.debian.org/devel/wnpp/">Arbeit-bedürfende und
voraussichtliche Pakete</a>«, dass niemand bereits an diesem Paket
arbeitet. Falls noch niemand daran arbeitet, schreiben Sie mit
<span class="command"><strong>reportbug</strong></span> einen ITP-Fehlerbericht (»Intent To Package«;
Absicht, das Paket zu erstellen) an das <code class="systemitem">wnpp</code>-Pseudopaket. Wenn schon jemand an dem Paket
arbeitet, nehmen Sie mit ihm Verbindung auf, wenn es nötig ist. Andernfalls
finden Sie bestimmt ein anderes interessantes Paket, das von niemandem
betreut wird.
</p>
            </li>
            <li class="listitem">
              <p>
Die Software <span class="strong"><strong>muss eine Lizenz haben</strong></span>.
</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <p>
Für den Bereich <code class="literal">main</code> verlangen die Debian-Richtlinien,
dass es <span class="strong"><strong>die Debian-Richtlinien für Freie Software
komplett erfüllt</strong></span> (<a class="ulink" href="http://www.debian.org/social_contract#guidelines">DFSG</a>) und
<span class="emphasis"><em>kein Paket außerhalb von <code class="literal">main</code>
benötigt</em></span>, um zu kompilieren oder ausgeführt zu werden. Dies ist
der erwünschte Fall.
</p>
                  </li>
                  <li class="listitem">
                    <p>
Für den Bereich <code class="literal">contrib</code> muss es zu den DFSG konform sein,
darf aber ein Paket außerhalb von <code class="literal">main</code> für die
Kompilierung oder Ausführung erfordern.
</p>
                  </li>
                  <li class="listitem">
                    <p>
Für den Bereich <code class="literal">non-free</code> darf es gegen Punkte der DFSG
verstoßen, es <span class="strong"><strong>muss aber verteilbar sein</strong></span>.
</p>
                  </li>
                  <li class="listitem">
                    <p>
Sind Sie nicht sicher, wohin das Paket gehört, schicken Sie den Lizenztext
an <a class="ulink" href="http://lists.debian.org/debian-legal/">debian-legal@lists.debian.org</a> und
bitten um Rat.
</p>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem">
              <p>
Das Programm sollte <span class="strong"><strong>keine</strong></span>
Sicherheitsprobleme und Betreuungssorgen zum Debian-System hinzufügen.
</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <p>
Das Programm sollte gut dokumentiert und der Quellcode verständlich
(d.h. nicht verschleiert) sein.
</p>
                  </li>
                  <li class="listitem">
                    <p>
Sie sollten den oder die Autoren des Programms kontaktieren und
sicherstellen, dass sie mit dem Paketieren einverstanden und Debian
wohlgesonnen sind. Es ist wichtig, dass die Autoren auch später im Fall von
Problemen über das Programm befragt werden können. Versuchen Sie also nicht,
aufgegebene Programme zu paketieren.
</p>
                  </li>
                  <li class="listitem">
                    <p>
Das Programm sollte sicherlich <span class="strong"><strong>nicht</strong></span> als
»setuid root« laufen, oder noch besser, es sollte für die Ausführung
überhaupt keine setuid- oder setgid-Rechte brauchen.
</p>
                  </li>
                  <li class="listitem">
                    <p>
Das Programm sollte kein Daemon sein oder in die Verzeichnisse
<code class="filename">*/sbin</code> installiert werden und auch keinen Port als Root
öffnen.
</p>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
        <p>
Natürlich ist der zuletzt aufgeführt Punkte eher eine Sicherheitsmaßnahme
und sollte Sie vor tobenden Benutzern schützen, falls Ihr setuid-Daemon
irgendetwas Schlimmes anstellt … Wenn Sie mehr Erfahrungen im Erstellen von
Paketen gesammelt haben, können Sie sich auch solche Software paketieren.
</p>
        <p>
Als neuer Betreuer wird Ihnen empfohlen, Erfahrung im Paketieren einfacher
Pakete zu sammeln und Ihnen abgeraten, komplizierte Pakete zu erstellen.  
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>Einfache Pakete</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <p>einfaches Binärpaket, arch=all (Sammlung von Daten, wie
Hintergrundgraphiken) </p>
                  </li>
                  <li class="listitem">
                    <p>einfaches Binärpaket, arch=all (in interpretierten Sprachen wie POSIX-Shell
geschriebene Programme)</p>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem">
              <p>Mittel-komplexe Pakete</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <p>einfaches Binärpaket, arch=any (ELF-Binärprogramme, kompiliert aus Sprachen
wie C und C++)</p>
                  </li>
                  <li class="listitem">
                    <p>mehrere Binärpakete, arch=any+all (Pakete für ELF-Binärprogramme +
Dokumentation)</p>
                  </li>
                  <li class="listitem">
                    <p>Quelle der Originalautoren ist weder im Format <code class="filename">tar.gz</code>
noch im Format <code class="filename">tar.bz2</code></p>
                  </li>
                  <li class="listitem">
                    <p>die Quellen der Originalautoren enthalten Inhalte, die nicht verteilt werden
dürfen</p>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem">
              <p>Hochkomplexe Pakete</p>
              <div class="itemizedlist">
                <ul class="itemizedlist">
                  <li class="listitem">
                    <p>Interpretermodulpakete, die von anderen Paketen verwandt werden</p>
                  </li>
                  <li class="listitem">
                    <p>generische ELF-Bibliothekspakete, die von anderen Paketen verwandt werden</p>
                  </li>
                  <li class="listitem">
                    <p>mehrere Binärpakete, darunter ein ELF-Bibliothekspaket</p>
                  </li>
                  <li class="listitem">
                    <p>Quellpakete mit mehreren Quellen von Originalautoren</p>
                  </li>
                  <li class="listitem">
                    <p>Kernelmodul-Pakete</p>
                  </li>
                  <li class="listitem">
                    <p>Kernel-Patch-Pakete</p>
                  </li>
                  <li class="listitem">
                    <p>jedes Paket mit nicht trivialen Betreuerskripten</p>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
        <p>
Paketieren von hochkomplexen Paketen ist nicht zu schwer, erfordert aber ein
bisschen mehr Wissen. Sie sollten spezielle Hilfestellungen für jede
komplexe Funktionalität erbitten. Beispielsweise haben einige Sprachen ihre
eigenen Unter-Richtliniendokumente:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
                <a class="ulink" href="http://www.debian.org/doc/packaging-manuals/perl-policy/">Perl-Richtlinien</a>
              </p>
            </li>
            <li class="listitem">
              <p>
                <a class="ulink" href="http://www.debian.org/doc/packaging-manuals/python-policy/">Python-Richtlinien</a>
              </p>
            </li>
            <li class="listitem">
              <p>
                <a class="ulink" href="http://www.debian.org/doc/packaging-manuals/java-policy/">Java-Richtlinien</a>
              </p>
            </li>
          </ul>
        </div>
        <p>
Es gibt einen alten lateinischen Spruch: <span class="emphasis"><em>fabricando fit
faber</em></span> (Übung macht den Meister). Es wird
<span class="emphasis"><em>nachdrücklich</em></span> empfohlen, zu üben und mit allen
Schritten der Debian-Paketierung mit einfachen Paketen zu spielen, während
diese Anleitung gelesen wird. Ein trivialer Tarball der Originalautoren ist
<code class="filename">hello-sh-1.0.tar.gz</code>, der einen guten Startpunkt
darstellt. Er wird wie folgt erstellt:<a href="#ftn.idp46350052" class="footnote" id="idp46350052"><sup class="footnote">[8]</sup></a>
</p>
        <pre class="screen">
$ mkdir -p hello-sh/hello-sh-1.0; cd hello-sh/hello-sh-1.0
$ cat &gt; hello &lt;&lt;EOF
#!/bin/sh
# (C) 2011 Foo Bar, GPL2+
echo "Hello!"
EOF
$ chmod 755 hello
$ cd ..
$ tar -cvzf hello-sh-1.0.tar.gz hello-sh-1.0
</pre>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="getit"/>2.3. Besorgen Sie sich das Programm und probieren Sie es aus</h2>
            </div>
          </div>
        </div>
        <p>
Als Erstes müssen Sie die Originalquellen des Programms finden und
herunterladen. Wahrscheinlich haben Sie bereits die Quellcode-Datei von der
Homepage des Autors. Quellen freier Unix-Programme sind üblicherweise im
Format <span class="command"><strong>tar</strong></span>+<span class="command"><strong>gzip</strong></span> mit der Erweiterung
<code class="filename">.tar.gz</code>, im Format
<span class="command"><strong>tar</strong></span>+<span class="command"><strong>bzip2</strong></span> mit der Erweiterung
<code class="filename">.tar.bz2</code> oder im Format
<span class="command"><strong>tar</strong></span>+<span class="command"><strong>xz</strong></span> mit der Erweiterung
<code class="filename">.tar.xz</code>.Sie enthalten üblicherweise ein Verzeichnis,
das
<code class="filename"><em class="replaceable"><code>Paket</code></em>-<em class="replaceable"><code>Version</code></em></code>
genannt ist, sowie alle Quellcode-Dateien darin.
</p>
        <p>
Falls die neueste Version der Quellen über Versionskontrollsysteme wie Git,
Subversion oder CVS verfügbar ist, müssen Sie sie mit »<code class="literal">git
clone</code>«, »<code class="literal">svn co</code>« oder »<code class="literal">csv
co</code>« herunterladen und dann selbst einen Tarball im Format
<span class="command"><strong>tar</strong></span>+<span class="command"><strong>gzip</strong></span> erstellen, indem Sie die
Option »<code class="literal">--exclude-vcs</code>« verwenden.
</p>
        <p>
Kommt der Quellcode in einem anderen Archivtyp daher (beispielsweise wenn
der Dateiname auf <code class="filename">.Z</code> oder <code class="filename">.zip</code>
endet <a href="#ftn.idp46359188" class="footnote" id="idp46359188"><sup class="footnote">[9]</sup></a>), sollten Sie ihn auch mit den
geeigneten Werkzeugen entpacken und neu einpacken.
</p>
        <p>
Falls die Quellen Ihres Programms Inhalte enthalten, die nicht den DFSG
genügen, sollten Sie sie auch entpacken, um solche Inhalte zu entfernen, und
mit einer geänderten Version der Originalautoren, die
<code class="literal">dfsg</code> enhält, neu packen.
</p>
        <p>
Als Beispiel verwende ich hier ein Programm namens
<span class="command"><strong>gentoo</strong></span>, einen GTK+-Dateimanager. <a href="#ftn.idp46361332" class="footnote" id="idp46361332"><sup class="footnote">[10]</sup></a>
</p>
        <p>
Erstellen Sie ein Unterverzeichnis in Ihrem Home-Verzeichnis namens
<code class="filename">debian</code> oder <code class="filename">deb</code> oder irgendetwas,
das Sie passend finden (beispielsweise wäre in diesem Fall nur
<code class="filename">~/gentoo</code> völlig in Ordnung). Kopieren Sie das
heruntergeladene Archiv dorthin und entpacken Sie es (mit »<code class="literal">tar xzf
gentoo-0.9.12.tar.gz</code>«). Vergewissern Sie sich, dass es keine
Warnmeldungen beim Entpacken gab, nicht mal so genannte
<span class="emphasis"><em>irrelevante</em></span>, da die Entpackwerkzeuge anderer Leute
diese Anomalien ignorieren oder auch nicht ignorieren könnten und sie daher
beim Entpacken Probleme bekommen könnten. Ihre Shell-Befehlszeile könnte
dann wie folgt aussehen:
</p>
        <pre class="screen">
$ mkdir ~/gentoo ; cd ~/gentoo
$ wget http://<em class="replaceable"><code>www.example.org</code></em>/gentoo-0.9.12.tar.gz
$ tar xvzf gentoo-0.9.12.tar.gz
$ ls -F
gentoo-0.9.12/
gentoo-0.9.12.tar.gz
</pre>
        <p>
Jetzt haben Sie ein neues Unterverzeichnis namens
<code class="filename">gentoo-0.9.12</code>. Wechseln Sie dorthin und lesen Sie die
mitgelieferte Dokumentation <span class="emphasis"><em>aufmerksam</em></span> durch. Meistens
gibt es Dateien mit den Namen <code class="filename">README*</code>,
<code class="filename">INSTALL*</code>, <code class="filename">*.lsm</code> oder
<code class="filename">*.html</code>. Sie müssen eine Anleitung finden, wie man das
Programm kompiliert und installiert (meistens wird von einer Installation in
das Verzeichnis <code class="filename">/usr/local/bin</code> ausgegangen, aber das
werden Sie nicht machen. Mehr dazu später in <a class="xref" href="modify.de.html#destdir" title="3.3. Installation von Dateien in ihr Zielverzeichnis">Abschnitt 3.3, „Installation von Dateien in ihr Zielverzeichnis“</a>).
</p>
        <p>
Sie sollten das Paketieren mit einem komplett aufgeräumten (»pristine«,
makellosen) Quellcode-Verzeichnis anfangen oder die Quellen einfach frisch
entpacken.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="simplemake"/>2.4. Einfache Bausysteme</h2>
            </div>
          </div>
        </div>
        <p>
Einfache Programme enthalten normalerweise eine
<code class="filename">Makefile</code>-Datei und können rein durch den Aufruf von
»<code class="literal">make</code>« kompiliert werden. <a href="#ftn.idp46369268" class="footnote" id="idp46369268"><sup class="footnote">[11]</sup></a> Einige von ihnen unterstützen »<code class="literal">make check</code>«,
wodurch die mitgelieferten Selbsttests gestartet werden. Die Installation in
das Zielverzeichnis wird üblicherweise mittels »<code class="literal">make
install</code>« durchgeführt.
</p>
        <p>
Versuchen Sie nun, das Programm zu kompilieren und auszuführen. Stellen Sie
sicher, dass es einwandfrei funktioniert und nichts anderes während der
Installation oder der Ausführung kaputt macht.
</p>
        <p>
Meistens können Sie außerdem »<code class="literal">make clean</code>« (oder besser
»<code class="literal">make distclean</code>«) ausführen, um im Build-Verzeichnis
aufzuräumen. Manchmal gibt es sogar ein »<code class="literal">make uninstall</code>«,
womit alle installierten Dateien gelöscht werden können.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="portable"/>2.5. Beliebte portable Bausysteme</h2>
            </div>
          </div>
        </div>
        <p>
Viele freie Software-Programme sind in den Sprachen <a class="ulink" href="http://de.wikipedia.org/wiki/C_(Programmiersprache)">C</a> oder
<a class="ulink" href="http://de.wikipedia.org/wiki/C++">C++</a> geschrieben. Die
meisten von ihnen verwenden Autotools oder CMake, um auf verschiedene
Plattformen portierbar zu sein. Diese Bauwerkzeuge müssen zuerst benutzt
werden, um das <code class="filename">Makefile</code> und andere benötigte
Quelldateien zu erzeugen. Anschließend werden solche Programme mit dem
üblichen »<code class="literal">make; make install</code>« gebaut.
</p>
        <p>
<a class="ulink" href="http://de.wikipedia.org/wiki/GNU_Build_System">Autotools</a>
ist das GNU-Buildsystem, das aus <a class="ulink" href="http://en.wikipedia.org/wiki/Autoconf">Autoconf</a>,
<a class="ulink" href="http://en.wikipedia.org/wiki/Automake">Automake</a>, <a class="ulink" href="http://en.wikipedia.org/wiki/GNU_Libtool">Libtool</a> und <a class="ulink" href="http://de.wikipedia.org/wiki/GNU_gettext">gettext</a> besteht. Sie
erkennen solche Quellen an den Dateien <code class="filename">configure.ac</code>,
<code class="filename">Makefile.am</code> und
<code class="filename">Makefile.in</code>. <a href="#ftn.idp46377716" class="footnote" id="idp46377716"><sup class="footnote">[12]</sup></a>
</p>
        <p>
Der erste Schritt im Arbeitsablauf der Autotools ist üblicherweise, dass der
ursprüngliche Autor »<code class="literal">autoreconf -i -f</code>« im
Quellenverzeichnis aufruft und die Quellen dann mit den erzeugten Dateien
verteilt.
</p>
        <pre class="screen">
configure.ac-----+-&gt; autoreconf -+-&gt; configure
Makefile.am -----+        |      +-&gt; Makefile.in
src/Makefile.am -+        |      +-&gt; src/Makefile.in
                          |      +-&gt; config.h.in
                      automake
                      aclocal
                      aclocal.m4
                      autoheader
</pre>
        <p>
Das Bearbeiten der Dateien <code class="filename">configure.ac</code> und
<code class="filename">Makefile.am</code> erfordert etwas Wissen über
<span class="command"><strong>autoconf</strong></span> und <span class="command"><strong>automake</strong></span>. Siehe
»<code class="literal">info autoconf</code>« und »<code class="literal">info automake</code>«.
</p>
        <p>
Der zweite Schritt im Arbeitsablauf der Autotools ist üblicherweise, dass
der Benutzer diese verteilten Quellen erhält und »<code class="literal">./configure
&amp;&amp; make</code>« in den Quellen aufruft, um das Programm zu einem
ausführbaren <span class="command"><strong><em class="replaceable"><code>Binärdatei</code></em></strong></span>-Befehl
zu kompilieren.
</p>
        <pre class="screen">
Makefile.in -----+                +-&gt; Makefile -----+-&gt; make -&gt; <em class="replaceable"><code>binary</code></em>
src/Makefile.in -+-&gt; ./configure -+-&gt; src/Makefile -+
config.h.in -----+                +-&gt; config.h -----+
                 |
  config.status -+
  config.guess --+
</pre>
        <p>
Sie können in der Datei <code class="filename">Makefile</code> viele Dinge ändern,
beispielsweise können Sie den voreingestellten Installationsort für Dateien
ändern, idem Sie die Befehlszeilenoption »<span class="command"><strong>./configure
--prefix=/usr</strong></span>« benutzen.
</p>
        <p>
Obwohl es nicht erforderlich ist, kann die Aktualisierung der Datei
<code class="filename">configure</code> und anderer Dateien mittels
»<code class="literal">autoreconf -i -f</code>« die Kompatibilität der Quellen
verbessern. <a href="#ftn.idp46385916" class="footnote" id="idp46385916"><sup class="footnote">[13]</sup></a>
</p>
        <p>
<a class="ulink" href="http://de.wikipedia.org/wiki/CMake">CMake</a> ist ein
alternatives Build-System. Sie erkennen solche Quellen an der Datei
<code class="filename">CMakeLists.txt</code>.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="namever"/>2.6. Name und Version des Pakets</h2>
            </div>
          </div>
        </div>
        <p>
Falls die Quellen der Originalautoren als
<code class="filename">gentoo-0.9.12.tar.gz</code> existieren, können Sie
<code class="literal">gentoo</code> als (Quell-)<span class="strong"><strong>Paketnamen</strong></span> und <code class="literal">0.9.12</code> als die
<span class="strong"><strong>Versionsnummer der Originalautoren</strong></span>
verwenden. Diese werden in der Datei <code class="filename">debian/changelog</code>
verwandt, die auch später in <a class="xref" href="dreq.de.html#changelog" title="4.3. changelog">Abschnitt 4.3, „<code class="filename">changelog</code></a> beschrieben wird.
</p>
        <p>
Obwohl dieser einfache Ansatz meistens funktioniert, könnte es sein, dass
Sie den <span class="strong"><strong>Paketnamen</strong></span> und die <span class="strong"><strong>Versionsnummer der Originalautoren</strong></span> durch Umbenennen
der Originalquellen anpassen müssen, damit dies den Debian-Richtlinien und
bestehenden Konventionen genügt.
</p>
        <p>
Sie müssen den <span class="strong"><strong>Paketnamen</strong></span> so wählen, dass
er nur aus Kleinbuchstaben (<code class="literal">a-z</code>), Ziffern
(<code class="literal">0-9</code>), Plus- (<code class="literal">+</code>) und Minus-
(<code class="literal">-</code>) Zeichen und Punkten (<code class="literal">.</code>)
besteht. Er muss mindestens zwei Zeichen lang sein, mit einem
alphanumerischen Zeichen beginnen und darf mit keinem existierenden
übereinstimmen. Es empfiehlt sich, die Länge unter 31 Zeichen zu
halten. <a href="#ftn.idp46393732" class="footnote" id="idp46393732"><sup class="footnote">[14]</sup></a>
</p>
        <p>
Falls die Originalautoren einen generischen Ausdruck wie
<code class="literal">test-suite</code> für den Namen verwenden, ist es eine gute
Idee, es umzubenennen, um den Inhalt explizit zu identifizieren und den
Namensraum sauber zu halten. <a href="#ftn.idp46394964" class="footnote" id="idp46394964"><sup class="footnote">[15]</sup></a>
</p>
        <p>
Sie sollten die <span class="strong"><strong>Versionsnummer der
Originalautoren</strong></span> so wählen, dass sie nur aus alphanumerischen
Zeichen (<code class="literal">0-9A-Za-z</code>), Pluszeichen (<code class="literal">+</code>),
Tilden (<code class="literal">~</code>) und Satzpunkten (<code class="literal">.</code>)
besteht. Sie muss mit einer Ziffer (<code class="literal">0-9</code>)
beginnen. <a href="#ftn.idp46398228" class="footnote" id="idp46398228"><sup class="footnote">[16]</sup></a> Es ist eine gute Idee, die
Länge falls möglich innerhalb von 8 Zeichen zu halten. <a href="#ftn.idp46398740" class="footnote" id="idp46398740"><sup class="footnote">[17]</sup></a>
</p>
        <p>
Falls die Originalautoren kein normales Versionierungsschema wie
<code class="literal">2.30.32</code> sondern eine Art von Datum wie
<code class="literal">11Apr29</code>, einen zufälligen Kodenamen oder einen
VCS-Hashwert als Teil der Version verwenden, stellen Sie sicher, dass sie
das von der <span class="strong"><strong>Version der Originalautoren</strong></span>
entfernen. Diese Informationen können in der Datei
<code class="filename">debian/changelog</code> festgehalten werden. Falls Sie eine
Versionsnummer erfinden müssen, vewrenden Sie das Format
<code class="literal">YYYYMMDD</code>, wie <code class="literal">20110429</code>, als
Versionsnummer der Originalautoren. Das stellt sicher, dass
<span class="command"><strong>dpkg</strong></span> neuere Versionen korrekt als Upgrades
interpretiert. Falls Sie in der Zukunft reibungslose Übergänge zu dem
normalen Versionsschemata wie <code class="literal">0.1</code> sicherstellen müssen,
verwenden Sie das stattdessen das Format <code class="literal">0~YYMMDD</code>, wie
<code class="literal">0~110429</code>, als Versionsnummer der Originalautoren.
</p>
        <p>
Versionsnummern <a href="#ftn.idp46404340" class="footnote" id="idp46404340"><sup class="footnote">[18]</sup></a> können mit
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span> wie folgt verglichen werden:
</p>
        <pre class="screen">
$ dpkg --compare-versions <em class="replaceable"><code>Ver1</code></em> <em class="replaceable"><code>Op</code></em> <em class="replaceable"><code>Ver2</code></em>
</pre>
        <p>
Die Versionsvergleichsregeln können wie folgt zusammengefasst werden:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>Zeichenketten werden von Anfang bis Ende verglichen.</p>
            </li>
            <li class="listitem">
              <p>Buchstaben sind größer als Ziffern.</p>
            </li>
            <li class="listitem">
              <p>Zahlen werden als Ganzzahlen verglichen.</p>
            </li>
            <li class="listitem">
              <p>Buchstaben werden in ASCII-Sortierreihenfolge verglichen.</p>
            </li>
            <li class="listitem">
              <p>Es gibt besondere Regeln für Punkt (<code class="literal">.</code>), Plus-
(<code class="literal">+</code>) und Tilde- (<code class="literal">~</code>) Zeichen, wie folgt:</p>
              <p>
<code class="literal">0.0</code> &lt; <code class="literal">0.5</code> &lt;
<code class="literal">0.10</code> &lt; <code class="literal">0.99</code> &lt;
<code class="literal">1</code> &lt; <code class="literal">1.0~rc1</code> &lt;
<code class="literal">1.0</code> &lt; <code class="literal">1.0+b1</code> &lt;
<code class="literal">1.0+nmu1</code> &lt; <code class="literal">1.1</code> &lt;
<code class="literal">2.0</code>
</p>
            </li>
          </ul>
        </div>
        <p>
Ein schwieriger Fall tritt auf, wenn die Originalautoren
<code class="filename">gentoo-0.9.12-ReleaseCandidate-99.tar.gz</code> als
Vorabveröffentlichung von <code class="filename">gentoo-0.9.12.tar.gz</code>
veröffentlichen. Sie müssen sicherstellen, dass das Upgrade korrekt
funktioniert, indem Sie die Quellen der Originalautoren in
<code class="filename">gentoo-0.9.12~rc99.tar.gz</code> umbenennen.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="dh-make"/>2.7. Einrichten von <span class="command"><strong>dh_make</strong></span></h2>
            </div>
          </div>
        </div>
        <p>
Richten Sie die Umgebungsvariablen <code class="literal">$DEBEMAIL</code> und
<code class="literal">$DEBFULLNAME</code> in der Shell ein, damit verschiedene
Debian-Wartungswerkzeuge Ihre E-Mail-Adresse und Ihren Namen für Pakete
verwenden können. <a href="#ftn.idp46416844" class="footnote" id="idp46416844"><sup class="footnote">[19]</sup></a>
</p>
        <pre class="screen">
$ cat &gt;&gt;~/.bashrc &lt;&lt;EOF
DEBEMAIL="Ihre.E-Mail.Adresse@example.org"
DEBFULLNAME="Vorname Nachname"
export DEBEMAIL DEBFULLNAME
EOF
$ . ~/.bashrc
</pre>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="non-native-dh-make"/>2.8. Das erste nicht native Debian-Paket</h2>
            </div>
          </div>
        </div>
        <p>
Normale Debian-Pakete sind nicht native Debian-Pakete, die aus Quellen von
Originalautoren erzeugt werden. Falls Sie ein nicht natives Debian-Paket von
den Quellen der Originalautoren <code class="filename">gentoo-0.9.12.tar.gz</code>
erstellen wollen, können sie ein erstes nicht natives Debian-Paket dafür
mittels des Befehl <span class="command"><strong>dh_make</strong></span> wie folgt erstellen:
</p>
        <pre class="screen">
$ cd ~/gentoo
$ wget http://example.org/gentoo-0.9.12.tar.gz
$ tar -xvzf gentoo-0.9.12.tar.gz
$ cd gentoo-0.9.12
$ dh_make -f ../gentoo-0.9.12.tar.gz
</pre>
        <p>
Natürlich ersetzen Sie den Dateinamen mit dem Namen Ihres ursprünglichen
Quellcode-Archivs. <a href="#ftn.idp46420420" class="footnote" id="idp46420420"><sup class="footnote">[20]</sup></a> Siehe
<span class="citerefentry"><span class="refentrytitle">dh_make</span>(8)</span> für Details.
</p>
        <p>
Sie sollten irgendeine Ausgabe sehen, die Sie fragt, welche Art Paket Sie
erstellen wollen. Gentoo ist ein »single binary package« - es wird nur ein
Binärpaket, d.h. eine <code class="filename">.deb</code>-Datei erstellt, also wählen
Sie die erste Option (mit der »<code class="literal">s</code>«-Taste), überprüfen
nochmal die Informationen auf dem Bildschirm und bestätigen mit
»<code class="literal"><em class="replaceable"><code>EINGABE</code></em></code>«. <a href="#ftn.idp46069564" class="footnote" id="idp46069564"><sup class="footnote">[21]</sup></a>
</p>
        <p>
Dieser Aufruf von <span class="command"><strong>dh_make</strong></span> erstellt eine Kopie des
ursprünglichen Tarballs als <code class="filename">gentoo_0.9.12.orig.tar.gz</code>
im übergeordneten Verzeichnis, um später die Erstellung eines nicht nativen
Debian-Quellpakets mit dem Namen <code class="filename">debian.tar.gz</code> zu
ermöglichen.
</p>
        <pre class="screen">
$ cd ~/gentoo ; ls -F
gentoo-0.9.12/
gentoo-0.9.12.tar.gz
gentoo_0.9.12.orig.tar.gz
</pre>
        <p>
Bitte beachten Sie zwei entscheidende Merkmale in dem Dateinamen
<code class="filename">gentoo_0.9.12.orig.tar.gz</code>:
</p>
        <div class="itemizedlist">
          <ul class="itemizedlist">
            <li class="listitem">
              <p>
Paketname und Version sind durch das Zeichen »<code class="literal">_</code>«
(Unterstrich) getrennt.
</p>
            </li>
            <li class="listitem">
              <p>
Die Zeichenkette <code class="filename">.orig</code> wurde vor dem
<code class="filename">.tar.gz</code> eingefügt.
</p>
            </li>
          </ul>
        </div>
        <p>
Beachten Sie außerdem, dass viele Schablonendateien im Quellverzeichnis im
Unterverzeichnis <code class="filename">debian</code> erstellt werden. Diese werden
in <a class="xref" href="dreq.de.html" title="Kapitel 4. Benötigte Dateien im Verzeichnis debian">Kapitel 4, <em>Benötigte Dateien im Verzeichnis <code class="filename">debian</code></em></a> und <a class="xref" href="dother.de.html" title="Kapitel 5. Andere Dateien im Verzeichnis debian">Kapitel 5, <em>Andere Dateien im Verzeichnis <code class="filename">debian</code></em></a> erklärt. Weiterhin
sollte Ihnen klar sein, dass das Paketieren kein vollautomatischer Prozess
sein kann. Sie müssen die ursprünglichen Quellen für Debian verändern (siehe
<a class="xref" href="modify.de.html" title="Kapitel 3. Den Quellcode verändern">Kapitel 3, <em>Den Quellcode verändern</em></a>). Danach müssen Sie die geeigneten Methoden für den
Bau des Debian-Paketes verwenden (<a class="xref" href="build.de.html" title="Kapitel 6. Bau des Pakets">Kapitel 6, <em>Bau des Pakets</em></a>), sie testen
(<a class="xref" href="checkit.de.html" title="Kapitel 7. Überprüfen des Pakets auf Fehler">Kapitel 7, <em>Überprüfen des Pakets auf Fehler</em></a>) und hochladen (<a class="xref" href="upload.de.html" title="Kapitel 9. Das Paket hochladen">Kapitel 9, <em>Das Paket hochladen</em></a>). Alle
diese Schritte werden erläutert.
</p>
        <p>
Wenn Sie versehentlich einige der Schablonendateien gelöscht haben, während
Sie sie bearbeitet haben, können Sie diese wiederherstellen, indem Sie
erneut <span class="command"><strong>dh_make</strong></span> mit der Option
<code class="literal">--addmissing</code> in einem Debian-Quellverzeichnis aufrufen.
</p>
        <p>
Das Aktualisieren eines existierenden Pakets kann kompliziert werden, weil
es eventuell ältere Techniken verwendet. Während Sie die Grundlagen lernen,
bleiben Sie bei der Erstellung eines neuen Pakets; weitere Erklärungen
werden in <a class="xref" href="update.de.html" title="Kapitel 8. Aktualisieren des Pakets">Kapitel 8, <em>Aktualisieren des Pakets</em></a> gegeben.
</p>
        <p>
Bitte beachten Sie, dass die Quellen kein in <a class="xref" href="first.de.html#simplemake" title="2.4. Einfache Bausysteme">Abschnitt 2.4, „Einfache Bausysteme“</a>
und <a class="xref" href="first.de.html#portable" title="2.5. Beliebte portable Bausysteme">Abschnitt 2.5, „Beliebte portable Bausysteme“</a> beschriebenes Bausystem enthalten müssen. Es
könnte eine reine Sammlung von graphischen Daten usw. sein. Die Installation
der Dateien könnten rein mit <code class="systemitem">debhelper</code>-Konfigurationsdateien wie
<code class="filename">debian/install</code> (siehe <a class="xref" href="dother.de.html#install" title="5.11. install">Abschnitt 5.11, „<code class="filename">install</code></a>)
erfolgen.
</p>
      </div>
      <div class="section">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title"><a id="native-dh-make"/>2.9. Das erste native Debian-Paket</h2>
            </div>
          </div>
        </div>
        <p>
Falls ein Paket Quelldateien enthält, die Sie nur für Debian betreuen,
vielleicht sogar nur für lokale Benutzung, könnte es einfacher sein, es als
natives Debian-Paket zu erstellen. Falls Sie Quellen in
<code class="filename">~/MeinPaket-1.0</code> haben, können Sie dafür ein initiales
natives Debian-Paket erstellen, indem Sie den folgenden
<span class="command"><strong>dh_make</strong></span>-Befehl ausführen:
</p>
        <pre class="screen">
$ cd ~/MeinPaket-1.0
$ dh_make --native
</pre>
        <p>
Dann werden das Verzeichnis <code class="filename">debian</code> und seine Inhalte
genau wie bei <a class="xref" href="first.de.html#non-native-dh-make" title="2.8. Das erste nicht native Debian-Paket">Abschnitt 2.8, „Das erste nicht native Debian-Paket“</a> erstellt. Dies erstellt
keinen Tarball, da dies ein natives Debian-Paket ist. Das ist aber auch der
einzige Unterschied. Der Rest der Paketierungsaktivitäten ist praktisch
identisch.
</p>
      </div>
      <div class="footnotes">
        <br/>
        <hr/>
        <div id="ftn.idp46291788" class="footnote">
          <p><a href="#idp46291788" class="para"><sup class="para">[4] </sup></a>Für die Debian-Quellpakete im älteren <code class="literal">1.0</code>-Format wird
stattdessen
<code class="literal"><em class="replaceable"><code>Paket</code></em>_<em class="replaceable"><code>Version</code></em>-<em class="replaceable"><code>Revision</code></em>.diff.gz</code>
benutzt. </p>
        </div>
        <div id="ftn.idp46300396" class="footnote">
          <p><a href="#idp46300396" class="para"><sup class="para">[5] </sup></a> Lesen Sie <a class="ulink" href="http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source">5.6.1 "Source"</a>, <a class="ulink" href="http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Package">5.6.7 "Package"</a> und <a class="ulink" href="http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version">5.6.12 "Version"</a>. Die <span class="strong"><strong>Paketarchitektur</strong></span> folgt dem <a class="ulink" href="http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Architecture">Debian Policy Manual, Kapitel 5.6.8
»Architecture«</a> und wird während des Paketbauprozesses automatisch
zugewiesen.</p>
        </div>
        <div id="ftn.idp46312460" class="footnote">
          <p><a href="#idp46312460" class="para"><sup class="para">[6] </sup></a>Lesen Sie die <a class="ulink" href="http://www.debian.org/doc/manuals/developers-reference/pkgs.html#adopting">Debian-Entwicklerreferenz
5.9.5. »Adoption eines Pakets«</a>.</p>
        </div>
        <div id="ftn.idp46318908" class="footnote">
          <p><a href="#idp46318908" class="para"><sup class="para">[7] </sup></a> Trotzdem gibt es natürlich immer neue Programme, die es wert sind, für
Debian paketiert zu werden.  </p>
        </div>
        <div id="ftn.idp46350052" class="footnote">
          <p><a href="#idp46350052" class="para"><sup class="para">[8] </sup></a>Machen Sie sich keine Sorge um das fehlende
<code class="filename">Makefile</code>. Sie können den Befehl
<span class="command"><strong>hello</strong></span> einfach mittels <span class="command"><strong>debhelper</strong></span> wie in
<a class="xref" href="dother.de.html#install" title="5.11. install">Abschnitt 5.11, „<code class="filename">install</code></a> oder durch Veränderung der Quellen der
Originalautoren installieren, indem Sie ein neues
<code class="filename">Makefile</code> mit dem Ziel <code class="literal">install</code> wie in
<a class="xref" href="modify.de.html" title="Kapitel 3. Den Quellcode verändern">Kapitel 3, <em>Den Quellcode verändern</em></a> hinzufügen.</p>
        </div>
        <div id="ftn.idp46359188" class="footnote">
          <p><a href="#idp46359188" class="para"><sup class="para">[9] </sup></a> Sie können das Archivformat herausfinden, indem Sie den Befehl
<span class="command"><strong>file</strong></span> verwenden, wenn die Dateierweiterung nicht genug
ist.  </p>
        </div>
        <div id="ftn.idp46361332" class="footnote">
          <p><a href="#idp46361332" class="para"><sup class="para">[10] </sup></a> Das Programm ist bereits paketiert worden. Die <a class="ulink" href="http://packages.qa.debian.org/g/gentoo.html">aktuelle Version</a> verwendet die Autotools als
Baustruktur und unterscheidet sich signifikant von den folgenden Beispielen,
die auf Version 0.9.12 basieren.</p>
        </div>
        <div id="ftn.idp46369268" class="footnote">
          <p><a href="#idp46369268" class="para"><sup class="para">[11] </sup></a>
Viele moderne Programme kommen mit einem Skript
<code class="filename">configure</code>, das bei der Ausführung eine für Ihr System
angepasstes <code class="filename">Makefile</code> erstellt.</p>
        </div>
        <div id="ftn.idp46377716" class="footnote">
          <p><a href="#idp46377716" class="para"><sup class="para">[12] </sup></a>Autotools ist zu umfangreich, um in dieser Anleitung berücksichtigt zu
werden. Dieser Abschnitt dient nur der Bereitstellung von Schlüsselwörtern
und Referenzen. Falls Sie sie benötigen, stellen Sie sicher, dass Sie das
<a class="ulink" href="http://www.lrde.epita.fr/~adl/autotools.html">Autotools Tutorial</a> und die lokale
Kopie der <code class="filename">/usr/share/doc/autotools-dev/README.Debian.gz</code> lesen.</p>
        </div>
        <div id="ftn.idp46385916" class="footnote">
          <p><a href="#idp46385916" class="para"><sup class="para">[13] </sup></a>Sie können dies automatisieren, indem Sie das Paket <code class="systemitem">dh-autoreconf</code> installieren. Lesen Sie <a class="xref" href="dreq.de.html#customrules" title="4.4.3. Anpassungen der Datei rules">Abschnitt 4.4.3, „Anpassungen der Datei <code class="filename">rules</code></a>.</p>
        </div>
        <div id="ftn.idp46393732" class="footnote">
          <p><a href="#idp46393732" class="para"><sup class="para">[14] </sup></a>Die Standardpaketnamenfeldlänge von <span class="command"><strong>aptitude</strong></span> beträgt
30. Für mehr als 90% der Pakete ist die Länge des Namens weniger als 24
Zeichen.</p>
        </div>
        <div id="ftn.idp46394964" class="footnote">
          <p><a href="#idp46394964" class="para"><sup class="para">[15] </sup></a>Falls Sie <a class="ulink" href="http://www.debian.org/doc/developers-reference/pkgs.html#newpackage">Debian-Entwicklerreferenz
5.1. »Neue Pakete«</a> folgen, wird der ITP-Prozess normalerweise solche
Dinge abfangen.</p>
        </div>
        <div id="ftn.idp46398228" class="footnote">
          <p><a href="#idp46398228" class="para"><sup class="para">[16] </sup></a>Diese strengere Regel sollte Ihnen helfen, verwirrende Namen zu vermeiden.</p>
        </div>
        <div id="ftn.idp46398740" class="footnote">
          <p><a href="#idp46398740" class="para"><sup class="para">[17] </sup></a>Die Standardversionsfeldlänge von <span class="command"><strong>aptitude</strong></span> beträgt
10. Die Debian-Revision mit einleitendem Bindestrich verwendet
typischerweise 2 Zeichen. Für mehr als 80% der Pakete ist die Versionsnummer
der Originalautoren weniger als 8 Zeichen lang und die Debian-Revision
weniger als 2 Zeichen. Für mehr als 90% der Pakete ist die Versionsnummer
der Originalautoren weniger als 10 Zeichen lang und die Debian-Revision
weniger als 3 Zeichen.</p>
        </div>
        <div id="ftn.idp46404340" class="footnote">
          <p><a href="#idp46404340" class="para"><sup class="para">[18] </sup></a>Versionsnummern können die <span class="strong"><strong>Versionsnummer der
Originalautoren</strong></span>
(<code class="literal"><em class="replaceable"><code>Version</code></em></code>), die <span class="strong"><strong>Debian-Revision</strong></span>
(<code class="literal"><em class="replaceable"><code>Revision</code></em></code>) oder die <span class="strong"><strong>Version</strong></span>
(<code class="literal"><em class="replaceable"><code>Version</code></em>-<em class="replaceable"><code>Revision</code></em></code>)
sein. Lesen Sie <a class="xref" href="update.de.html#newrevision" title="8.1. Neue Debian-Revision">Abschnitt 8.1, „Neue Debian-Revision“</a>, um zu erfahren, wie die
<span class="strong"><strong>Debian-Revision</strong></span> erhöht wird.
</p>
        </div>
        <div id="ftn.idp46416844" class="footnote">
          <p><a href="#idp46416844" class="para"><sup class="para">[19] </sup></a> Der folgende Text setzt voraus, dass Sie Bash als Ihre Login-Shell
benutzen. Falls Sie eine andere Login-Shell wie beispielsweise die Z-Shell
verwenden, benutzen Sie die entsprechenden Konfigurationsdateien statt
<code class="filename">~/.bashrc</code>. </p>
        </div>
        <div id="ftn.idp46420420" class="footnote">
          <p><a href="#idp46420420" class="para"><sup class="para">[20] </sup></a> Wenn die originalen Quellen das Verzeichnis <code class="filename">debian</code> und
seinen Inhalt enthalten, rufen Sie den Befehl <span class="command"><strong>dh_make</strong></span> mit
der zusätzlichen Option <code class="literal">--addmissing</code> auf. Das neue
Quellformat <code class="literal">3.0 (quilt)</code> ist robust genug, selbst mit
solchen Paketen umzugehen. Sie müssen wahrscheinlich die vom Originalautor
bereitgestellten Inhalte für Ihr Debian-Paket aktualisieren.  </p>
        </div>
        <div id="ftn.idp46069564" class="footnote">
          <p><a href="#idp46069564" class="para"><sup class="para">[21] </sup></a> Es gibt hier mehrere Auswahlmöglichkeiten: »<code class="literal">s</code>« für
»Single binary package« (einzelnes Binärpaket), »<code class="literal">i</code>« für
»Arch-Independent package« (Architektur-unabhängiges Paket),
»<code class="literal">m</code>« für »Multiple binary packages« (mehrere Binärpakete),
»<code class="literal">l</code>« für »Library package« (Bibliothekspaket),
»<code class="literal">k</code>« für »Kernel module package« (Kernelmodulpaket),
»<code class="literal">n</code>« für »Kernel patch package« (Kernelpatch-Paket) und
»<code class="literal">b</code>« für »<code class="systemitem">cdbs</code>«-Pakete. Dieses Dokument konzentriert sich
auf den Befehl <span class="command"><strong>dh</strong></span> (aus dem Paket <code class="systemitem">debhelper</code>), um ein einzelnes Binärpaket zu
erstellen, aber zeigt auch auf, wie es für architekturunabhängige Pakete
oder mehrere Binärpakete verwandt werden kann. Das Paket <code class="systemitem">cdbs</code> bietet eine alternative
Paketierungs-Skriptinfrastruktur zum Befehl <span class="command"><strong>dh</strong></span> und wird
in diesem Dokument nicht behandelt.  </p>
        </div>
      </div>
    </div>
    <div class="navfooter">
      <hr/>
      <table width="100%" summary="Navigation footer">
        <tr>
          <td align="left"><a accesskey="p" href="start.de.html"><img src="images/prev.gif" alt="Zurück"/></a> </td>
          <td align="center"> </td>
          <td align="right"> <a accesskey="n" href="modify.de.html"><img src="images/next.gif" alt="Weiter"/></a></td>
        </tr>
        <tr>
          <td align="left" valign="top">Kapitel 1. Einstieg, aber richtig! </td>
          <td align="center">
            <a accesskey="h" href="index.de.html">
              <img src="images/home.gif" alt="Zum Anfang"/>
            </a>
          </td>
          <td align="right" valign="top"> Kapitel 3. Den Quellcode verändern</td>
        </tr>
      </table>
    </div>
  </body>
</html>