09. Juni 2008 · 27 Kommentare · Kategorien: Open-Source · Tags:

Diese Anleitung zur Erstellung von Deb-Paketen bezieht sich auf bereits kompilierte Programme, bzw. Programme die nicht kompiliert werden müssen (z.B. Python- oder Bash-Skripte). In dieser Anleitung wird nicht über die Erstellung von Deb-Paketen aus dem Quelltext gesprochen. Lasst euch nicht von der Länge der Anleitung abschrecken. Das dahintersteckende Prinzip ist ganz einfach, hat man es ersteinmal verstanden. Ich versuche hier lediglich jeden Schritt so genau und eindeutig wie möglich zu erklären.

Anzeige

—–

1. Als allererstes erstellen wir einen Ordner, zum Beispiel auf dem Desktop, mit dem Namen des Programmes, in unserem Beispiel nenn wir ihn namedesordners. In diesem Ordner erstellen wir noch zwei Ordner, einen benennen wir usr, den andere DEBIAN. Bitte immer auf Groß- und Kleinschreibung achten! In letzteren kommt die control-Datei, eine einfache Textdatei, welche Paketinformationen enthält. Hier steht z.B. der Name des Paketes, die Versionsnummer, die Kategorie, usw. Hier eine Beispieldatei:

Package: namedesprogrammes
Version: 0.7
Section: admin
Priority: optional
Architecture: all
Essential: no
Depends:
Installed-Size: 400
Maintainer: Name des Paketerstellers <name@adresse.com>
Description: Dies ist die Beschreibung des Paketes

—–

2. Nun öffnen wir den zweiten Ordner, usr. Dieser Ordner entspricht später, wenn wir das erstelle Deb-Paket installieren, dem Verzeichnis /usr im System. Nun müssen wir die Dateien und Ordner an dem Ort plazieren, wo sie sich später auch im System befinden sollen. Benötige Ordner müssen wir natürlich erstellen.

/usr/share/namedesprogrammes/

In diesem Ordner befindet sich das Programm. Die Datei welche ausgeführt werden muss wurde natürlich vorher ausführbar gemacht. In unserem Beispiel besteht das Programm nur aus einer Datei namens programm.sh.

—–

3. Im usr-Ordner erstellen wir nun einen neuen Ordner namens bin. In diesen Ordner legen wir die Datei namedesprogrammes und machen sie ausführbar (!). Über diese Datei wird durch den Befehl namedesprogrammes später das Programm gestartet. Der Inhalt der Datei sieht wie folgt aus.

#!/bin/bash

cd /usr/share/namedesprogrammes
./programm.sh

Wie wir sehen, macht diese Datei nichts anderes, als in das Verzeichnis zu wechseln, wo sich das Programm befindet und führt anschließend das Programm aus. Theoretisch könnten wir nun das Paket eigentlich bauen, denn die Grundfunktionalität ist bereits enthalten. Würden wir das Paket installieren und anschließend die Konsole oder den Ausführen-Dialog öffnen und den Befehl namedesprogrammes eingeben, würde das Programm korrekt starten.

—–

4. Wir sind allerdings noch nicht zufrieden und wollen, dass uns das Programm im Anwendungen-Menü angezeigt wird. Nun, dazu benötigen wir noch eine weitere Datei. Diese muss sich in /usr/share/applications befinden. Wir erstellen die Datei namedesprogrammes.desktop und geben ihr folgenden Inhalt.

[Desktop Entry]
Encoding=UTF-8
Name=namedesprogrammes
Comment=Dies ist ein Kommentar welcher beim Ueberfahren mit der Maus angezeigt wird
Exec=namedesprogrammes
Terminal=false
Type=Application
Categories=GNOME;GTK;System;

—–

5. Es ist weiterhin möglich, dem Programm ein Symbol zuzuweisen. Dazu legen wir den Ordner usr/share/pixmaps an und erstellen dort eine Symboldatei, zum Beispiel namedesprogrammes.png. In der namedesprogrammes.desktop-Datei muss folgende Zeile hinzugefügt werden.

Icon=namedesprogrammes.png

—–

6. Nun kommt der Moment, an dem das Paket erstellt werden muss. Dazu werden keine Ketten von Befehlen benötigt, sondern nur ein einziger. Falls sich der ganz am Anfang erstellte Ordner auf dem Desktop befindet, wechseln wir in der Konsole zum Desktop.

cd /home/benutzername/Desktop

Dann führen wir folgenden Befehl aus um das Deb-Paket zu erstellen.

dpkg -b namedesordners namedesprogrammes-0.7-all.deb

Das all vor dem .deb beschreibt, dass das Programm auf allen Architekturen funktioniert. Wir könnten statt all auch i386 oder amd64 hinschreiben. Das fertige Paket befindet sich nun auf dem Desktop. Ansonsten gibt dpkg eine Fehlermeldung aus und beschreibt, wieso das Paket nicht erstellt werden konnte.

Achtung! Es sollte darauf geachtet werden, vor der endgültigen Erstellung des Paketes mit dpkg -b die unsichtbaren Sicherungsdateien zu löschen, also alle Dateien mit ~ am Ende. Diese werden ansonsten mit in das Paket verpackt und verbrauchen unnötig Speicherplatz.

—–

Ich hoffe, dass ich mit dieser Anleitung einigen helfen kann. Viel Spaß beim Deb-Bauen! Falls es Verbesserungsvorschläge gibt, dann schreibt sie hier als Kommentare rein.

Anzeige


27 Kommentare

  1. Yeah, eine coole Anleitung 😀
    Ich bin jetzt im Deb-Paket-Bau-Wahn ^^

    Verbesserungsvorschlag:
    die Datei in „/usr/bin“ muss noch mit
    „chmod a+rx“ für andere „berechtigt werden“
    Weis nicht ob du das mit „ausführbar machen“ gemeint hast 😉

    Sonst echt Super 🙂

    Gruss
    Immanuel

  2. Moin,
    großartige Anleitung, Danke echt jetzt 🙂

    Es wäre super wenn du noch eine Anleitung erstellen könntest wie man ein Repository anlegt =)

  3. Ja, genau.
    Das wäre auf jedenfall cool 😉

  4. Oder noch lieber würde ich wissen, wie man Debian Pakete erstellt aus Programmen im Quelltext, also welche die noch kompiliert werden müssen.

  5. @ N3X0NIC

    Um Deb aus dem Quelltext zu erstellen nutze ich immer checkinstall. Ist in den Packetquellen zu finden.

    1. ./configure
    make
    sudo make install

    2. sudo checkinstall

    Dann einfach die fragen von checkinstall abarbeiten und Fertig!

    LG

  6. Hallo Eddi2k!

    Richtigerweise funktioniert checkinstall (das Programm muss vorher natürlich installiert werden über den Paketmanager) so:

    ./configure
    make
    sudo checkinstall (kein sudo make install)

    Allerdings eignet sich checkinstall nur dazu, Pakete für den eigenen Gebrauch zu erstellen, da die kompilierten Pakete hardwareabhängig sind und auf anderen PCs oft nicht funktionieren.

  7. Habe erstellen verstanden aber was fürn Programm ist
    das, beziehungsweise kann ich damit Windows umbauen?

  8. Ich versteh zwar kein Wort. Aber mit Windows haben .debs nun wirklich nichts zu tun

  9. Cool, sowas hab ich gesucht.

  10. Pingback: Gnubuntux - GNU, Linux und Ubuntu

  11. Pingback: Paket für Songbird « Gnubuntux - GNU, Linux und Ubuntu

  12. Herzlichen Dank, dein kleines Tutorial hat mir endlich verständlich gemacht wie man sich schnell und einfach ein DEB-Paket bastelt.

    Für die, die DEBs aus dem Quellcode erstellen wollen: einfach ein eigenes verzeichnis erstellen und dieses dem configure-script per –prefix-dir übergeben (Bsp.: ./configure –prefix-dir=/home/user/programmname).Anschließend einfach „make && make install“ ausführen und fertig 🙂

  13. Danke!!!

    Damit habe ich endlich mal mein einziges zusätzliches Java-Programm anständig verpackt. Habe unter Punkt 6 nur vor den Befehl noch „fakeroot“ geschrieben.

  14. Wie ausführbar machen? Bei mir funktioniert das nicht.

  15. jetzt funktioniert’s schon

  16. Kann man debian pakete auch mit windows 7 erstellen?????

  17. Vielen Dank für diese gute Hilfestellung! Habs gleich mal gebookmarked.

    Bist du dir sicher, dass die erstellten Packete auch auf Debian funktionieren? Dann würde ich mein eben erstelltes Packet für Ubuntu und Debian freigeben.

    Viele Grüße
    Gerhard

  18. Bei mir schreibt er wenn ich das Paket installieren möchte kann Dateiskriptorflapgs nicht lesen!

    Was soll ich machen?
    Ich hab anstelle eines Bash – Skriptes ein Python Skript verwendet

    Gruß Stefan

  19. Bei mir findet er die control datei nicht!

  20. Wie ist der Dateiname der Datei?

  21. control und der Ordner heißt Debian

  22. Inhalt:
    Package: hallo.sh
    Version: 0.0.1-0
    Section: admin
    Priority: optional
    Architecture: all
    Essential: no
    Depends:
    Installed-Size: 400
    Maintainer: ingo
    Description: ein kleines Programm

  23. control ohne Endung? Also nicht etwa .txt oder. Hast du mal DEBIAN großgeschrieben?

  24. Fehler gefunden und behoben Ordner DEBIAN muss alles groß geschrieben werden.

  25. Wollt mich mal für die gute Anleitung bedanken, baue schon seit einiger Zeit ein paar Pakete danach. 🙂

    Das einzige was ich noch nicht herausgefunden habe ist ob man auf diesem Weg die Pakete auch signieren kann.
    Ist ja wichtig wenn man diese für andere Personen bereitstellen möchte.

    Zudem habe ich eine nette „man“ entdeckt für die Control-Datei :
    ‚man deb-control‘
    Nach installieren des Paketes „manpages-de“ (unter Ubuntu, ich weis nicht ob es das Paket auch bei Debian gibt) sind viele Manpages sogar eingedeutscht.

    Und für Pakete aus Quellen erstellen kann ich „dh-make“ und „pbuilder“ empfehlen womit „saubere und korrekte“ Pakete erstellt werden können.

  26. Danke für die Beschreibung! hat mir sehr geholfen

  27. Pingback: Paket für Songbird | picomol.de

  28. Tausend Dank für diese perfekte Erklärung. Jetzt hat es auch der Letzte doofe (ich) verstanden. :-)(-:

  29. Super Anleitung! Danke!
    Eventuell könnte man auch eine Anleitung „für Fortgeschrittene“ machen, aber diese reicht bestimmt den Meisten für den Anfang vollkommen aus. 😉

  30. der jüngste Programmierer

    Jetzt hat es auch der jüngste Programmierer verstanden.

  31. Pingback: Deb-Paket erstellen: Wie werden dynamisch gelinkte Bibliotheken richtig eingebunden? - Linux: Linux-Forum

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.