Lassen Sie uns in dieser Schritt-für-Schritt-Anleitung sehen, wie man Debian-Pakete aus den Quellen auf Debian, Ubuntu und anderen APT-basierten Systemen wie Linux Mint erstellt.
Debian und Debian-basierte Systeme wie Ubuntu verwenden das Advanced Package Tool , oder APT kurz gesagt, zum Installieren, Aktualisieren, Aktualisieren und Entfernen von Software von der Befehlszeile.
Normalerweise speichert der APT-Paketmanager die Liste der Repositories in der Datei namens /etc/apt/sources.list
und in jeder Datei mit der Endung .list
unter dem Verzeichnis /etc/apt/sources.list.d/
.
Wenn wir ein Paket installieren, apt
Der Befehl ruft die binäre oder vorkompilierte Version des angegebenen Pakets aus diesen Repositorys ab.
Zusätzlich zur Installation von Binärpaketen können Sie mit APT auch den Quellcode eines Pakets herunterladen. So können Sie dann einige Funktionen im Quellcode hinzufügen, das Paket aus dem Quellcode erstellen und schließlich die modifizierte Version des Pakets installieren.
Warum sollten wir ein Paket aus dem Quellcode erstellen?
Es kann viele Gründe geben, ein Paket aus dem Quellcode zu erstellen. Hier sind ein paar Gründe, die mir jetzt einfallen:
- Inspizieren Sie den Quellcode, um einen Fehler zu finden.
- Fügen Sie neue Funktionen in den Paketen hinzu, die nicht mehr aktiv entwickelt werden.
- Installieren Sie die neueste Version eines Pakets aus der Quelle. Im Allgemeinen könnten die Pakete in den offiziellen Repositories etwas alt sein.
- Und was noch wichtiger ist - lernen Sie, Debian-Pakete aus den Quellen zu bauen.
Installieren Sie die erforderlichen Build-Tools
Um ein Binärpaket aus dem Quellcode zu erstellen, müssen wir zuerst die erforderlichen Build-Tools installieren. Abhängig vom Befehlszeilentool zum Erstellen des Binärpakets müssen Sie möglicherweise eines der folgenden Pakete installieren:
- dpkg-dev
- devscripts
Diese Pakete bieten zahlreiche Tools zum Erstellen von Binärpaketen aus dem Quellcode.
Um "dpkg-dev"
zu installieren , ausführen:
$ sudo apt install dpkg-dev
Der Befehl zum Installieren von "devscripts"
Paket ist:
$ sudo apt install devscripts
Quell-Repositories aktivieren
Stellen Sie sicher, dass Sie die Quell-Repositories aktiviert haben.
Öffnen Sie dazu /etc/apt/sources.list
Datei:
$ sudo vim /etc/apt/sources.list
Darin sehen Sie einige Zeilen wie unten:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
In der obigen Datei sind alle Zeilen, die mit einem oder zwei Hashes (#) beginnen, nur Kommentare, die nur zu Informationszwecken dienen. Und die Zeilen ohne Hashes sind die apt repositories .
Im apt-Repository sind Zeilen, die mit „deb“ beginnen, relativ zu Binärpaketen, die von den Benutzern mit dem apt-Paketmanager installiert werden können. Und die Zeilen, die mit „deb-src“ beginnen, sind relativ zu Quellpaketen. Dies ist nützlich für Entwickler. Standardmäßig ist "deb-src" in der Quellenliste auskommentiert.
Um die Quellpakete herunterzuladen, müssen Sie die „deb-src“-Zeile auskommentieren. Entfernen Sie das # Symbol zum Auskommentieren einer Zeile. Nach dem Auskommentieren sollten die Repository-Zeilen wie folgt aussehen:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
Speichern und schließen Sie die Datei. Aktualisieren Sie die Repository-Liste mit dem Befehl:
$ sudo apt update
Quellpakete herunterladen
Laden Sie die Quelle eines Pakets mit "apt source <package-name>"
herunter Befehl. Beispielsweise lädt der folgende Befehl den Quellcode von "Hello World!"
herunter Programm:
$ apt source hello
Beispielausgabe:
Reading package lists... Done Need to get 734 kB of source archives. Get:1 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (dsc) [1847 B] Get:2 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (tar) [726 kB] Get:3 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (diff) [6560 B] Fetched 734 kB in 2s (336 kB/s) dpkg-source: info: extracting hello in hello-2.10 dpkg-source: info: unpacking hello_2.10.orig.tar.gz dpkg-source: info: unpacking hello_2.10-2ubuntu2.debian.tar.xz

Wie Sie sehen können, habe ich den Quellcode des Hello World-Programms heruntergeladen.
$ ls hello-2.10 hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2.dsc hello_2.10.orig.tar.gz
Sehen Sie sich den tatsächlichen Inhalt des Quellcodes an:
$ ls hello-2.10/ ABOUT-NLS ChangeLog INSTALL NEWS README-release aclocal.m4 configure debian lib man tests AUTHORS ChangeLog.O Makefile.am README THANKS build-aux configure.ac doc m4 po COPYING GNUmakefile Makefile.in README-dev TODO config.in contrib hello.1 maint.mk src
Build-Abhängigkeiten für das Paket installieren
Als nächstes müssen wir auch die Abhängigkeiten für dieses Paket installieren. Führen Sie dazu Folgendes aus:
$ sudo apt build-dep hello

Wir haben jetzt den Quellcode des Pakets heruntergeladen und die zum Erstellen dieses Pakets erforderlichen Abhängigkeiten installiert. Nehmen Sie als nächstes die Änderungen im Quellcode vor.
Quellcode eines Debian-Pakets ändern
Cd in das Verzeichnis, das die Paketquelle enthält. In unserem Fall ist es hello-2.10 .
$ cd hello-2.10
Ändern Sie den Code nach Wunsch. Der Code befindet sich in der Datei "hello.c"
unter "src"
Verzeichnis.
$ vi src/hello.c
Optimieren Sie den Code und/oder nehmen Sie Änderungen vor. Wenn Sie mit der Bearbeitung des Codes fertig sind, speichern und schließen Sie die Datei.
Jetzt ist es an der Zeit, das eigentliche .deb-Paket zu bauen.
Baue Debian-Pakete aus den Quellen
Wir haben den Quellcode heruntergeladen und den Code modifiziert. Lassen Sie uns das Paket aus der Quelle erstellen. Wir können dies auf drei Arten tun:
- Mit
"dpkg-buildpackage"
Befehl - Mit
"debuild"
Befehl - Quelle herunterladen und direkt erstellen
Methode 1 - Verwenden von dpkg-buildpackage:
Stellen Sie sicher, dass Sie "dpkg-dev"
installiert haben Paket.
Führen Sie dann den folgenden Befehl aus, um das Paket aus der Quelle zu erstellen:
$ dpkg-buildpackage -rfakeroot -b -uc -us
Hier,
dpkg-buildpackage
- Befehl zum Erstellen von Binär- oder Quellpaketen aus Quellen.-rfakeroot
- Erstellen Sie eine Fakeroot-Umgebung, um Root-Privilegien zu simulieren (um Eigentums- und Berechtigungsprobleme zu vermeiden).-b
- Baue nur das Binärpaket.-uc
- Signieren Sie das Änderungsprotokoll nicht kryptografisch. d.h. signieren Sie nicht die.buildinfo
und.changes
Dateien-us
- Signieren Sie das Quellpaket nicht.
Bitte stellen Sie sicher, dass Sie den obigen Befehl im Hauptverzeichnis des Quellbaums ausführen. Andernfalls funktioniert es nicht.
Wenn der Build erfolgreich ist, sehen Sie eine Nachricht wie unten:
[...] dpkg-deb: building package 'hello' in '../hello_2.10-2ubuntu2_amd64.deb'. dpkg-deb: building package 'hello-dbgsym' in 'debian/.debhelper/scratch-space/build-hello/hello-dbgsym_2.10-2ubuntu2_amd64.deb'. Renaming hello-dbgsym_2.10-2ubuntu2_amd64.deb to hello-dbgsym_2.10-2ubuntu2_amd64.ddeb dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../hello_2.10-2ubuntu2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included)

Herzliche Glückwünsche! Wir haben erfolgreich ein .deb-Paket aus dem Quellcode erstellt. Gehen Sie jetzt zurück zum übergeordneten Verzeichnis und Sie werden die neu erstellte .deb-Datei sehen:
$ cd ..
$ ls
Beispielausgabe:
hello-2.10 hello_2.10-2ubuntu2.dsc hello_2.10-2ubuntu2_amd64.deb hello-dbgsym_2.10-2ubuntu2_amd64.ddeb hello_2.10-2ubuntu2_amd64.buildinfo hello_2.10.orig.tar.gz hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2_amd64.changes
Methode 2 - Debuild verwenden
Stellen Sie sicher, dass Sie die "devscripts"
installiert haben Paket.
Erstellen Sie dann das Binärpaket, indem Sie den folgenden Befehl aus dem Quellbaum ausführen:
$ debuild -b -uc -us
Nach erfolgreichem Build wird die resultierende .deb
Paket wird im übergeordneten Verzeichnis gespeichert.
Methode 3 - Herunterladen und direkt erstellen
Dies ist die einfachste und direkteste Methode als die beiden oben genannten Methoden. Bei dieser Methode laden wir den Quellcode des Pakets herunter und übergeben den "--compile"
Option zum Erstellen der Binärdatei in einer einzigen Befehlszeile unten:
$ sudo apt-get source --compile hello
Der obige Befehl lädt den Quellcode von "hello"
herunter programmieren und die .deb
erstellen Paket und speichern Sie es im aktuellen Verzeichnis.
Installieren Sie die .deb-Datei
Gehen Sie zu dem Ort, an dem sich die Datei .deb
befindet Datei gespeichert und installieren Sie sie wie folgt:
$ sudo dpkg -i hello_2.10-2ubuntu2_amd64.deb
Wenn Sie eine Fehlermeldung zu fehlenden Abhängigkeiten sehen, führen Sie Folgendes aus:
$ sudo apt install -f
Wie Sie sehen können, ist das Erstellen eines Debian-Pakets aus den Quellen unter Linux sehr einfach!
Verwandte Lektüre:
- Wie man mit CheckInstall Pakete aus der Quelle erstellt
- So erstellen Sie ganz einfach Linux-Pakete für mehrere Plattformen
- Erstellen Sie Debian-Binärpakete neu, die bereits auf einem System installiert sind
- So konvertieren Sie Linux-Pakete mit Alien
- So konvertieren Sie DEB-Pakete in Arch-Linux-Pakete
Hoffe das hilft.