ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Skripte verpacken

Ausbaufähige Anleitung

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

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/package.pngDieser 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 Archiv {dl} heruntergeladen werden.

Dateien

Wiki/Icons/develop.png

Bedeutung der einzelnen Dateien
Nr.DateiFunktion
1. bin/hallowelt {dl} Das Programm selbst, hier ein Shell-Skript
2. debian/changelog {dl} Liste der Änderungen am Debian-Paket (neue Einträge zu oberst)
3. debian/control {dl} APT-Paketinformationen
4. debian/copyright {dl} Copyright- und Lizenz-Informationen
5. debian/rules {dl} Skript zur Paketerstellung (wird von debuild aufgerufen)
6. share/applications/hallowelt.desktop {dl} Menü-Eintrag
7. share/hallowelt/pofiles/*/hallowelt.po {dl} Übersetzungsdatei (Quelldatei)
8. share/locale/*/hallowelt.mo {dl} Übersetzungsdatei (Binärdatei)
9. share/man/de/man1/hallowelt.1.gz {dl} Deutsche Manpage
10.share/man/man1/hallowelt.1.gz {dl} Englische Manpage
11.share/pixmaps/hallowelt.png {dl} Programm-Icon (z.B. für den Menüeintrag)

Paketbau

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 

Unsigniertes Paket

Möchte man ein nicht signiertes Paket erstellen, muss debuild mit den entsprechenden Parametern aufgerufen werden.

debuild -uc -us 

PPA-Variante

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 

ubuntuusers.local › WikiPaketbauSkripte verpacken