Ein Debian Paket erstellen - Debian Paket Tutorials

Inhaltsverzeichnis[Verbergen]

Jeder der sich ein bisschen mit Linux bzw. eigentlich genauer Debian oder Ubuntu beschäftigt hat, ist wahrscheinlich schon einmal auf sogenannte Debian Pakete gestoßen (mit der Endung .deb). Diese Pakete erleichtern einem die Installation und das Deinstallieren von Programmen enorm, da man nur mehr das Paket ausführen muss, und der Rest automatisch erledigt wird. Ein weiterer großer Vorteil ist, dass die so installierten Pakete beim Paketmanager "registriert" werden, und man über diesen somit auch das Programm wieder deinstallieren kann.

In diesem Tutorial werden wir ein Debian Paket für Programme bzw. Scripte erstellen, die nicht mehr kompiliert werden müssen. Sollten wir von einem Programm nur den Quelltext haben, dann müssen wir es entweder zuerst kompilieren oder auf eine andere Art packen, auf die ich nicht näher eingehe, die aber zum Beispiel auf ubuntuusers.de ganz gut erklärt wird.

1. Unser Ziel

Wir gehen von einem einfachen Skript aus, das nur "hello world!" auf der Konsole ausgibt und dann kurz wartet, damit wir auch was sehen. Wir wollen es dann in ein Deb-Paket packen, das nicht nur das Skript installiert, sondern auch noch einen Menüeintrag mit einem schönen Logo erstellt. Selbstverständlich soll alles bei einer Deinstallation wieder restlos gelöscht werden.

Hier ist noch das sehr einfache Skript:

#!/bin/bash

echo "hello world!"
sleep 10

2. Einrichten der Ordnerstruktur

So, jetzt geht es aber wirklich los. Als erstes erstellen wir uns ein Verzeichnis in dem wir alle benötigten Dateien und Ordner erstellen werden. Im Tutorial werden wir "helloworld" als Namen nehmen, aber selbstverständlich sollte man für richtige Pakete einen besseren Namen nehmen.

Um Missverständnissen vorzubeugen ist hier gleich einmal die fertige Ordnerstruktur. Wozu die einzelnen Dateien und Ordner gut sind, werden wir noch im Laufe des Tutorials herausfinden.

helloworld
\
 |usr
 |  \
 |  share
 |    \
 |    helloworld
 |      \
 |      helloworld.sh
 \   
 DEBIAN
    \
    control

2.1. Benötigte Dateien und Ordner

Jetzt erstellen wir in unserem neuen Ordner einfach die Ordnerstruktur, so wie sie nach der Installation ausschauen soll. Wir haben nur unser Skript, das nach "/usr/share/helloworld/helloworld.sh" installiert werden soll. Damit das auch passiert erstellen wir in unserem Verzeichnis einfach den gewünschten Verzeichnisbaum von / aufwärts. Und überall wo wir Dateien drinnen haben wollen müssen wir sie nur hineinkopieren. Nachdem wir die Ordner erstellt haben kopieren wir noch unser Skript nach ./usr/share/helloworld/helloworld.sh (ausgehend vom neuen Ordner "helloworld").

2.1.1. Skript ausführbar machen

Sollte das Skript noch nicht ausführbar sein, sollten wir das jetzt machen:

# Zuerst ins neue Verzeichnis "helloworld" wechseln
chmod +x ./usr/share/helloworld/helloworld.sh

Wenn wir ein Paket mit richtigen, kompilierten Programmen erstellen, dann brauchen wir dieses natürlich nicht mehr ausführbar machen.

2.2. Die Steuerung der Erstellung

Als nächstes erstellen wir in unserem Verzeichnis noch einen Ordner "DEBIAN". In diesen Ordner kommen alle Dateien hinein, die das Erstellen des Deb-Pakets steuern.

2.2.1. Die 'control' Datei

Im Ordner "DEBIAN" müssen wir zumindest eine Datei mit dem Namen "control" erstellen, in der wir die wichtigsten Informationen zu unserem Paket angeben. Weiters können wir hier auch angeben von welchen Paketen unseres abhängig ist, so dass der Paketmanager diese gleich mitinstallieren kann.

Unsere "control" Datei sollte in etwa so ausschauen:

control
Package: helloworld
Version: 0.0.1-0
Section: misc
Priority: extra
Architecture: all
Depends:
Installed-Size: 8
Maintainer: Thomas Geymayer <Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.>
Homepage: www.tomprogs.at
Description: Ein einfaches "hello world" Skript
 Ein "hello world!" Skript, das in ein Deb-Paket im
 Rahmen des Tutorials "Debian (*.deb) Pakete erstellen"
 auf www.tomprogs.at gepackt wurde.

Wie wir sehen besteht die Datei aus einer Auflistung von Feldnamen gefolgt von einem Wert oder Text dafür. In der folgenden Tabelle schauen wir uns einmal die verwendeten Felder etwas genauer an:

Feldname Beschreibung
Package Der Name den das Paket haben soll. Er sollte möglichst noch nicht in Verwendung sein, da man über ihn auch das Paket im Paketmanager installieren kann. Weiters darf er auch keine Whitespaces (Leerzeichen etc.) oder Sonderzeichen enthalten.
Version Die Version des Pakets. Über die Version kann der Paketmanager auch erkennen ob eine eventuell schon installierte Version des Programmes neuer ist als die im Paket.
Section Gibt die Sektion an, zu der das Paket gehört. Zuerst geben wir die Kategorie 'main', 'contrib' oder 'non-free' gefolgt von einem Slash ('/') an. Wenn das Paket in die Kategorie 'main', dh. mit einer Open Source Lizenz lizenziert ist, dann können wir die Kategorie auch weglassen, da dann automatisch 'main' angenommen wird.
Anschließen müssen wir noch die Sektion angeben, bei der es sehr viele Möglichkeiten gibt. Einige Beispiele sind 'admin', 'devel' (development), 'doc', 'editors', 'games', 'graphics', 'math', 'misc', 'science' oder 'utils'. Es gibt noch ein paar weitere, die wir auf der Debian Homepage finden.
Priority Hier geben wir an wie wichtig unser Paket für ein System bzw. seinen Anwender ist. Normalerweise werden wir hier 'extra' angeben.
Architecture Gibt die Prozessorarchitektur an, auf denen dieses Programm/Skript lauffähig ist. Mögliche Werte sind 'i386' für die meisten Heimcomputer die mit 32 Bit laufen, 'amd64' für 64-Bit Heimcomputer und 'all' für alle Computer (zb. für viele Skripte). Es gibt zwar auch noch andere Möglichkeiten, die aber nicht so relevant sind.
Depends Abhängigkeiten, dh. Programme bzw. eigentlich Pakete die unser Programm/Skript zur Ausführung unbedingt braucht können wir hier angeben. Wir brauchen nur die Paketnamen getrennt durch Komma und Leerzeichen angeben, also zum Beispiel:
Depends: cmake, libsdl1.2, libsdl-image1.2
Installed-Size Wie der Name schon sagt geben wir hier die Größe unseres installierten Paketes an. Die Angabe erfolgt in KB.
Maintainer Hier geben wir den bzw. die Namen der Programmierer/Ersteller des Pakets/Programms an. Meistens wird hier auch eine E-Mail-Adresse angegeben.
Homepage Dieser Punkt sollte wohl selbsterklärend sein. Am Besten sollte man unter dieser Adresse auch den Quellcode des Pakets erhalten.
Description In der gleichen Zeile wie "Description" eine kurze Beschreibung des Pakets und anschließend in der nächsten Zeile eingerückt die ausführliche Beschreibung.

Zusätzlich zu den Feldern die wir jetzt verwendet haben gibt es natürlich auch noch ein paar weitere. Eine ausführlichere Beschreibung dieser und weiterer Felder und Werte gibt es (auf Englisch) auf der Debian Homepage. Wer nach ein paar eigenen Versuchen sich tiefer mit dieser Materie beschäftigen will, sollte sich die Seite unbedingt einmal genauer durchlesen.

3. Ein erstes Paket

Jetzt ist es endlich soweit und wir können einmal eine erste Version unseres Pakets erstellen. Dazu gehen wir einfach wieder in die Konsole und geben nach einem Wechsel in das Verzeichnis über unserem Paket-Wurzel-Verzeichnis "helloworld" folgendes ein:

dpkg -b ./helloworld helloworld.deb

4. Und gleich testen

Wenn alles funktioniert hat, dann sollten wir jetzt im Verzeichnis über "helloworld" ein Paket mit dem Namen "helloworld.deb" finden, das wir jetzt einfach durch anklicken bzw. mit dem Paketmanager installieren können.
Nach der Installation sollte es ein neues Verzeichnis "/usr/share/helloworld" geben, in dem sich unser Skript befinden sollte.

Dannach können wir es gleich wieder deinstallieren:

sudo apt-get remove helloworld

Jetzt sollten das Skript und das neu angelegte Verzeichnis wieder vollständig gelöscht sein.

5. Ausblick

Jetzt können wir zwar schon ein einfaches Paket erstellen, aber das war noch lange nicht alles. Als nächstes werden wir das ganze noch etwas aufbereiten so dass beim Installieren automatisch auch ein Eintrag im Menü erstellt wird, mit dem das Programm bzw. bei uns das Skript gestartet werden kann.

Nächstes Tutorial: Einen Eintrag im Menü erstellen - Debian Paket Tutorials

6. Download der verwendete Dateien

Unter dem folgenden Link habe ich noch alle besprochenen Dateien und das fertige .deb Paket in ein Archiv gepackt. Falls etwas unklar ist könnt ihr euch dort alles genau anschauen.

icon Ein erstes Debian Paket (2.23 kB 2009-10-05 15:43:01)


Wünsche, Anregungen und Kritik bitte über das Kontaktformular oder direkt an Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können. an mich schicken.

Aktualisiert ( Dienstag, 25. Januar 2011 um 23:52 Uhr )