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