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

Aus /usr/space Wiki
Zur Navigation springen Zur Suche springen
(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]]. 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 erledigen, aber in dem Beispiel wird die Kommandozeile benutzt, um es auch über z.B. {{code|SSH}} durchführen zu können.
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 ===


=== das Programm ===
nano debian/source/format
 
Folgenden Text einfügen:
 
3.0 (native)
 
=== Das eigentliche Programm ===


==== Makefile ====
==== Makefile ====


==== hallowelt.c ====
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