Website-Suche

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


Dieser Artikel beschreibt eine einfache Möglichkeit, ein selbstgemachtes Debian-Paket zu erstellen und es in ein lokales Paket-Repository einzubinden. Obwohl wir ein vorhandenes Debian/Ubuntu-Paket verwenden könnten, werden wir bei Null anfangen, indem wir unsere eigene triviale Anwendung erstellen und verpacken. 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 man ein lokales Debian-Repository erstellt
  • Hinzufügen des Repositorys zur Liste der Softwarequellen
#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. Zu diesem Zeitpunkt sollten wir eine ausführbare Datei namens "linuxconfig" haben, die einen String auf dem Bildschirm druckt.

Erstellen eines Debian-Pakets

Jetzt, da wir unser kleines Programm in Form einer ausführbaren Binärdatei fertig haben, können wir ein Debian-Paket erstellen. Um dies zu tun, verwenden wir das Tool dpkg-deb. Zuerst müssen wir die Debian-Paketstruktur erstellen. Die einzigen Dateien, die zum Erstellen eines Debian-Pakets benötigt werden, sind:

  • DEBIAN/Steuerung
  • Benutzerdefinierte Dateien, die Teil des Pakets sein sollen (nicht erforderlich)

Erstellen Sie zunächst ein Verzeichnis mit dem Namen linuxconfig. Dieses Verzeichnis enthält alle notwendigen Paketdateien:

mkdir linuxconfig

Erstellen Sie als Nächstes das DEBIAN-Verzeichnis und die Steuerdatei:

mkdir linuxconfig/DEBIAN
vi linuxconfig/DEBIAN/control

In 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

Super, das einzige, was noch fehlt, ist unser Programm linuxconfig. Im 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 so ändern, dass er die Programmversion und die Paketarchitektur enthält. Zum Beispiel:

mv linuxconfig.deb linuxconfig-1.0_amd64.deb

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

Einrichten eines lokalen Paket-Repositorys

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

sudo apt-get install apache2

Nach der Installation können wir, um zu überprüfen, ob der Webserver funktioniert, zur IP-Adresse des Computers navigieren (oder zu "http://localhost", wenn ein Browser auf dem Computer selbst ausgeführt wird), die in unserem Fall http://10.1.1.4 ist. Wir sollten die
berühmte Es funktioniert! Nachricht.

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

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

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 begeben uns in das debian-Verzeichnis und verwenden das Dienstprogramm dpkg-scanpackages, um die Aufgabe zu erfüllen. Möglicherweise müssen Sie das Paket dpkg-dev installieren, falls der Befehl dpkg-scanpackages fehlt:

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

Unser lokales Repository ist nun bereit.

Hinzufügen des Repositorys zu den Softwarequellen

An diesem Punkt müssen wir, um unser Paket aus dem von uns erstellten lokalen Repository installieren zu können, die Datei /etc/apt/sources.list bearbeiten, den entsprechenden Eintrag hinzufügen (die IP-Adresse ändern, um die Ihres Rechners widerzuspiegeln) und
die Repositories synchronisieren:

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

Stellen Sie sicher, dass Sie das obige [trusted=yes] hinzufü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.

Repositories 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 nun 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

Verwandte Artikel: