Beispiel: Bau eines Debian-Quellpaketes: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „In diesem Artikel wird die grundlegende Vorgehensweise beschrieben, wie man ein einfaches Debian-Source-Paket bauen kann. Auf Details wird hier nicht eingegangen, siehe dazu Debian-Pakete erstellen. Um nicht immer alle Verzeichnisse ausschreiben zu müssen, wechseln wir ab und zu das Verzeichnis. Es können alle Befehle und Dateiinhalte der Reihe nach einfach kopiert werden. Natürlich lässt sich das im Regelfall auch alles über grafische Werkzeuge…“) |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
In diesem Artikel wird die grundlegende Vorgehensweise beschrieben, wie man ein einfaches Debian-Source-Paket bauen kann. Auf Details wird hier nicht eingegangen, siehe dazu [[Debian-Pakete erstellen]]. | In diesem Artikel wird die grundlegende Vorgehensweise beschrieben, wie man ein einfaches Debian-Source-Paket bauen kann. Auf Details wird hier nicht eingegangen, siehe dazu [[Debian-Pakete erstellen]]. | ||
Es können alle Befehle und Dateiinhalte der Reihe nach einfach kopiert werden. Natürlich lässt sich das im Regelfall auch alles über grafische Werkzeuge erledigen, aber in dem Beispiel wird die Kommandozeile benutzt, um es auch über z.B. {{code|SSH}} durchführen zu können. | |||
__TOC__ | __TOC__ | ||
Die Verzeichnisstruktur dieses Beipielprojektes: | |||
mein-hallo-welt | |||
└── mein-hallo-welt-src | |||
├── debian | |||
│ ├── [[Debian-Pakete_erstellen#debian/changelog|changelog]] | |||
│ ├── [[Debian-Pakete_erstellen#debian/control_(Source-Pakete)|control]] | |||
│ ├── [[Debian-Pakete_erstellen#debian/rules|rules]] | |||
│ └── source | |||
│ └── [[Debian-Pakete_erstellen#debian/source/format|format]] | |||
├── mein-hallo-welt.c | |||
└── Makefile | |||
== Verzeichnisse anlegen == | == Verzeichnisse anlegen == | ||
Nachdem ein passendes Verzeichnis für dieses Projekt gefunden wurde, kann man von dort aus einfach folgende Befehle der Reihe nach kopieren. | |||
mkdir -p mein-hallo-welt/mein-hallo-welt-src | |||
cd mein-hallo-welt/mein-hallo-welt-src | |||
mkdir -p debian/source | |||
Wir erstellen hier deswegen eine Extra-Ebene (''mein-hallo-welt/mein-hallo-welt-src''), da das Bauen de[s|r] Pakete[s] nachher im Wurzelverzeichnis des Paketes (''mein-hallo-welt-src'') durchgeführt wird, und dabei die erstellten Dateien ins Elternverzeichnis gelegt werden ('mein-hallo-welt''). | |||
== Dateien anlegen == | == Dateien anlegen == | ||
Folgende Dateien einfach mit dem entsprechenden Inhalt erstellen: | Folgende Dateien einfach mit dem entsprechenden Inhalt erstellen: | ||
=== debian/control === | === debian/control === | ||
nano debian/control | |||
Folgenden Text einfügen (Felder bitte anpassen - zumindest ''Maintainer'' (oder einfach weglassen)): | |||
[[Debian-Pakete_erstellen#Section|Section]]: misc | |||
[[Debian-Pakete_erstellen#Source|Source]]: mein-hallo-welt-c | |||
[[Debian-Pakete_erstellen#Priority|Priority]]: optional | |||
[[Debian-Pakete_erstellen#Maintainer|Maintainer]]: Your Name <your-email@example.com> | |||
[[Debian-Pakete_erstellen#Standards-Version|Standards-Version]]: 3.9.8 | |||
[[Debian-Pakete_erstellen#Build-Depends|Build-Depends]]: | |||
debhelper (>= 11), | |||
debhelper-compat (= 13), | |||
gcc, | |||
make | |||
[[Debian-Pakete_erstellen#Architecture|Architecture]]: any | |||
[[Debian-Pakete_erstellen#Package|Package]]: mein-hallo-welt-c | |||
[[Debian-Pakete_erstellen#Depends|Depends]]: | |||
${shlibs:Depends}, | |||
${misc:Depends} | |||
[[Debian-Pakete_erstellen#Description|Description]]: Ein einfaches Hallo Welt C-Programm | |||
Das ''-c''-Suffix von ''mein-hallo-welt-c'' wird hier nur deswegen verwendet, um nicht den gleichen Paketnamen wie bei [[Beispiel: Bau eines Debian-Binärpaketes]] zu haben. | |||
=== debian/changelog === | === debian/changelog === | ||
nano debian/changelog | |||
Folgenden Text einfügen (letzte Zeile anpassen; der Zeit-String kann mit {{code|date -R}} ermittelt werden; für Details siehe: [[Debian-Pakete_erstellen#debian/changelog]]): | |||
mein-hallo-welt-c (1.0) stable; urgency=low | |||
* Initial release. | |||
-- Your Name <your-email@example.com> Fri, 18 Aug 2023 11:00:00 +0200 | |||
=== debian/rules === | === debian/rules === | ||
nano debian/rules | |||
Folgenden Text einfügen: | |||
#!/usr/bin/make -f | |||
%: | |||
dh $@ | |||
Wir sparen uns den Schritt, die Datei jetzt schon ausführbar zu machen. Immerhin nimmt uns {{code|dpkg-buildpackage}} das nachher ab ;-) | |||
=== debian/source/format === | === debian/source/format === | ||
=== | nano debian/source/format | ||
Folgenden Text einfügen: | |||
3.0 (native) | |||
=== Das eigentliche Programm === | |||
==== Makefile ==== | ==== Makefile ==== | ||
==== | nano Makefile | ||
Folgenden Text einfügen: | |||
all: | |||
gcc -o mein-hallo-welt-c mein-hallo-welt.c | |||
clean: | |||
rm -f mein-hallo-welt-c | |||
install: | |||
install -d $(DESTDIR)/usr/bin | |||
install -m 0755 mein-hallo-welt-c $(DESTDIR)/usr/bin | |||
Die Angabe von {{code|$(DESTDIR)}} ist wichtig, da die Dateien, die verpackt werden, zuerst innerhalb des Arbeitsverzeichnisses installiert werden. In diesem Fall ist {{code|$(DESTDIR)}} ''debian/mein-hallo-welt''. | |||
==== mein-hallo-welt.c ==== | |||
nano mein-hallo-welt.c | |||
Folgenden Text einfügen: | |||
#include <stdio.h> | |||
int main() { | |||
printf("Hallo Welt!\n"); | |||
return 0; | |||
} | |||
== Paket bilden == | == Paket bilden == | ||
Auf das Signieren der Pakete und anderer Dateien wird hier nicht eingegangen, deswegen verwenden wir hier immer die Option {{code|--no-sign}} | |||
Um sowohl das Source- als auch das Binary-Paket zu bilden, braucht im Wurzelverzeichnis (''mein-hallo-welt-src'') des Paketes nur {{code|dpkg-buildpackage --no-sign}} ausgeführt zu werden. | |||
=== Source-Paket bilden === | === Source-Paket bilden === | ||
dpkg-buildpackage --no-sign -S | |||
Lange Option für {{code|-S}}: {{code|--build=source}} | |||
=== Binary-Paket bilden === | === Binary-Paket bilden === | ||
dpkg-buildpackage --no-sign -b | |||
Lange Option für {{code|-b}}: {{code|--build=binary}} | |||
== installieren, ausführen und deinstallieren des Paketes == | == installieren, ausführen und deinstallieren des Paketes == | ||
=== Installation === | === Installation === | ||
sudo dpkg -i ./mein-hallo-welt-c_1.0_amd64.deb | |||
=== Ausführung === | === Ausführung === | ||
mein-hallo-welt-c | |||
=== Deinstallation === | === Deinstallation === | ||
sudo dpkg -r mein-hallo-welt-c |
Version vom 25. August 2023, 19:03 Uhr
In diesem Artikel wird die grundlegende Vorgehensweise beschrieben, wie man ein einfaches Debian-Source-Paket bauen kann. Auf Details wird hier nicht eingegangen, siehe dazu Debian-Pakete erstellen.
Es können alle Befehle und Dateiinhalte der Reihe nach einfach kopiert werden. Natürlich lässt sich das im Regelfall auch alles über grafische Werkzeuge erledigen, aber in dem Beispiel wird die Kommandozeile benutzt, um es auch über z.B. SSH
durchführen zu können.
Die Verzeichnisstruktur dieses Beipielprojektes:
mein-hallo-welt └── mein-hallo-welt-src ├── debian │ ├── changelog │ ├── control │ ├── rules │ └── source │ └── format ├── mein-hallo-welt.c └── Makefile
Verzeichnisse anlegen
Nachdem ein passendes Verzeichnis für dieses Projekt gefunden wurde, kann man von dort aus einfach folgende Befehle der Reihe nach kopieren.
mkdir -p mein-hallo-welt/mein-hallo-welt-src cd mein-hallo-welt/mein-hallo-welt-src mkdir -p debian/source
Wir erstellen hier deswegen eine Extra-Ebene (mein-hallo-welt/mein-hallo-welt-src), da das Bauen de[s|r] Pakete[s] nachher im Wurzelverzeichnis des Paketes (mein-hallo-welt-src) durchgeführt wird, und dabei die erstellten Dateien ins Elternverzeichnis gelegt werden ('mein-hallo-welt).
Dateien anlegen
Folgende Dateien einfach mit dem entsprechenden Inhalt erstellen:
debian/control
nano debian/control
Folgenden Text einfügen (Felder bitte anpassen - zumindest Maintainer (oder einfach weglassen)):
Section: misc Source: mein-hallo-welt-c Priority: optional Maintainer: Your Name <your-email@example.com> Standards-Version: 3.9.8 Build-Depends: debhelper (>= 11), debhelper-compat (= 13), gcc, make Architecture: any Package: mein-hallo-welt-c Depends: ${shlibs:Depends}, ${misc:Depends} Description: Ein einfaches Hallo Welt C-Programm
Das -c-Suffix von mein-hallo-welt-c wird hier nur deswegen verwendet, um nicht den gleichen Paketnamen wie bei Beispiel: Bau eines Debian-Binärpaketes zu haben.
debian/changelog
nano debian/changelog
Folgenden Text einfügen (letzte Zeile anpassen; der Zeit-String kann mit date -R
ermittelt werden; für Details siehe: Debian-Pakete_erstellen#debian/changelog):
mein-hallo-welt-c (1.0) stable; urgency=low * Initial release. -- Your Name <your-email@example.com> Fri, 18 Aug 2023 11:00:00 +0200
debian/rules
nano debian/rules
Folgenden Text einfügen:
#!/usr/bin/make -f %: dh $@
Wir sparen uns den Schritt, die Datei jetzt schon ausführbar zu machen. Immerhin nimmt uns dpkg-buildpackage
das nachher ab ;-)
debian/source/format
nano debian/source/format
Folgenden Text einfügen:
3.0 (native)
Das eigentliche Programm
Makefile
nano Makefile
Folgenden Text einfügen:
all: gcc -o mein-hallo-welt-c mein-hallo-welt.c clean: rm -f mein-hallo-welt-c install: install -d $(DESTDIR)/usr/bin install -m 0755 mein-hallo-welt-c $(DESTDIR)/usr/bin
Die Angabe von $(DESTDIR)
ist wichtig, da die Dateien, die verpackt werden, zuerst innerhalb des Arbeitsverzeichnisses installiert werden. In diesem Fall ist $(DESTDIR)
debian/mein-hallo-welt.
mein-hallo-welt.c
nano mein-hallo-welt.c
Folgenden Text einfügen:
#include <stdio.h> int main() { printf("Hallo Welt!\n"); return 0; }
Paket bilden
Auf das Signieren der Pakete und anderer Dateien wird hier nicht eingegangen, deswegen verwenden wir hier immer die Option --no-sign
Um sowohl das Source- als auch das Binary-Paket zu bilden, braucht im Wurzelverzeichnis (mein-hallo-welt-src) des Paketes nur dpkg-buildpackage --no-sign
ausgeführt zu werden.
Source-Paket bilden
dpkg-buildpackage --no-sign -S
Lange Option für -S
:
Binary-Paket bilden
dpkg-buildpackage --no-sign -b
Lange Option für -b
:
installieren, ausführen und deinstallieren des Paketes
Installation
sudo dpkg -i ./mein-hallo-welt-c_1.0_amd64.deb
Ausführung
mein-hallo-welt-c
Deinstallation
sudo dpkg -r mein-hallo-welt-c