Linux Bibel online

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.

Change language by Google translator: ...

In diesem Artikel wollen wir uns näher ansehen wie man eigene Software, Scripte und dergleichen in ein Paket für auf Debian basierende Systeme zu denen natürlich auch Ubuntu, Kubuntu, Linux Mint und so weiter gehören steckt um diese über die Paket-Verwaltung zu installieren was eine einfache Installation, Aktualisierung und natürlich auch das einfache Löschen ermöglicht.

Um dahinter zu kommen wie Debian-Pakete, RPM-Pakete oder welche auch immer erstellt sollte man verstehen was diese eigentlich genau sind und was sie beinhalten. Ich erinnere mich noch immer gerne an alte Zeiten, so vor 15 Jahren wurde von professionellen Windows-Nutzern gerne bemängelt das es unter Linux keine ausführbaren Dateien gäbe - gemeint sind damit die so genannten EXE-Dateien mit denen man Software unter Microsoft Windows ganz einfach installiert oder ausführt. Wenn man nun versteht das eine EXE-Datei nichts anderes ist als ein komprimiertes Archiv das alle Dateien beinhaltet die zur Installation der jeweiligen Software nötig sind - die eigentliche Software, Anweisungen wo welche Datei eigentlich hin gehört, Einstellungen für die Registry und Anweisungen für die Deinstallation (die meist extrem mangelhaft sind - dadurch wird Windows auch immer langsamer) versteht man auch gleich das diese EXE-Dateien gar nichts besonderes sind, auch solche EXE-Dateien die die darin enthaltene Software einfach nur ausführen ohne sie zu installieren sind das selbe.

Auch Linux-Software-Pakete wie eben die DEB-Pakete von Debian, RPM-Pakete von Fedora, Open SuSE, ... oder Tar.gz-Pakete von Slackware, Manjaro, ... sind nichts anderes als solche EXE-Dateien - sie beinhalten nur das gewisse Plus mehr. Sie beinhalten die nötigen Dateien für die jeweilige Software damit diese funktioniert, Anweisungen wo welche Datei hin gehört und vor allem detaillierte Informationen wie man jegliche Dateien auch wieder aus dem System entfernt. Ganz speziell finden sich darin noch Informationen welche Software die Anwendung noch benötigt um zu funktionieren, denken Sie etwa daran was unter Windows passiert wenn Sie eine Java-Software installieren und Sie haben Java nicht installiert, Sie werden dazu aufgefordert Java zu installieren - es ist doch schwachsinnig das ein System es zulässt eine Software zu installieren die gar nicht funktionieren kann weil etwas fehlt. Und genau hier kommen die Infos aus den Linux-Paket-Dateien zum tragen - die Paket-Verwaltung sieht sich die Informationen an welche Bibliotheken die Software tatsächlich benötigt und installiert diese automatisch.

Ja, und auch die wirklich ausführbaren Dateien die eine Software direkt starten ohne das eine Installation nötig ist gibt es unter Linux natürlich - sie nennen sich AppImage-Dateien (mehr dazu auf der Linux Bibel unter Flatpack, Snap und AppImage).

Hier der kleine Beweis das auch eine EXE-Datei nur ein komprimiertes Archiv ist, die Windows-Installations-EXE für IrfanView mit File-Roller (Archivmanager) geöffnet:

Windows-EXE unter Linux mit File-Roller geöffnet

Windows-EXE unter Linux mit File-Roller geöffnet

Wie baut man ein Debian-Paket?

Um eine Software oder ein Script, ein Bild oder was auch immer in ein Debian-Paket (dies gilt natürlich auch für auf Ubuntu basierende Systeme) zu packen um dieses ganz einfach über die Paket-Verwaltung zu installieren gibt es mehrere Wege, man stellt sich dieses manuell zusammen und fügt einfach die passenden Dateien hinzu - wenig Aufwand und schnell, dazu müssen alle nötigen Dateien fertig - also ausführbar vorhanden sein. Einen weiteren Weg bietet Checkinstall - dies ist eine kleine Software die während des Kompilierens direkt aus dem Quellcode ein Debian-Paket erstellt. Will man jedoch etwas weiter gehen als nur für sich selbst ein Paket zu schnüren - also etwa öffentlich ein Paket für Debian anbieten das man auch offiziell weiter geben will sollte man den Debian-Weg gehen der zwar etwas mehr Arbeit erfordert und sich an die offiziellen Regeln von Debian halten. Alle Arten der Erstellung werden wir in diesem Beitrag näher ansehen.

Gleich einmal - alle Wege führen nach Rom - an gewisse Dinge sollten Sie sich jedoch halten wenn Sie Software oder was auch immer in die Öffentlichkeit bringen wollen, dazu gilt es diverse Informationen einzufügen wie etwa von wem die Software stammt und vor allem die Lizenz, will man vertrauenswürdig sein sollte man das Paket noch signieren - alles werden wir hier besprechen.

Benötigte Software

Zur Erstellung von Paketen für Debian benötigt man erst einmal ein wenig Software die Sie sich ganz einfach über die Paket-Verwaltung installieren - dies sind grundsätzlich einmal folgende Pakete "packaging-dev build-essential debhelper dh-make quilt fakeroot lintian".

Einfach und manuell

Dieser Fall ist dann geeignet wenn man jemanden ein fertiges Script zur Verfügung stellen möchte, oder man hat eine fertig kompilierte Software. Damit der Empfänger - also demjenigen dem man die Software zur Verfügung stellen will die nötigen Dateien nicht händisch an die richtigen Stellen kopieren muss legt man alle Dateien in den richtigen Ort im Paket - der Nutzer muss das Paket nur noch installieren.

Im Beispiel habe ich einfach ein kleines Script erstellt das sich "helloworld.sh" nennt, dieses möchte ich im System-Verzeichnis "/bin" installieren. Als erstes lege ich mir dazu ein Verzeichnis zum Arbeiten an das ich beispielsweise ganz einfach "Pakete-erstellen" nenne, alles weitere findet nun in diesem Verzeichnis statt. Darin erstelle ich nun ein Verzeichnis mit dem Namen den das Debian-Paket später auch tragen soll - in meinem Fall nenne ich es ganz einfach "helloworld" - alles was in diesem Verzeichnis später landen wird ist auch im Debian-Paket vorhanden. Wir legen nun die nötigen Verzeichnisse an - dazu gehört als erstes einmal das Verzeichnis in dem die Datei "helloworld.sh" landen soll, in meinem Fall ist dies also "/bin", weiter ist nun absolut wichtig das Verzeichnis "DEBIAN" - die ganze Geschichte würde nun so aussehen:

Einfaches Debian-Paket erstellen

Einfaches Debian-Paket erstellen - Ordner-Struktur

Oder ganz einfach:

bin DEBIAN

Sollte die Datei beispielsweise unter "/usr/bin" landen geht man mit der Ordner-Struktur ganz einfach weiter:

Einfaches Debian-Paket erstellen - Ordner-Struktur

Einfaches Debian-Paket erstellen - Ordner-Struktur

Gibt es mehrere Dateien in unterschiedlichen Verzeichnissen zu verteilen - etwa zusätzlich ein Icon legt man sich die weiteren Verzeichnisse an - für Icons wäre ein passendes Verzeichnis etwa "/usr/share/icons":

Einfaches Debian-Paket erstellen - Ordner-Struktur

Einfaches Debian-Paket erstellen - Ordner-Struktur

Hat man sich die Ordner-Struktur nun passend erstellt gilt es die nötigen Dateien nur noch an die richtige Stelle in den angelegten Verzeichnissen zu kopieren - in meinem Fall habe ich ja nur meine Datei "helloworld.sh":

Einfaches Debian-Paket erstellen - Ordner-Struktur

Einfaches Debian-Paket erstellen - Ordner-Struktur

Was wir nun für dieses wirklich sehr einfach Beispiel noch essentiell benötigen ist die Datei "control" die im Verzeichnis "DEBIAN" landen muss:

Einfaches Debian-Paket erstellen - Ordner-Struktur

Einfaches Debian-Paket erstellen - Ordner-Struktur

Diese Datei ist die wichtigste für die Paket-Verwaltung, sie zeigt nicht nur den Namen des Paketes sondern auch den Namen des Entwicklers, die Version, Pakete die zusätzlich vorhanden sein muss damit auch alles funktioniert, ... Diese Datei öffnen wir nun mit einem beliebigen Texteditor und fügen folgende minimalen Text ein:

Package: Version: Section: Priority: Architecture: Depends: Installed-Size: Maintainer: Homepage: Description:

Dies füllen wir nun entsprechend aus - nach diesem Beispiel etwa:

Package: helloworld Version: 0.1 Section: main misc Priority: extra Architecture: all Depends: bash Installed-Size: 36 Maintainer: Robert Gödl Homepage: https://linux-bibel.online.org Description: Ein einfaches Script das Hello World am Terminal ausführt.

Hier eine kurze Beschreibung des Inhaltes:

Name Beschreibung
Package Der Name des Paketes, er darf nicht den Namen eines bereits vorhandenen Paketes in der Paket-Verwaltung tragen, keine Leerzeichen und keine Sonderzeichen enthalten
Version Die Version des Paketes, beliebige Form, darf jedoch keine Sonderzeichen oder Leerzeichen enthalten
Section Die Sektion zu dem das Paket gehört, zuerst geben wir "main", "contrib" oder "non-free" an, also open Source, unterstützt oder nicht frei an, ist das Paket open Source kann man "main" auch weg lassen, dann folgt die eigentliche Sektion an - also die Kategorie zu der das Paket in der Paket-Verwaltung passt, etwa "admin", "doc", "graphics" - eine Liste finden Sie unter Debian - Sektionen
Priority Hiermit wird angegeben wie essentiell das Paket für das System und Anwender ist, in den meisten Fällen gibt man hier einfach "extra" an
Architecture Die Angabe der Prozessor-Architektur, also etwa "i386", "amd64" und so weiter oder bei einem Script oder Plattform-Übergreifend lässt man diesen Eintrag frei
Depends Die Abhängigkeiten, also die Pakete die benötigt werden damit die Software auch tatsächlich funktioniert, man gibt die tatsächlichen Namen der Pakete ohne den Zusatz ".deb" an - also etwa "bash", ist eine bestimmte Version nötig gibt man diese hinzu an - etwa "libpng1.2", mehrere Pakete trennt man durch einen Beistrich "bash1.2, dolphin"
Installed-Size Hiermit gibt man die Größe des Paketes nach der Installation an - und zwar in Kilobyte
Maintainer Der Name des Erstellers des Paketes sowie dessen Mail-Adresse
Homepage Wenn vorhanden die Homepage des Quellcodes der Software oder des Herstellers des Scripts, ...
Description Eine kurze Erklärung rund um das Paket / die Software / das Script, ...

Nach meinem Beispiel also:

Debian-Pakete erstellen - die Control-Datei

Debian-Pakete erstellen - die Control-Datei

Die Control-Datei kann noch mehr Details enthalten die Sie unter Control-Datei finden. Nun müssen wir noch als Administrator alle nötigen Dateien die ausführbar sein sollen ausführbar machen, Bilder, Textdateien und dergleichen gehören natürlich nicht dazu aber Anwendungen, Scripte und so weiter - also am Terminal:

chmod +x helloworld.sh

in meinem Beispiel. Ist dies geschehen öffnet man über den Verzeichnis mit allen Dateien - in meinem Beispiel also über dem Verzeichnis "helloworld" das Terminal und startet als Administrator den Befehl:

dpkg -b ./verzeichnis paket-name.deb

In meinem Beispiel also:

dpkg -b ./helloworld helloworld.deb

Das Paket wird erstellt:

Erstelltes Debian-Paket

Erstelltes Debian-Paket

und kann ganz normal über die Paket-Verwaltung installiert und deinstalliert werden.

Menü-Eintrag

Um einen Eintrag in das Anwendungsmenü vorzunehmen - natürlich mit passendem Icon erstellt man sich im Verzeichnis "/usr/share/menu" eine weitere Textdatei namens "paketname.menu" in meinem Beispiel also "helloworld.menu" (auch wenn es sich in meinem Beispiel nur um ein Terminal-Programm handelt), das Icon habe ich unter "/usr/local/share/pixmaps" abgelegt, die Icon-Datei nennt sich "helloworld.png", in diesem Beispiel sieht die Datei nun so aus:

helloworldpackage(helloworld): needs="X11" \ section="Apps/Edu" \ title="Helloworld" \ command="/bin/helloworld.sh" \ icon="/usr/local/share/pixmaps/helloworld.png"

Fertig. Eine Liste der Sektionen finden Sie unter Menü-Sektionen.

Mit Checkinstall kompilieren

Wenn man Software selbst kompiliert kann man daraus auch gleich ein Debian-Paket erstellen (dies funktioniert aber auch für Pakete anderer Distributionen die etwa RPM- oder Tar.gz-Pakete nutzen), dazu mehr auf der Linux Bibel am voran gegangenen Link.

Richtige Debian-Pakete

Die Überschrift ist nicht ganz richtig, richtige Debian-Pakete haben wir natürlich auch mit den beiden voran gegangenen Beispielen erstellt - doch will man Software für auf Debian basierende Systeme offiziell bereit stellen, also etwa über eine Homepage sollte man etwas weiter gehen oder gleich über die Repositorys der jeweiligen Distribution muss man sogar etwas tiefer in die Kiste greifen.

Richtige Debian-Pakete sind Lintian-konform, dies bedeutet man beachtet beim Erstellen der jeweiligen Pakete auf die Regeln die Debian vor gibt. Dazu zählt das man DEB-Pakete direkt erstellt, man kompiliert also nicht zuerst und packt die Dateien dann in das Paket sondern nutzt spezielle Software mit der das Paket schon aus dem Kompilieren heraus entsteht, dazu dürfen keine Dateien des Quelltextes verändert oder gepatcht werden, die Lizenz muss für jede einzelne Datei makellos passen und einiges weitere. Doch es ist gar nicht so schwierig.

Wie schon ganz oben beschrieben werden zuerst die benötigten Pakete installiert die zur grundlegenden Erstellung von Paketen und zum kompilieren benötigt werden.

Ein klein wenig Arbeit beim Erstellen von Debian-Paketen nimmt es dem Ersteller ab wenn er gewisse Daten in die in seinem Home-Verzeichnis versteckte Datei ".profile" einfügt, dazu fügt man einfach folgende Zeilen an die Datei an:

export DEBFULLNAME="Vorname Nachname" export DEBMAIL="mail.adresse@xxxx.com"

Wobei man natürlich die entsprechenden Daten eingibt.

Suche Nach oben Startseite Mail an den Autor Links rund um Linux

SiteLock