Paketerstellung unter Debian / Ubuntu
Immer wieder erstelle ich mal das ein oder andere Script für meine(n) Server und benutze dieses fröhlich. Wenige Wochen oder Monate später dann kommen die ersten Anpassungen oder Änderungen daran und das Script wird mehr oder weniger zum „Freiwild“.
Um eben diesem kleinen Chaos vorzubeugen habe ich für mich nun beschlossen eben diese Scripte und Tools gleich als ein Paket zu schnüren und zu pflegen ( beispielsweise ist dann auch eine Versionierung in SVN oder CVS um einiges eleganter ).
Dieses HowTo bezieht sich lediglich auf die .deb Paketerstellung für bereits fertig kompilierte Programme, oder eben Shell Scripte, welche nicht kompiliert werden müssen.
Beginnen wir mit dem Grundaufbau, der Verzeichnisstruktur welche anhand der Debian Richtlinien eingehalten werden muss, um ein Paket sauber zu erstellen:
- [Basisverzeichnis] ( am besten der Name des Paketes )
- [Basisverzeichnis]/usr/bin ( das ausführbare File )
- [Basisverzeichnis]/debian ( die paketrelevanten Files )
Das im Verzeichnis usr/bin abgelegte Binary-File ( oder beispielsweise auch Python- , Shell-Script ) muss nun auch die execute Rechte des Filesystems erhalten, da diese beim Paketieren übernommen werden. In der Regel ist hier folgendes chmod sinnvoll
chmod 775 Binary-File
Im Verzeichnis debian werden nun folgende Dateien angelegt:
- changelog
- control
- copyright
- rules ( muss execute Rechte besitzen )
Der Aufbau dieser Dateien hat nach bestimmten Regeln zu erfolgen, welche ebenfalls in den Debian Richtlinien einzusehen ist. Ich beschreibe den Aufbau anhand eines einfachen Beispiels.
changelog
Paketname (Version) unstable; urgency=low
* getane Arbeit, Schritt eins
* getane Arbeit, Schritt zwei usw.
-- Name <name@domain.de> Tue, 17 Aug 2010 11:57:52 +0200
control
Source: Paketname
Section: admin
Priority: optional
Maintainer: Name name@domain.de
Standards-Version: 3.6.3
Build-Depends: debhelper
Package: Paketname
Depends: bash (>= 3.0)
Architecture: all
Description: Das ist die Kurzbeschreibung
und das hier die Langbeschreibung mit Leerzeichen am Anfang !
copyright
Copyright Jahreszahl Vorname Nachname <
E-Mail Adresse>
rules
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
Beim Aufbau aller dieser Dateien ist die Einhaltung der Abstände und Leerzeichen strikt einzuhalten !
Um nun fortzufahren müssen erst einmal folgende Pakete auf dem entsprechenden System vorhanden sein. Falls dies nicht der Fall ist, diese einfach mittels apt-get oder dpkg installieren:
- debhelper
- dh-make
- dpkg-dev
- fakeroot
- lintian
- debhelper
Nun in das Basisverzeichnis wechseln ( siehe Aufbau, oben ) und folgendes Kommando absetzen
dpkg-buildpackage
Es erfolgt nun eine Art Kompilierung des Paketes und wenn alle Angaben korrekt sind, läuft dessen Ausführung auch fehlerfrei durch. Das war es dann auch schon, das gewünschte .deb Paket steht nun zur Verfügung und kann wie gewohnt genutzt werden. Zu guter Letzt kann über das Tool Lintian auch noch eine Prüfung, auf die Einhaltung der Konformitätsregeln erfolgen:
lintian <Paketname>