Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
— |
computer:linux:eigenes_yum-repository [2013/01/11 12:43] (aktuell) christian angelegt |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | 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: | ||
+ | <code> | ||
+ | # yum install httpd | ||
+ | # chkconfig httpd on | ||
+ | # service httpd start | ||
+ | </code> | ||
+ | |||
+ | Ggf. muss noch die Firewall dahingehend konfiguriert werden, dass Zugriffe auf den Webserver zugelassen werden: | ||
+ | <code> | ||
+ | # 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 │ │ | ||
+ | │ └─────┘ └───────────┘ │ | ||
+ | │ │ | ||
+ | │ │ | ||
+ | └──────────────────────────────────────────────────────────┘ | ||
+ | </code> | ||
+ | ======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: | ||
+ | <code> | ||
+ | # 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 . | ||
+ | </code> | ||
+ | |||
+ | Im neu angelegten Ordner **repodata** befindet sich unter anderem eine SQLite-Datenbank, die von YUM benötigt wird: | ||
+ | <code> | ||
+ | # ls -A repodata/ | ||
+ | filelists.sqlite.bz2 other.sqlite.bz2 primary.sqlite.bz2 repomd.xml | ||
+ | filelists.xml.gz other.xml.gz primary.xml.gz | ||
+ | </code> | ||
+ | |||
+ | <note important> | ||
+ | Wird SELinux verwendet, wird ein Zugriff auf die verfügbaren Repo-Dateien erstmal unterbunden, weil der SELinux-Dateikontext nicht stimmt: | ||
+ | <code> | ||
+ | # ls -ldZ /var/www/html/repo | ||
+ | drwxr-xr-x. root root system_u:object_r:usr_t:s0 /var/www/html/repo | ||
+ | </code> | ||
+ | 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: | ||
+ | <code> | ||
+ | # semanage fcontext -a -t httpd_sys_content_t "/var/www/html/repo(/.*)?" | ||
+ | # restorecon -R -v /var/www/html/repo | ||
+ | </code> | ||
+ | </note> | ||
+ | ======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: | ||
+ | <code> | ||
+ | # vi /etc/yum.repos.d/local-repo.repo | ||
+ | [local-repo] | ||
+ | name=local-repo | ||
+ | enabled=1 | ||
+ | gpgcheck=0 | ||
+ | baseurl=http://localhost/repo | ||
+ | |||
+ | ESC ZZ | ||
+ | </code> | ||
+ | |||
+ | <note>Auf anderen Host muss der Hostname **localhost** logischerweise durch den FQDN bzw. die IP-Adresse des Repository-Servers ersetzt werden</note> | ||
+ | |||
+ | Yum sollte nun das frisch hinzugefügte Repository verwenden können: | ||
+ | <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | Auf dem frisch eingerichteten Repository steht 1 Paket zur Verfügung. |