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

Einfache Möglichkeit, ein Debian-Paket und ein lokales Paket-Repository zu erstellen

Dieser Artikel beschreibt einen einfachen Weg, ein hausgemachtes Debian-Paket zu erstellen und es in ein lokales Paket-Repository aufzunehmen. Obwohl wir ein vorhandenes Debian/Ubuntu-Paket verwenden könnten, beginnen wir bei Null, indem wir unsere eigene triviale Anwendung erstellen und packen. Sobald unser Paket fertig ist, werden wir es in unser lokales Paket-Repository aufnehmen. Dieser Artikel veranschaulicht einen sehr vereinfachten Ansatz, der jedoch in vielen verschiedenen Szenarien als Vorlage dienen kann.

In diesem Tutorial lernen Sie:

  • Wie man ein triviales Debian-Paket erstellt
  • Wie erstelle ich ein lokales Debian-Repository
  • So fügen Sie das Repository zur Liste der Softwarequellen hinzu


Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System Debian
Software Das Build-Essential-Paket
Andere Ein funktionierender Apache-Webserver und Root-Berechtigungen
Konventionen # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden

Erstellen einer ausführbaren Binärdatei

Das erste, was wir tun müssen, ist, ein einfaches C++-Programm zu erstellen, es zu kompilieren und zu testen. Falls Sie stattdessen ein einfaches C-Programm schreiben möchten, besuchen Sie unser umfassendes Tutorial zur C-Programmierung. Unser Programm wird nichts anderes tun, nur „linuxconfig.org“ auf dem Bildschirm ausgeben. Hier ist der Code:

#include <iostream>
int main() {
    using namespace std;
    cout << "linuxconfig.org\n";
}

Speichern Sie den obigen Code als linuxconfig.cc . Um das Programm zu kompilieren benötigen wir den g++ -Compiler, der vom build-essential-Paket bereitgestellt wird. Wir können es installieren, indem wir Folgendes ausführen:

$ sudo apt-get install build-essential

Um den Code zu kompilieren, verwenden wir den folgenden Linux-Befehl:

$ g++ linuxconfig.cc -o linuxconfig
$ ./linuxconfig
linuxconfig.org

Alles sieht gut aus. An diesem Punkt sollten wir eine ausführbare Datei namens „linuxconfig“ haben, die eine Zeichenfolge auf dem Bildschirm ausgibt.

Erstellen eines Debian-Pakets

Nachdem wir unser kleines Programm in Form einer ausführbaren Binärdatei fertig haben, können wir ein Debian-Paket erstellen. Dazu verwenden wir das dpkg-deb Werkzeug. Zuerst müssen wir die Debian-Paketstruktur erstellen. Die einzigen Dateien, die zum Erstellen eines Debian-Pakets erforderlich sind, sind:

  • DEBIAN/control
  • benutzerdefinierte Dateien müssen Teil des Pakets sein (nicht erforderlich)

Erstellen Sie zuerst ein Verzeichnis namens linuxconfig . Dieses Verzeichnis enthält alle notwendigen Paketdateien:

$ mkdir linuxconfig

Als nächstes erstellen Sie das DEBIAN-Verzeichnis und die Steuerdatei:

$ mkdir linuxconfig/DEBIAN
$ vi linuxconfig/DEBIAN/control

Innerhalb der Steuerdatei geben wir die folgenden Informationen ein:

Package: linuxconfig
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: linuxconfig.org
Description: Print linuxconfig.org on the screen

Toll, das einzige, was fehlt, ist unser linuxconfig-Programm. Innerhalb der linuxconfig Verzeichnis erstellen wir einen Verzeichnisbaum, der den Pfad darstellt, in dem unser Programm im System installiert wird, und kopieren die
ausführbare Datei hinein:

$ mkdir -p linuxconfig/usr/bin/
$ cp /path/to/linuxconfig linuxconfig/usr/bin/

An diesem Punkt sind wir bereit, das Paket zu erstellen:

$ dpkg-deb --build linuxconfig
dpkg-deb: building package `linuxconfig' in `linuxconfig.deb'.
$ ls
linuxconfig  linuxconfig.deb

Möglicherweise möchten Sie den Namen des Pakets ändern, sodass er die Programmversion und die Paketarchitektur enthält. Zum Beispiel:

$ mv linuxconfig.deb linuxconfig-1.0_amd64.deb

Alles erledigt ! Unser Paket ist fertig! (HINWEIS:Dies ist nur ein Beispiel, die Erstellung offizieller Pakete erfordert mehr Arbeit).

Ein lokales Paket-Repository einrichten

Um ein lokales Paket-Repository zu erstellen, benötigen wir eine funktionierende. In diesem Fall gehen wir von der Verwendung von Apache aus mit Standardeinstellungen. Um den Apache-Webserver zu installieren, müssen wir nur Folgendes ausführen:

$ sudo apt-get install apache2

Nach der Installation können wir zur Überprüfung, ob der Webserver funktioniert, zur IP-Adresse des Computers navigieren (oder zu „http://localhost“, wenn auf dem Computer selbst ein Browser ausgeführt wird), was in unserem Fall http:// 10.1.1.4. Wir sollten den
berühmten It works! Nachricht.

Die Webserver-Software läuft, aber es wurden noch keine Inhalte hinzugefügt. Der DocumentRoot des standardmäßigen Apache VirtualHost , ist /var/www/html :Hier erstellen wir unser Repository.

Lassen Sie uns das „debian“-Verzeichnis in /var/www/html erstellen und kopieren Sie das Paket linuxconfig-1.0_amd64.deb darin:

$ sudo mkdir /var/www/html/debian
$ sudo cp /path/to/linuxconfig-1.0_amd64.deb /var/www/html/debian/

Der nächste Schritt besteht in der Generierung einer Paketliste. Wir bewegen uns in das debian Verzeichnis und verwenden Sie die dpkg-scanpackages Dienstprogramm, um die Aufgabe zu erfüllen. Möglicherweise müssen Sie dpkg-dev installieren Paket, falls die dpkg-scanpackages Befehl fehlt:

$ dpkg-scanpackages . | gzip -c9  > Packages.gz
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.

Unser lokales Repository ist jetzt bereit.

Hinzufügen des Repositorys zu den Softwarequellen

An diesem Punkt müssen wir die /etc/apt/sources.list bearbeiten, um unser Paket aus dem von uns erstellten lokalen Repository installieren zu können -Datei, fügen Sie den zugehörigen Eintrag hinzu (ändern Sie die IP-Adresse, damit sie die Ihres Computers widerspiegelt) und
synchronisieren Sie die Repositorys:

echo "deb [trusted=yes] http://10.1.1.4/debian ./" | tee -a /etc/apt/sources.list > /dev/null

Achten Sie darauf, den obigen [trusted=yes] hinzuzufügen um die folgende Fehlermeldung zu vermeiden:

 Release' does not have a Release file.                   
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Repositorys synchronisieren:

$ sudo apt-get update
Ign:1 http://10.1.1.4/debian ./ InRelease
Ign:2 http://10.1.1.4/debian ./ Release
Ign:3 http://10.1.1.4/debian ./ Packages
Ign:3 http://10.1.1.4/debian ./ Packages
Ign:3 http://10.1.1.4/debian ./ Packages
Get:3 http://10.1.1.4/debian ./ Packages [303 B]

Um unser Paket zu installieren, können wir jetzt das Tool apt-get verwenden:

$ sudo apt-get install linuxconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  linuxconfig
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 3174 B of archives.
After this operation, 1,049 kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  linuxconfig
Install these packages without verification [y/N]? y

Ausführen:

$ linuxconfig
linuxconfig.org

Um das Paket vom System zu entfernen, führen Sie einfach Folgendes aus:

$ sudo apt-get remove linuxconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  linuxconfig
0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
After this operation, 1049 kB disk space will be freed.
Do you want to continue? [Y/n] y

Debian
  1. So erstellen Sie ein lokales Red Hat-Repository

  2. So erstellen Sie ein lokales YUM-Repository auf CentOS 7 / RHEL 7 mithilfe einer DVD

  3. Der einfache Weg zum Installieren und Entfernen einer Paketgruppe in Arch Linux

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

  5. Debian – Sicherheit des Debian-Repository?

Wie man ein Repository zu Debian hinzufügt

Ein einfacher Weg, Gelegenheiten für Beiträge zu Debian-Paketen zu finden

So erstellen und führen Sie ein Shell-Skript in Debian 10 aus

So erstellen und bearbeiten Sie PDF-Dateien in Debian 10

Überprüfen Sie die Abhängigkeiten eines Pakets in Ubuntu 20.04 und Debian 10

Eine einfache Möglichkeit, eine Desktop-Verknüpfung zu erstellen?