[[Vorlage(Archiviert, )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Grundlagen_der_Paketerstellung:] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/package.png, 64, left)]]Dieser Artikel ist ein zusätzliches Beispiel zu den Artikeln [:Grundlagen_der_Paketerstellung:] und [:Paketbau:]. Die Grundlagen des Paketbaus und dazu nötige Techniken, wie das Bearbeiten von Dateien und Packen von Archiven wird zum Verständnis dieses Beispiels als bekannt vorausgesetzt [1]. Das im Folgenden dargestellte Beispiel-Projekt zeigt, wie man aus einem kleinen Shell- oder Perl-Skript ein Paket bauen kann. Das Beispiel-Skript ist übersetzbar und verfügt über Manpages und einen Menüeintrag, um die Sache etwas interessanter zu gestalten. Die Vorgehensweise und die Debian-Paketierungs-Dateien lassen sich auch auf andere Projekte übertragen, bei denen kein Kompiliervorgang erfolgen muss. In diesem Beispiel wird nicht erklärt, wie die Debian-Paketierungs-Dateien erstellt werden, dazu ist der allgemeine Artikel bzw. weiterführende Literatur zu lesen. Es wird ein vollständiges Quellarchiv vorgestellt, in dem nur noch Maintainer, E-Mail-Adresse und weitere Projekt-bezogene Daten ersetzt werden müssen, um es in ein Debian-Quell- oder Binär-Paket zu verwandeln. = Projekt-Struktur = Folgende Baumansicht zeigt das Projekt '''hallowelt''', mit der ersten Version '''hallowelt-0.0.1''' und mit allen enthaltenen Unterverzeichnissen und Dateien. Die Dateien sind durchnummeriert und werden im Folgenden einzeln erläutert. {{{hallowelt `-- hallowelt-0.0.1 |-- bin | `-- hallowelt (1.) |-- debian | |-- changelog (2.) | |-- control (3.) | |-- copyright (4.) | `-- rules (5.) `-- share |-- applications | `-- hallowelt.desktop (6.) |-- hallowelt | `-- pofiles | `-- de | `-- LC_MESSAGES | `-- hallowelt.po (7.) |-- locale | `-- de | `-- LC_MESSAGES | `-- hallowelt.mo (8.) |-- man | |-- de | | `-- man1 | | `-- hallowelt.1.gz (9.) | `-- man1 | `-- hallowelt.1.gz (10.) `-- pixmaps `-- hallowelt.png (11.) }}} Das ganze Projekt kann als [attachment:Paketbau/Skripte verpacken/hallowelt.tar.bz2:Archiv] {dl} heruntergeladen werden. == Dateien == [[Bild(Wiki/Icons/develop.png, 48, right)]] ||<-3 tablestyle="width: 95%;" rowclass="titel">Bedeutung der einzelnen Dateien|| ||Nr.||Datei||Funktion|| ||'''1.''' ||'''[attachment:Paketbau/Skripte verpacken/hallowelt:bin/hallowelt]''' {dl} ||Das Programm selbst, hier ein Shell-Skript|| ||'''2.''' ||'''[attachment:Paketbau/Skripte verpacken/changelog:debian/changelog]''' {dl} ||Liste der Änderungen am Debian-Paket (neue Einträge zu oberst)|| ||'''3.''' ||'''[attachment:Paketbau/Skripte verpacken/control:debian/control]''' {dl} ||APT-Paketinformationen|| ||'''4.''' ||'''[attachment:Paketbau/Skripte verpacken/copyright:debian/copyright]''' {dl} ||Copyright- und Lizenz-Informationen|| ||'''5.''' ||'''[attachment:Paketbau/Skripte verpacken/rules:debian/rules]''' {dl} ||Skript zur Paketerstellung (wird von '''debuild''' aufgerufen)|| ||'''6.''' ||'''[attachment:Paketbau/Skripte verpacken/hallowelt.desktop:share/applications/hallowelt.desktop]''' {dl} ||Menü-Eintrag|| ||'''7.''' ||'''[attachment:Paketbau/Skripte verpacken/hallowelt.po:share/hallowelt/pofiles/*/hallowelt.po]''' {dl} ||Übersetzungsdatei (Quelldatei)|| ||'''8.''' ||'''[attachment:Paketbau/Skripte verpacken/hallowelt.mo:share/locale/*/hallowelt.mo]''' {dl} ||Übersetzungsdatei (Binärdatei)|| ||'''9.''' ||'''[attachment:Paketbau/Skripte verpacken/hallowelt.1.de.gz:share/man/de/man1/hallowelt.1.gz]''' {dl} ||Deutsche Manpage|| ||'''10.'''||'''[attachment:Paketbau/Skripte verpacken/hallowelt.1.en.gz:share/man/man1/hallowelt.1.gz]''' {dl} ||Englische Manpage|| ||'''11.'''||'''[attachment:Paketbau/Skripte verpacken/hallowelt.png:share/pixmaps/hallowelt.png]''' {dl} ||Programm-Icon (z.B. für den Menüeintrag)|| [[Anker(Paketbau)]] = Paketbau = Ist das Projekt soweit vollständig angelegt und Version 0.0.1 bereit zur Paketierung, wird zuerst ein Quell-Archiv angelegt. {{{#!vorlage Befehl cd ~/hallowelt/hallowelt-0.0.1 #Ins Verzeichnis wechseln tar -czf ../hallowelt-0.0.1.tar.gz bin/ share/ #Quell-Archiv anlegen }}} Nun kann das Paket gebaut werden. Natürlich muss zuvor die E-Mail-Adresse des Maintainers in der '''debian/changelog''' angepasst werden (oder man kann nur ein unsigniertes Paket erstellen). {{{#!vorlage Befehl debuild #Paket bauen sudo dpkg -i ../hallowelt_0.0.1_all.deb #Paket installieren }}} == Unsigniertes Paket == Möchte man ein nicht signiertes Paket erstellen, muss '''debuild''' mit den entsprechenden Parametern aufgerufen werden. {{{#!vorlage Befehl debuild -uc -us }}} == PPA-Variante == Für den Bau über [:Launchpad/PPA:PPA] benötigt man nur das Source-Paket. Man gibt in der '''debian/changelog''' die entsprechende PPA-Versionsnummer (hier ``~ppa1``) an und baut das Paket wie folgt: {{{#!vorlage Befehl cd ~/hallowelt/hallowelt-0.0.1~ppa1 #Ins Verzeichnis wechseln tar -cf ../hallowelt-0.0.1~ppa1.tar.gz bin/ share/ #Quell-Archiv anlegen debuild -S -sa #Quell-Paket bauen dput my-ppa ../hallowelt_0.0.1_source.changes #Paket ins PPA laden }}} = Links = * [:Grundlagen_der_Paketerstellung:Grundlagen der Paketerstellung] * [:Paketbau:] * [:Shell/man/Manpage_erstellen:Manpage erstellen] * [:Skripte/Bash_Lokalisierung:Skripte/Bash Lokalisierung] - Anleitung zum Erstellen lokalisierter bzw. übersetzbarer Bash-Skripte # tag: Programmierung, Paketverwaltung, Paketbau