GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Wie man Debian-Pakete aus den Quellen erstellt

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:

  1. dpkg-dev
  2. 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:

  1. Mit "dpkg-buildpackage" Befehl
  2. Mit "debuild" Befehl
  3. 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.


Debian
  1. So extrahieren Sie Dateien aus dem Debian-Paketarchiv DEB

  2. So kompilieren Sie das Brotli-Komprimierungstool aus der Quelle unter Debian 9

  3. So aktualisieren Sie von Debian 10 auf Debian 11

  4. So erstellen Sie Pakete aus der Quelle mit CheckInstall

  5. Debian – Wie erkennt man das Quell-Repository eines Pakets in Debian?

So erstellen Sie ein Ubuntu-Paket aus der Quelle

Wie man ein Repository zu Debian hinzufügt

So aktualisieren Sie von Debian 10 auf Debian 11

Wie man ein Repository zu Debian hinzufügt

So installieren Sie ein Programm von der Quelle unter Linux

So entfernen Sie Pakete von Ubuntu &Debian