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.