So richten Sie ein lokales HTTP-Yum-Repository unter CentOS 7 ein
Ein Software-Repository (kurz "Repo") ist ein zentraler Dateispeicherort zur Aufbewahrung und Pflege von Softwarepaketen, von dem aus Benutzer Pakete abrufen und auf ihren Rechnern installieren können.
Repositories werden häufig auf Servern in einem Netzwerk gespeichert, z. B. im Internet, auf die mehrere Benutzer zugreifen können. Sie können jedoch ein lokales Repository auf Ihrem Computer erstellen und konfigurieren und als einzelner Benutzer darauf zugreifen oder den Zugriff auf andere Computer in Ihrem LAN (Local Area Network) zulassen.
Ein Vorteil der Einrichtung eines lokalen Repositorys besteht darin, dass Sie keine Internetverbindung benötigen, um Softwarepakete zu installieren.
YUM (Yellowdog Updater Modified) ist ein weit verbreitetes Paketverwaltungstool für RPM (RedHat Package Manager) auf Basis von Linux-Systemen, das die Installation von Software unter Red Hat/CentOS Linux erleichtert.
In diesem Artikel erklären wir Ihnen, wie Sie ein lokales YUM-Repository über HTTP (Nginx)-Webserver auf CentOS 7 VPS einrichten und wie Sie Softwarepakete auf Client-CentOS 7-Computern finden und installieren.
Unsere Testumgebung
Yum HTTP Repository Server: CentOS 7 [192.168.0.100]
Client Machine: CentOS 7 [192.168.0.101]
Schritt 1: Nginx-Webserver installieren
1. Beginnen Sie zunächst mit der Installation des Nginx-HTTP-Servers aus dem EPEL-Repository mit dem YUM-Paketmanager wie folgt.
# yum install epel-release
yum install nginx
2. Sobald Sie den Nginx-Webserver installiert haben, können Sie ihn zum ersten Mal starten und aktivieren, dass er beim Systemstart automatisch startet.
systemctl start nginx
systemctl enable nginx
systemctl status nginx
3. Als nächstes müssen Sie Port 80 und 443 öffnen, um Webverkehr zum Nginx-Dienst zuzulassen, und die Regeln der Systemfirewall aktualisieren, um eingehende Pakete auf HTTP und HTTPS mit den folgenden Befehlen zuzulassen.
# firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
4. Jetzt können Sie mit der folgenden URL bestätigen, dass Ihr Nginx-Server betriebsbereit ist: Wenn Sie die Standard-Nginx-Webseite sehen, ist alles in Ordnung.
http://SERVER_DOMAIN_NAME_OR_IP
Schritt 2: Erstellen eines lokalen Yum-Repositorys
5. In diesem Schritt müssen Sie die erforderlichen Pakete zum Erstellen, Konfigurieren und Verwalten Ihres lokalen Repositorys installieren.
# yum install createrepo yum-utils
6. Erstellen Sie als Nächstes die erforderlichen Verzeichnisse (yum-Repositories), in denen Pakete und alle zugehörigen Informationen gespeichert werden.
# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
7. Verwenden Sie dann das reposync-Tool, um CentOS YUM-Repositorys wie gezeigt mit den lokalen Verzeichnissen zu synchronisieren.
# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
Beispiel-Ausgabe
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.fibergrid.in
* epel: mirror.xeonbd.com
* extras: mirrors.fibergrid.in
* updates: mirrors.fibergrid.in
base/7/x86_64/group | 891 kB 00:00:02
No Presto metadata available for base
(1/9911): 389-ds-base-snmp-1.3.7.5-18.el7.x86_64.rpm | 163 kB 00:00:02
(2/9911): 389-ds-base-devel-1.3.7.5-18.el7.x86_64.rpm | 267 kB 00:00:02
(3/9911): ElectricFence-2.2.2-39.el7.i686.rpm | 35 kB 00:00:00
(4/9911): ElectricFence-2.2.2-39.el7.x86_64.rpm | 35 kB 00:00:00
(5/9911): 389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm | 695 kB 00:00:04
(6/9911): GConf2-devel-3.2.6-8.el7.i686.rpm | 110 kB 00:00:00
(7/9911): GConf2-devel-3.2.6-8.el7.x86_64.rpm | 110 kB 00:00:00
(8/9911): GConf2-3.2.6-8.el7.i686.rpm | 1.0 MB 00:00:06
In den obigen Befehlen wird die Option:
-g– ermöglicht das Entfernen von Paketen, die die GPG-Signaturprüfung nach dem Herunterladen nicht bestehen.-l– aktiviert die Unterstützung des Yum-Plugins.-d– ermöglicht das Löschen von lokalen Paketen, die nicht mehr im Repository vorhanden sind.-
-m– ermöglicht das Herunterladen von comps.xml Dateien. --repoid– gibt die Repository-ID an.--newest-only– Weisen Sie reposync an, nur die neueste Version jedes Pakets in den Repositorys abzurufen.--download-metadata– ermöglicht das Herunterladen aller nicht standardmäßigen Metadaten.--download_path– gibt den Pfad zum Herunterladen von Paketen an.
8. Überprüfen Sie als Nächstes den Inhalt Ihrer lokalen Verzeichnisse, um sicherzustellen, dass alle Pakete lokal synchronisiert wurden.
# ls -l /var/www/html/repos/base/
ls -l /var/www/html/repos/base/Packages/
ls -l /var/www/html/repos/centosplus/
ls -l /var/www/html/repos/centosplus/Packages/
ls -l /var/www/html/repos/extras/
ls -l /var/www/html/repos/extras/Packages/
ls -l /var/www/html/repos/updates/
ls -l /var/www/html/repos/updates/Packages/
9. Erstellen Sie nun ein neues Repodata für die lokalen Repositories, indem Sie die folgenden Befehle ausführen, wobei das Flag -g verwendet wird, um die Paketgruppeninformationen mit der angegebenen .xml Datei zu aktualisieren.
# createrepo -g comps.xml /var/www/html/repos/base/
createrepo -g comps.xml /var/www/html/repos/centosplus/
createrepo -g comps.xml /var/www/html/repos/extras/
createrepo -g comps.xml /var/www/html/repos/updates/
10. Um die Anzeige von Repositories und Paketen in ihnen über einen Webbrowser zu ermöglichen, erstellen Sie einen Nginx-Serverblock, der auf das Stammverzeichnis Ihrer Repositories verweist, wie gezeigt.
# vim /etc/nginx/conf.d/repos.conf
Fügen Sie die folgende Konfigurationsdatei repos.conf hinzu.
server {
listen 80;
server_name repos.test.lab; #change test.lab to your real domain
root /var/www/html/repos;
location / {
index index.php index.html index.htm;
autoindex on; #enable listing of directory index
}
}
Speichern Sie die Datei, und schließen Sie sie.
11. Starten Sie dann Ihren Nginx-Server neu und zeigen Sie die Repositories in einem Webbrowser unter der folgenden URL an.
http://repos.test.lab
Schritt 3: Erstellen eines Cron-Jobs zum Synchronisieren und Erstellen von Repositorys
12. Fügen Sie als Nächstes einen Cron-Job hinzu, der Ihre lokalen Repos automatisch mit den offiziellen CentOS-Repos synchronisiert, um die Updates und Sicherheitspatches abzurufen.
# vim /etc/cron.daily/update-localrepos
Fügen Sie diese Befehle dem Skript hinzu.
#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done
Speichern Sie das Skript, schließen Sie es, und legen Sie die entsprechenden Berechtigungen fest.
# chmod 755 /etc/cron.daily/update-localrepos
Schritt 4: Einrichten des lokalen Yum-Repositorys auf Clientcomputern
13. Fügen Sie nun auf Ihren CentOS-Clientcomputern Ihre lokalen Repositorys zur YUM-Konfiguration hinzu.
# vim /etc/yum.repos.d/local-repos.repo
Kopieren Sie die untenstehende Konfiguration und fügen Sie sie in die Datei local-repos.repo ein (nehmen Sie ggf. Änderungen vor).
[local-base]
name=CentOS Base
baseurl=http://repos.test.lab/base/
gpgcheck=0
enabled=1
[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.test.lab/centosplus/
gpgcheck=0
enabled=1
[local-extras]
name=CentOS Extras
baseurl=http://repos.test.lab/extras/
gpgcheck=0
enabled=1
[local-updates]
name=CentOS Updates
baseurl=http://repos.test.lab/updates/
gpgcheck=0
enabled=1
Speichern Sie die Datei, und beginnen Sie mit der Verwendung Ihrer lokalen YUM-Spiegelserver.
14. Führen Sie als Nächstes den folgenden Befehl aus, um Ihre lokalen Repositorys in der Liste der verfügbaren YUM-Repositorys auf den Clientcomputern anzuzeigen.
# yum repolist
OR
yum repolist all
Das ist alles! In diesem Artikel haben wir erklärt, wie Sie ein lokales YUM-Repository unter CentOS 7 einrichten. Wir hoffen, dass Sie diesen Leitfaden nützlich fanden. Wenn Sie Fragen oder andere Gedanken haben, verwenden Sie das Kommentarformular unten.


