Archiv/Paketbau/Skripte verpacken

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

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:

  1. Grundlagen der Paketerstellung

Inhaltsverzeichnis
  1. Projekt-Struktur
    1. Dateien
  2. Paketbau
    1. Unsigniertes Paket
    2. PPA-Variante
  3. Links

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 ⮷ heruntergeladen werden.

Dateien

Wiki/Icons/develop.png

Bedeutung der einzelnen Dateien
Nr.DateiFunktion
1. bin/halloweltDas Programm selbst, hier ein Shell-Skript
2. debian/changelogListe der Änderungen am Debian-Paket (neue Einträge zu oberst)
3. debian/controlAPT-Paketinformationen
4. debian/copyrightCopyright- und Lizenz-Informationen
5. debian/rulesSkript zur Paketerstellung (wird von debuild aufgerufen)
6. share/applications/hallowelt.desktopMenü-Eintrag
7. share/hallowelt/pofiles/*/hallowelt.poÜbersetzungsdatei (Quelldatei)
8. share/locale/*/hallowelt.moÜbersetzungsdatei (Binärdatei)
9. share/man/de/man1/hallowelt.1.gzDeutsche Manpage
10.share/man/man1/hallowelt.1.gzEnglische Manpage
11.share/pixmaps/hallowelt.pngProgramm-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