Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:linux:eigenes_yum-repository

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.

computer/linux/eigenes_yum-repository.txt · Zuletzt geändert: 2013/01/11 12:43 von christian