Da ich in letzter Zeit etwas mehr am programmieren bin und auch Debian Pakete von meinen Skripten anbieten will, habe ich mich etwas in die Materie einlesen müssen. Da ich selber kein wirklich umfassendes Tutorial für meine Herangehensweise gefunden habe, kommt hier nun eines:
Das ganze wird sich wahrscheinlich (da es doch sehr komplex ist) über mehrere Teile versteilen.
- Das Makefile
- Die Paketierung
- Hochladen in ein PPA
Es soll nur um ein kleines Skript gehen. Da ich für so etwas meist auf Python zurückgreife wird sich das Tutorial darauf beziehen.
Zuerst wird das Programm geschrieben, wie es später funktionieren soll. Mein Skript ist ein einfaches „Hallo Welt“ Skript, welches dies im Terminal und per Ubuntu Benachrichtigungssystem ausgeben soll. Es empfiehlt sich für das Skript ein eigenes Verzeichnis zu erstellen. Alle Dateien werden dann dort angelegt, und Befehle daraus ausgeführt.
Zuerst wird die Datei world-example erstellt:
#!/usr/bin/python
import os
print("Hello World")
os.system('notify-send "Hello World"')
Die erste Zeile ist das Shebang und wird benötigt, damit der Computer weiß, womit das Programm ausgeführt werden soll. In diesem Fall Python.
In der zweiten Zeile wird eine benötigte Bibliothek importiert.
Zeile drei gibt „Hello World“ im Terminal aus.
Und Zeile vier weißt das Betriebssystem an, via notify-send eine grafische Meldung auszugeben.
Damit das ganze funktioniert wird Python ab Version 2.6 und das Paket libnotify-bin vorausgesetzt. Ist dies der Fall muss die Datei ausführbar gemacht werden und sollte sich dann, sollte sich das Skript auf der Konsole mit ./world-example starten lassen.
Die Installation eines Skriptes besteht im wesentlichen darin, die Datei an den richtigen Ort zu schieben. Dafür (und auch für die Kompilierung bei anderen Sprachen) ist das Makefile zuständig. Es wird die Datei Makefile angelegt und mit folgendem Inhalt gefüllt:
# Define Vars USRBINPATH=/usr/bin # install copies files -d = directory, -m = acces rights INSTALL = /usr/bin/install -c INSTALL_PROGRAM = $(INSTALL) -m 755 # Targets install: $(INSTALL) -d $(DESTDIR)$(USRBINPATH) $(INSTALL_PROGRAM) world-example $(DESTDIR)$(USRBINPATH)
Der erste Teil legt verschiedene Variablen fest. Bei einem Skript wie diesem ist dies zwar nicht nötig, aber bei größeren Projekten aus Gründen der Übersichtlichkeit unerlässlich.
USERBINPATH bezeichnet den Pfad, an den der Programmstarter (da wir nur eine Datei haben, diese) kommen soll.
INSTALL ist der Pfad für das Programm install, welches die Installation vornimmt.
INSTALL_PROGRAMM setzt zusätzlich gleich die Rechte der entsprechenden Datei fest.
Die Targets legen fest, was beim Aufruf der Makefile geschehen soll. Für das Beispielprogramm wird hier nur ein Ziel, die Installation festgelegt. Zuerst wird install aufgerufen und angewiesen das Verzeichnis DESTDIR/usr/bin zu erstellen, falls es nicht existiert. DESTDIR wird für die spätere Paketierung benötigt, und ignoriert, wenn es nicht angegeben wird. Dann wird das Programm dorthin verschoben, und mit den entsprechenden Dateiberechtigungen versehen. Weitere Ziele, wie clean werden hier nicht gebraucht, da das program nicht kompiliert werden soll.
Das Programm sollte sich nun schon installieren und starten lassen.
$ sudo make install
Nun kann das Programm vom Terminal aus getestet werden
$ world-example
Der nächste Teil wird sich mit der Paketierung beschäftigen.
Ähnliche Beiträge:

Na toll, jetzt, wo es spannend wirst, hörst du auf
Nein im Ernst, guter Artikel, ich bin auf die weiteren Teile sehr gespannt!
Bin auch schon gespannt. Schön kurz geschrieben