Beispiel: Bau eines Debian-Quellpaketes: Unterschied zwischen den Versionen

Aus /usr/space Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 54: Zeile 54:
  [[Debian-Pakete_erstellen#Description|Description]]: Ein einfaches Hallo Welt C-Programm
  [[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.
Das ''-c''-Suffix von ''mein-hallo-welt-c'' wird hier nur deswegen verwendet, um einen klar unterscheidbaren Paketnamen zu [[Beispiel: Bau eines Debian-Binärpaketes]] zu haben.


=== debian/changelog ===
=== debian/changelog ===

Version vom 25. August 2023, 19:14 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 einen klar unterscheidbaren Paketnamen zu 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