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

So erstellen Sie ein benutzerdefiniertes RPM-Repository unter Linux

Rpm ist die Abkürzung für RPM Package Manager :Dies ist der Low-Level-Paketmanager, der in allen Distributionen der Red Hat-Familie wie Fedora und Red Hat Enterprise Linux verwendet wird.

Ein RPM-Paket ist ein Paket, das Software enthält, die mit diesem Paketverwaltungssystem installiert werden soll, und RPM-Pakete werden normalerweise über Software-Repositories verteilt. In diesem Tutorial lernen wir, wie man ein benutzerdefiniertes RPM-Repository erstellt und wie man unsere Distribution konfiguriert, um es als Softwarequelle zu verwenden.

In diesem Tutorial lernen Sie :

  • So erstellen Sie ein RPM-Repository
  • So verwenden Sie das Repository als Softwarequelle

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System Jede Distribution der Red Hat-Familie
Software dnf, Repository erstellen
Andere Administratorrechte zum Konfigurieren des Repositorys
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 gegebene Linux-Befehle als normaler nicht-privilegierter Benutzer ausgeführt werden

Softwareinstallation

Für dieses Tutorial erstellen wir unser benutzerdefiniertes Repository auf einem lokalen Computer mit der IP 192.168.0.39 das wird als HTTP-Server verwendet. Auf diesem Rechner müssen wir als erstes das createrepo installieren Paket. Die auf dem Remote-Rechner installierte Distribution muss selbst keine RPM-basierte Distribution sein, solange dieses Paket verfügbar ist. In unserem Fall ist zum Beispiel das auf dem Server installierte System Debian, also müssen wir den folgenden Befehl ausführen, um das Paket zu installieren:

$ sudo apt-get update && sudo apt-get install createrepo

Wie wir bereits gesagt haben, möchten wir in unserem spezifischen Beispiel die Software, die in unserem benutzerdefinierten Repository gehostet wird, über das HTTP-Protokoll zugänglich machen, daher müssen wir einen HTTP-Server installieren; in diesem Fall arbeiten wir mit Apache. Wenn Sie es unter Debian installieren, müssen Sie nur Folgendes ausführen:

$ sudo apt-get install apache2

Sobald die Pakete installiert sind, können wir fortfahren und unser RPM-Repository in wenigen, sehr einfachen Schritten erstellen.

Repository erstellen

Der standardmäßige Apache VirtualHost DocumentRoot erstellt, wenn Apache auf Debian installiert wird, ist /var/www/html . An diesem Punkt können wir wählen, ob wir einen VirtualHost für unser Repository erstellen oder einfach das Repository-Verzeichnis als Teil
des Standardverzeichnisses erstellen. Der Einfachheit halber untersuchen wir in diesem Tutorial die letztere Option:

$ sudo mkdir /var/www/html/repo

Das repo Verzeichnis, das wir mit dem obigen Befehl erstellt haben, innerhalb des standardmäßigen VirtualHost DocumentRoot , wird unsere Pakete hosten und die Basis unseres Repositorys sein. Zur besseren Strukturierung wollen wir nun einige Unterverzeichnisse anlegen,
benannt nach der Distribution, ihrer Version und der Architektur der Pakete, die wir zur Verfügung stellen wollen. Angenommen, wir möchten das Repository auf Fedora 33 x68_64 verwenden , sollten wir den folgenden Befehl ausführen:

$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64

Der nächste Schritt besteht darin, das Repository zu füllen. Alles, was wir tun müssen, ist, die Pakete, die wir verfügbar machen wollen, in das entsprechende Repository-Verzeichnis zu stellen. In diesem Fall werde ich als Beispiel das Repository mit einem Paket füllen, das ich durch Kompilieren des VSCode-Editors aus der Quelle erhalten habe. Das Paket heißt code-1.56.0-1617183449.el8.x86_64.rpm . Nach dem Kopieren sollte unsere Dateistruktur so aussehen:

repo
└── fedora
    └── releases
        └── 33
            └── x86_64
                └── code-1.56.0-1617183449.el8.x86_64.rpm

Wenn unser Repository gefüllt ist, wollen wir nur noch createrepo ausführen Befehl innerhalb des Verzeichnisses, das die Pakete enthält. In diesem Fall würden wir Folgendes ausführen:

$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64

Der Befehl erstellt die Repository-Metadaten in einem Verzeichnis namens repodata , basierend auf den im Zielverzeichnis enthaltenen Paketen und muss jedes Mal neu gestartet werden, wenn das Repository mit neuen Paketen aktualisiert oder alte Pakete entfernt werden. Sobald der Befehl gestartet wurde, sieht unsere Verzeichnisstruktur wie folgt aus:

repo
└── fedora
    └── releases
        └── 33
            └── x86_64
                ├── code-1.56.0-1617183449.el8.x86_64.rpm
                └── repodata
                    ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz
                    ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2
                    ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2
                    ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz
                    ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2
                    ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz
                    └── repomd.xml

Unser Repository wurde erfolgreich erstellt. Jetzt müssen wir unsere Distribution konfigurieren, um sie als Softwarequelle zu verwenden.

Hinzufügen des Repositorys als Softwarequelle

Lassen Sie uns zu unserer RPM-basierten Distribution wechseln und sehen, wie sie konfiguriert wird, um unser benutzerdefiniertes Repository als Softwarequelle zu verwenden. Repository-Konfigurationsdateien befinden sich unter /etc/yum.repos.d Verzeichnis und muss die
.repo haben Verlängerung. Wenn wir in das Verzeichnis schauen, können wir die bereits existierenden sehen:

$ ls /etc/yum/repos.d
fedora-cisco-openh264.repo   fedora-updates-testing-modular.repo
fedora-modular.repo          fedora-updates-testing.repo
fedora.repo                  rpmfusion-free.repo
fedora-updates-modular.repo  rpmfusion-free-updates.repo
fedora-updates.repo          rpmfusion-free-updates-testing.repo

Lassen Sie uns nun unsere benutzerdefinierte Repository-Konfiguration erstellen. In der Datei sollten wir als Mindestinformationen Folgendes bereitstellen:

  • Die Repository-ID
  • Der Repository-Name
  • Eine Repository-Basis-URL
  • Der Repository-Status
  • Ob die GPG-Signatur der Pakete überprüft werden soll oder nicht

Wir speichern solche Informationen in einer Datei namens ownrepo.repo , hier ist der Inhalt:

[ownrepo]
name=Own repository
baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch
enabled=1
gpgcheck=0

Die in Klammern gemeldete Definition ([ownrepo] ) ist die Repository-ID und muss in allen Repository-Definitionen eindeutig sein. Mit dem name key haben wir einen für Menschen lesbaren Namen für das Repository als Zeichenfolge angegeben. Dies ist optional; wenn kein Name angegeben wird, wird die Repository-ID auch als Name verwendet.

Mit der baseurl Schlüssel geben wir eine Liste der URLs für das Repository an. Die URLs müssen durch ein Leerzeichen oder ein Komma getrennt werden. In unserem Beispiel haben wir nur eine einzige URL bereitgestellt, aber Sie können feststellen, dass wir darin zwei Variablen verwendet haben:

  • $releasever
  • $basearch

Die Erweiterung des ersten, $releasever , ergibt die Release-Version des Betriebssystems, in diesem Fall 33 , da wir unser Repository auf einem Fedora 33-System installieren. Die zweite Variable, $basearch , wird in eine Zeichenfolge erweitert, die die Basisarchitektur des Systems darstellt, die in unserem Fall x86_64 ist .

Der enabled Schlüssel erfordert einen booleschen Wert Wert, der bestimmt, ob das Repository als aktiv betrachtet werden soll oder nicht. Der letzte Schlüssel, den wir verwendet haben, ist gpgcheck :Es erfordert auch einen booleschen Wert und wird verwendet, um zu bestimmen, ob eine gpg-Signaturprüfung für die aus dem Repository installierten Pakete durchgeführt werden soll. In unserem Beispiel haben wir die Überprüfung einfach deaktiviert, da das Repository nur für den persönlichen Gebrauch bestimmt ist.

Nachdem unser Repository nun konfiguriert ist, können wir versuchen, den code zu installieren Paket daraus, indem Sie einfach Folgendes ausführen:

$ sudo dnf install code
Own repository                                                                    451 kB/s |  13 kB     00:00
Dependencies resolved.
==================================================================================================================
 Package              Architecture           Version                                Repository               Size
==================================================================================================================
Installing:
 code                 x86_64                 1.56.0-1617183449.el8                  ownrepo                 100 M

Transaction Summary
==================================================================================================================
Install  1 Package

Total download size: 100 M
Installed size: 294 M
Is this ok [y/N]:

Sobald wir die Eingabeaufforderung bejahen und bestätigen, wird das Paket auf unserem System installiert.

Schlussfolgerungen

In diesem Artikel haben wir gelernt, wie einfach es ist, mit createrepo ein benutzerdefiniertes RPM-Repository zu erstellen Utility, und wir haben gesehen, wie man eine dnf-Konfigurationsdatei auf unserer Distribution erstellt, um sie als Softwarequelle zu verwenden. Wir haben eine minimale Teilmenge
der Schlüssel gesehen, die in der Repository-Konfiguration verwendet werden können; eine detailliertere Liste finden Sie in der offiziellen dnf-Dokumentation.


Linux
  1. So erstellen Sie ein Linux-RPM-Paket

  2. So erstellen Sie einen Swap unter Linux

  3. So erstellen Sie einen Systemd-Dienst unter Linux

  4. So erstellen Sie eine Auslagerungsdatei unter Linux

  5. So erstellen Sie einen Benutzer mit einem benutzerdefinierten Home-Verzeichnis in Linux

So erstellen Sie symbolische Links in Linux

So erstellen Sie eine Datei unter Linux

So erstellen Sie Verknüpfungen auf dem Linux-Desktop

So erstellen Sie eine Montage aus Bildern unter Linux

So erstellen Sie einen SSH-Alias ​​unter Linux

So erstellen Sie einen Alias ​​unter Linux