Ein eigenes YUM-Repository kann sich als sehr nützlich erweisen, wenn man über eine größere Anzahl an Hosts verfügt und selbst paketierte Software zeitsparend verteilen möchte. Anstatt die Übersetzung auf jedem Host manuell durchzuführen, wird die Software in einem RPM-Paket zusammengefasst - diese Pakete können später kinderleicht verteilt werden. ======Webserver====== Zur Verteilung der Pakete wird ein Webserver, idealerweise Apache benötigt. Die folgende Befehle installieren Apache und konfigurieren ihn dahingehend, dass er bei jedem Boot automatisch gestartet wird: # yum install httpd # chkconfig httpd on # service httpd start Ggf. muss noch die Firewall dahingehend konfiguriert werden, dass Zugriffe auf den Webserver zugelassen werden: # system-config-firewall-tui ... ┌───────────────────┤ Trusted Dienste ├────────────────────┐ │ │ │ Hier können Sie einstellen, welche Dienste als trusted │ │ eingestuft sind. Trusted Dienste sind von allen Rechnern │ │ oder Netzwerken erreichbar. │ │ │ │ [ ] Sicheres WWW (HTTPS) ↑ │ │ [ ] TFTP ▒ │ │ [ ] TFTP-Client ▒ │ │ [ ] Virtuelle-Maschine-Management ▒ │ │ [ ] Virtuelle-Maschine-Management (TLS) ▮ │ │ [*] WWW (HTTP) ↓ │ │ │ │ ┌─────┐ ┌───────────┐ │ │ │ Vor │ │ Schließen │ │ │ └─────┘ └───────────┘ │ │ │ │ │ └──────────────────────────────────────────────────────────┘ ======Repository====== Das Repository besteht im wesentlichen aus einem einfachen Ordner, der vom Webserver zur Verfügung gestellt wird. In diesen Ordner werden die zu verteilenden RPM-Pakete kopiert. Anschließend werden mithilfe des Tools **createrepo** (//das ggf. noch installiert werden muss//) noch einige XML- und SQLite-Dateien erstellt, die zur Verwendung mit YUM benötigt werden: # yum install createrepo # mkdir /var/www/html/repo # cp -v /home/dev/rpmbuild/RPMS/*.rpm /var/www/html/repo/ # cd /var/www/html/repo # createrepo --database . Im neu angelegten Ordner **repodata** befindet sich unter anderem eine SQLite-Datenbank, die von YUM benötigt wird: # ls -A repodata/ filelists.sqlite.bz2 other.sqlite.bz2 primary.sqlite.bz2 repomd.xml filelists.xml.gz other.xml.gz primary.xml.gz Wird SELinux verwendet, wird ein Zugriff auf die verfügbaren Repo-Dateien erstmal unterbunden, weil der SELinux-Dateikontext nicht stimmt: # ls -ldZ /var/www/html/repo drwxr-xr-x. root root system_u:object_r:usr_t:s0 /var/www/html/repo Das folgende Kommando definiert, dass alle Dateien unterhalb von **/var/www/html/repo** immer als Webserver-Daten (''httpd_sys_content_t'') gelabelt werden. Der zweite Befehl labelt die Dateien um, sodass der Zugriff erlaubt wird: # semanage fcontext -a -t httpd_sys_content_t "/var/www/html/repo(/.*)?" # restorecon -R -v /var/www/html/repo ======Einbindung im Client====== Damit das frisch angelegte Repository auch von einem Client verwendet werden kann, wird eine entsprechende Yum-Konfigurationsdatei unterhalb von **/etc/yum.repos.d** angelegt: # vi /etc/yum.repos.d/local-repo.repo [local-repo] name=local-repo enabled=1 gpgcheck=0 baseurl=http://localhost/repo ESC ZZ Auf anderen Host muss der Hostname **localhost** logischerweise durch den FQDN bzw. die IP-Adresse des Repository-Servers ersetzt werden Yum sollte nun das frisch hinzugefügte Repository verwenden können: # yum repolist local-repo Loaded plugins: product-id, refresh-packagekit, security, subscription-manager Updating certificate-based repositories. repo id repo name status local-repo local-repo 1 repolist: 1 Auf dem frisch eingerichteten Repository steht 1 Paket zur Verfügung.