Software-Repositories werden normalerweise über das Internet verwendet und können von mehreren Benutzern weltweit aufgerufen werden. Sie können jedoch Ihr eigenes lokales Repository auf Ihrem lokalen Server erstellen und es als Einzelbenutzer verwenden oder den Zugriff auf andere Computer in Ihrem LAN über einen Webserver oder FTP erlauben.
Der Vorteil der Erstellung eines lokalen Repositorys besteht darin, dass Sie keine Internetverbindung benötigen, um Softwarepakete oder Updates zu installieren. Ein weiterer Vorteil ist natürlich die Downloadgeschwindigkeit. Da die Pakete über ein lokales Netzwerk heruntergeladen werden, werden die Updates schnell ausgeführt.
Yellowdog Updater, Modified (YUM) oder Dandified YUM (DNF) sind Softwarepaketmanager, die RPM-basierte Linux-Distributionen verwalten. Mit YUM oder DNF können Sie Computergruppen installieren und aktualisieren, ohne jedes RPM manuell aktualisieren zu müssen.
In diesem Artikel werde ich erklären, wie Sie ein lokales Apache-basiertes YUM/DNF-Repository auf Red Hat Enterprise Linux (RHEL) 8 mithilfe der Installations-DVD oder ISO-Datei einrichten. Außerdem zeige ich Ihnen, wie Sie mithilfe des Apache-Webservers Softwarepakete auf Client-RHEL 8-Rechnern finden und installieren. Wir werden denselben Prozess für NGINX und FTP in zukünftigen Artikeln behandeln.
[Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.]
Voraussetzungen
Sie müssen zwei Red Hat Enterprise Linux 8-Systeme einrichten:einen lokalen Repo-Server und einen Client-Rechner, der das lokale Repository vom lokalen Server verwendet. Das Ergebnis sieht in etwa so aus:
-
Lokaler Repository-Server:RHEL 8 [10.0.0.10]
-
Lokaler Clientcomputer:RHEL 8 [10.0.0.11]
-
RHEL 8-Installations-DVD
-
Apache-Webserver
Erstellen Sie Ihr Repository
Das Erstellen Ihres Repositorys umfasst eine Reihe von Schritten. Gehen wir sie durch.
Schritt 1:Mounten Sie das Red Hat Enterprise Linux 8-Medium
Mounten Sie zunächst das lokale Medium (DVD, USB-Stick usw.), das Red Hat Enterprise Linux 8 enthält. Verwenden Sie die Installations-DVD:
$ sudo mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
Oder mounten Sie das ISO-Image:
$ sudo mount -o loop rhel-8.0-x86_64-dvd.iso /mnt
Schritt 2:Erstellen Sie ein lokales YUM-Repository aus den bereitgestellten Medien
Verschieben Sie die vorhandenen Repo-Dateien, die sich in /etc/yum.repos.d
befinden :
$ sudo mv /etc/yum.repos.d/*.repo /tmp/
Ab diesem Punkt ist es besser, wenn wir als Root-Benutzer fortfahren. Wechseln Sie mit su
zum Superuser Befehl.
Als nächstes erstellen Sie ein Verzeichnis für das Repo:
# mkdir /local_repo
Verwenden Sie dieses Verzeichnis mit Nginx oder Apache, um Dateien über das LAN bereitzustellen.
Erstellen Sie die Konfigurationsdatei des neuen lokalen Repositorys, local-dvdrom.repo
, unter /etc/yum.repos.d
Verzeichnis:
# touch /etc/yum.repos.d/local-dvdrom.repo
# chmod u+rw,g+r,o+r /etc/yum.repos.d/local-dvdrom.repo
Schritt 3:Medieninhalte in das lokale Verzeichnis kopieren
Kopieren Sie die ISO-Dateien lokal unter /local_repo
Verzeichnis:
# cd /mnt
# tar cvf - . | (cd /local_repo/; tar xvf -)
Warten Sie, bis die Dateien kopiert wurden, und überprüfen Sie dann mit:
, ob die Dateien kopiert wurden
# ls -l /local_repo/
total 56
dr-xr-xr-x. 4 root root 38 Apr 4 2019 AppStream
dr-xr-xr-x. 4 root root 38 Apr 4 2019 BaseOS
dr-xr-xr-x. 3 root root 18 Apr 4 2019 EFI
-r--r--r--. 1 root root 8266 Mar 1 2019 EULA
-r--r--r--. 1 root root 1455 Apr 4 2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar 1 2019 GPL
dr-xr-xr-x. 3 root root 76 Apr 4 2019 images
dr-xr-xr-x. 2 root root 256 Apr 4 2019 isolinux
-r--r--r--. 1 root root 103 Apr 4 2019 media.repo
-r--r--r--. 1 root root 1669 Mar 1 2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 5134 Mar 1 2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1796 Apr 4 2019 TRANS.TBL
Schritt 4:Konfigurieren Sie das lokale YUM/DNF-Repository
Bearbeiten Sie die zuvor erstellte Repo-Konfigurationsdatei:
# vim /etc/yum.repos.d/local-dvdrom.repo
Fügen Sie diese Konfiguration ein:
[LocalRepo_BaseOS]
name=LocalRepo_BaseOS
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LocalRepo_AppStream]
name=LocalRepo_AppStream
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Installieren Sie die erforderlichen Pakete zum Erstellen, Konfigurieren und Verwalten des lokalen Repositorys:
# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream 94 MB/s | 5.3 MB 00:00
LocalRepo_BaseOS 97 MB/s | 2.2 MB 00:00
repo id repo name status
LocalRepo_AppStream LocalRepo_AppStream 4,672
LocalRepo_BaseOS LocalRepo_BaseOS 1,658
# yum install createrepo yum-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:02:33 ago on Sat 05 Oct 2019 09:52:46 PM UTC.
Package dnf-utils-4.0.2.2-3.el8.noarch is already installed.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
createrepo_c x86_64 0.11.0-1.el8 LocalRepo_AppStream 76 k
Installing dependencies:
createrepo_c-libs x86_64 0.11.0-1.el8 LocalRepo_AppStream 101 k
drpm x86_64 0.3.0-14.el8 LocalRepo_AppStream 71 k
Transaction Summary
================================================================================
Install 3 Packages
Total size: 249 k
Installed size: 556 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : drpm-0.3.0-14.el8.x86_64 1/3
Installing : createrepo_c-libs-0.11.0-1.el8.x86_64 2/3
Installing : createrepo_c-0.11.0-1.el8.x86_64 3/3
Running scriptlet: createrepo_c-0.11.0-1.el8.x86_64 3/3
Verifying : createrepo_c-0.11.0-1.el8.x86_64 1/3
Verifying : createrepo_c-libs-0.11.0-1.el8.x86_64 2/3
Verifying : drpm-0.3.0-14.el8.x86_64 3/3
Installed products updated.
Installed:
createrepo_c-0.11.0-1.el8.x86_64 createrepo_c-libs-0.11.0-1.el8.x86_64
drpm-0.3.0-14.el8.x86_64
Complete!
Führen Sie schließlich createrepo
aus Befehl:
# createrepo /local_repo/
Directory walk started
Directory walk done - 6647 packages
Temporary output repo path: /local_repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished
Schritt 5:Testen und verifizieren Sie Ihr lokales Repository
In diesem Schritt bereinigen Sie die temporären Repository-Dateien und überprüfen, ob das lokale Repository aktiviert ist:
# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed
# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream 120 MB/s | 5.3 MB 00:00
LocalRepo_BaseOS 103 MB/s | 2.2 MB 00:00
repo id repo name status
LocalRepo_AppStream LocalRepo_AppStream 4,672
LocalRepo_BaseOS LocalRepo_BaseOS 1,658
Überprüfen Sie, ob das lokale Repository erstellt wurde:
# ls /local_repo/repodata/
26617821a5263fb13c7a49cc5e2d0b979b926eb17b9b4ed0b7df624e04c272f2-other.sqlite.bz2
5626e6dd41648dc6395def6889f4cc0e7f1006bb7d7eca748c9abd4c67fa5b9b-other.xml.gz
6290a72e46a90f98896c14f7664440de10c798d158ce0afe5f15a9f3896b7824-primary.xml.gz
a5c265589796231ed91b8b25a0473d05915bf62496495a004d321d042b26360c-filelists.sqlite.bz2
c8b51f43bdaa4f14cd5b083851cef1068e9284fa6557eb4552ba2ae22e7f72d5-primary.sqlite.bz2
ed21f77d28e263df02739a4bd55eb7247ffd0531c871bfe677d4b205dbffd5e8-filelists.xml.gz
repomd.xml
Sie können sehen, dass das lokale Repository Dateien generiert hat, also ist an dieser Stelle alles in Ordnung.
Wenn Sie die obige Befehlsausgabe sorgfältig lesen, sehen Sie die Warnmeldung This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register
. Wenn Sie diese Meldung beim Ausführen von dnf
unterdrücken oder verhindern möchten oder yum
bearbeiten Sie dann die Datei /etc/yum/pluginconf.d/subscription-manager.conf
:
# vim /etc/yum/pluginconf.d/subscription-manager.conf
und ändern Sie den Parameter enabled=1
zu enabled=0
:
[main]
enabled=0
Richten Sie Ihren Apache-Webserver ein
Wie ich bereits erwähnt habe, behandelt dieser Artikel die Einrichtung Ihres eigenen Repositorys mit dem Apache-Webserver. Lassen Sie uns Schritt für Schritt durch die Installation und Konfiguration von Apache gehen, um Ihr Repository zu bedienen.
Apache installieren
Um den httpd
zu installieren (Apache) Paket mit YUM:
# yum install httpd
Last metadata expiration check: 3:38:03 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
httpd x86_64 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 1.4 M
Installing dependencies:
apr x86_64 1.6.3-9.el8 LocalRepo_AppStream 125 k
apr-util x86_64 1.6.1-6.el8 LocalRepo_AppStream 105 k
httpd-filesystem noarch 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 34 k
httpd-tools x86_64 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 101 k
mod_http2 x86_64 1.11.3-1.module+el8+2443+605475b7 LocalRepo_AppStream 156 k
mailcap noarch 2.1.48-3.el8 LocalRepo_BaseOS 39 k
redhat-logos-httpd noarch 80.7-1.el8 LocalRepo_BaseOS 25 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 LocalRepo_AppStream 25 k
apr-util-openssl x86_64 1.6.1-6.el8 LocalRepo_AppStream 27 k
Enabling module streams:
httpd 2.4
Transaction Summary
=========================================================================================
Install 10 Packages
Total download size: 2.0 M
Installed size: 5.5 M
Is this ok [y/N]:
Apache so konfigurieren, dass er beim Booten automatisch startet
Sobald Apache installiert ist, starten und aktivieren Sie httpd
Dienst, um beim Booten automatisch zu starten und seinen Status mit den folgenden Befehlen zu überprüfen:
# systemctl start httpd
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disa>
Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
Main PID: 16880 (httpd)
Tasks: 213 (limit: 2348)
Memory: 7.6M
CGroup: /system.slice/httpd.service
├─16880 /usr/sbin/httpd -DFOREGROUND
├─16881 /usr/sbin/httpd -DFOREGROUND
├─16883 /usr/sbin/httpd -DFOREGROUND
├─16884 /usr/sbin/httpd -DFOREGROUND
└─16885 /usr/sbin/httpd -DFOREGROUND
Oct 06 10:15:47 server systemd[1]: Starting Apache HTTP Server...
Oct 06 10:15:47 httpd[16880]: AH00558: httpd: Could not reliably determine the>
Oct 06 10:15:47 server httpd[16880]: Server configured, listening on: port 80
Oct 06 10:15:47 server systemd[1]: Started The Apache HTTP Server.
Firewall konfigurieren
Als nächstes konfigurieren Sie die Firewall so, dass Apache erreicht werden kann:
# firewall-cmd --zone=public --permanent --add-service=http
success
# firewall-cmd --zone=public --permanent --add-service=https
success
# firewall-cmd --reload
success
Stellen Sie sicher, dass Apache betriebsbereit ist
Sie können jetzt überprüfen, ob Ihr Apache-Server betriebsbereit ist, indem Sie zu localhost
gehen URL in Ihrem Webbrowser. Die Standard-Apache-Webseite http://localhost/
sollte angezeigt werden.
Apache konfigurieren
Um Apache zu konfigurieren, öffnen Sie die Konfigurationsdatei:
# vim /etc/httpd/conf/httpd.conf
Suchen Sie nach dem Öffnen nach DocumentRoot
Zeile und ändern Sie sie in:
DocumentRoot "/local_repo"
Ändern Sie dann den /var/www/http
Verzeichnisabschnitt:
<Directory "/local_repo">
Options All Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Testen und bereinigen
Starten Sie nun den Apache-Dienst erneut und testen Sie seinen Status:
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disab>
Active: active (running) since Sun 2019-10-06 14:06:34 UTC; 7s ago
Docs: man:httpd.service(8)
Main PID: 5402 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 11528)
Memory: 39.3M
CGroup: /system.slice/httpd.service
├─5402 /usr/sbin/httpd -DFOREGROUND
├─5403 /usr/sbin/httpd -DFOREGROUND
├─5404 /usr/sbin/httpd -DFOREGROUND
├─5405 /usr/sbin/httpd -DFOREGROUND
└─5406 /usr/sbin/httpd -DFOREGROUND
Oct 06 14:06:34 server systemd[1]: Starting The Apache HTTP Server...
Oct 06 14:06:34 server httpd[5402]: AH00558: httpd: Could not reliably determine the ser>
Oct 06 14:06:34 server httpd[5402]: Server configured, listening on: port 80
Oct 06 14:06:34 server systemd[1]: Started The Apache HTTP Server.
Alles ist gut. Entfernen Sie die Willkommensseite, damit Sie die Repo-Dateien bereitstellen können:
# rm -rf /etc/httpd/conf.d/welcome.conf
Testen Sie jetzt httpd
und Apache neu starten:
# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
# systemctl restart httpd
Berechtigungen ändern und SELinux festlegen
Fahren Sie mit der Sicherheitskonfiguration fort, indem Sie die Berechtigungen für local_repo
ändern Verzeichnis und Konfigurieren von SELinux. So ändern Sie die Berechtigungen:
# setfacl -R -m u:httpd:rwx /local_repo/
Überprüfen Sie dann, ob SELinux Folgendes erzwingt:
# getenforce
Enforcing
Wenn es Enforcing
ist , geben Sie Folgendes ein:
# chcon -Rt httpd_sys_content_t /local_repo/
Wenn SELinux nicht auf Enforcing eingestellt ist, werden die Dateien nicht aus dem Repo bereitgestellt.
# setenforce enforcing
Und machen Sie die Änderung dauerhaft, indem Sie die Datei /etc/sysconfig/selinux bearbeiten und den folgenden Wert festlegen:
SELINUX=enforcing
Richten Sie den Client ein
Konfigurieren Sie nun das Repository des Red Hat Enterprise Linux 8-Clientcomputers.
Repository hinzufügen
Fügen Sie auf dem Client-Rechner die lokalen Repos vom Server zur YUM-Konfiguration des Clients hinzu:
$ sudo vim /etc/yum.repos.d/local-rhel8.repo
Fügen Sie dann die folgende Konfiguration ein (achten Sie darauf, die Server-IP-Adresse entsprechend Ihrer Einrichtung zu ändern):
[LocalServerRepo]
name=LocalServerRepo
enabled=1
gpgcheck=0
baseurl=[http://](http://10.0.0.10/)[**10.0.0.10**](http://10.0.0.10/)[/](http://10.0.0.10/)
Repo testen
Testen Sie das LocalServerRepo
durch Installieren eines Pakets. Zum Beispiel:
$ sudo yum install mc
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:01:42 ago on Sun 06 Oct 2019 02:14:03 PM UTC.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mc x86_64 1:4.8.19-9.el8 LocalServerRepo 1.9 M
Transaction Summary
================================================================================
Install 1 Package
Total download size: 1.9 M
Installed size: 6.8 M
Is this ok [y/N]: y
Downloading Packages:
mc-4.8.19-9.el8.x86_64.rpm 34 MB/s | 1.9 MB 00:00
--------------------------------------------------------------------------------
Total 32 MB/s | 1.9 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : mc-1:4.8.19-9.el8.x86_64 1/1
Running scriptlet: mc-1:4.8.19-9.el8.x86_64 1/1
Verifying : mc-1:4.8.19-9.el8.x86_64 1/1
Installed products updated.
Installed:
mc-1:4.8.19-9.el8.x86_64
Complete!
Das ist großartig! Alles funktioniert wie erwartet. Sie haben jetzt ein Apache-basiertes lokales YUM/DNF-Repository in Red Hat Enterprise Linux 8, indem Sie die Installations-DVD oder ISO-Datei verwenden.