Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung: Veralteter compat-Modus, viele Lintian-Fehler
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
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.
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 Archiv heruntergeladen werden.
Bedeutung der einzelnen Dateien | ||
Nr. | Datei | Funktion |
1. | bin/hallowelt | Das Programm selbst, hier ein Shell-Skript |
2. | debian/changelog | Liste der Änderungen am Debian-Paket (neue Einträge zu oberst) |
3. | debian/control | APT-Paketinformationen |
4. | debian/copyright | Copyright- und Lizenz-Informationen |
5. | debian/rules | Skript zur Paketerstellung (wird von debuild aufgerufen) |
6. | share/applications/hallowelt.desktop | Menü-Eintrag |
7. | share/hallowelt/pofiles/*/hallowelt.po | Übersetzungsdatei (Quelldatei) |
8. | share/locale/*/hallowelt.mo | Übersetzungsdatei (Binärdatei) |
9. | share/man/de/man1/hallowelt.1.gz | Deutsche Manpage |
10. | share/man/man1/hallowelt.1.gz | Englische Manpage |
11. | share/pixmaps/hallowelt.png | Programm-Icon (z.B. für den Menüeintrag) |
Ist das Projekt soweit vollständig angelegt und Version 0.0.1 bereit zur Paketierung, wird zuerst ein Quell-Archiv angelegt.
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).
debuild #Paket bauen sudo dpkg -i ../hallowelt_0.0.1_all.deb #Paket installieren
Möchte man ein nicht signiertes Paket erstellen, muss debuild mit den entsprechenden Parametern aufgerufen werden.
debuild -uc -us
Für den Bau über 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:
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
Skripte/Bash Lokalisierung - Anleitung zum Erstellen lokalisierter bzw. übersetzbarer Bash-Skripte
Diese Revision wurde am 21. Januar 2012 01:03 von Lasall erstellt.