/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 > hello <<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-----+-> autoreconf -+-> configure
Makefile.am -----+ | +-> Makefile.in
src/Makefile.am -+ | +-> src/Makefile.in
| +-> 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
&& 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 -----+ +-> Makefile -----+-> make -> <em class="replaceable"><code>binary</code></em>
src/Makefile.in -+-> ./configure -+-> src/Makefile -+
config.h.in -----+ +-> 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> < <code class="literal">0.5</code> <
<code class="literal">0.10</code> < <code class="literal">0.99</code> <
<code class="literal">1</code> < <code class="literal">1.0~rc1</code> <
<code class="literal">1.0</code> < <code class="literal">1.0+b1</code> <
<code class="literal">1.0+nmu1</code> < <code class="literal">1.1</code> <
<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 >>~/.bashrc <<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>
|