Kapitel 6. Hochladen und Pflege von angepassten Paketen

Abhängig vom verwendeten Red Hat Network-Service gibt es zwei Verfahren zum Hochladen von Paketen auf private Channels.
RHN Proxy Server-Kunden verwenden die RHN Package Manager-Applikation, welche Paket-Header-Informationen an die zentralen Red Hat Network-Servern sendet und das Paket selbst im lokalen Repository des Proxys ablegt, welcher den RHN Package Manager aufgerufen hat.
RHN Satellite Server-Kunden verwenden die RHN Push-Applikation, welche Paket-Header-Informationen an den lokalen RHN Satellite Server sendet und das Paket im lokalen Repository des Satellite ablegt, welcher RHN Push aufgerufen hat.
Dieses Kapitel beschreibt beide Tools im Detail.

Warnung

Wenn Sie sowohl RHN Proxy Server als auch RHN Satellite Server verwenden, verwenden Sie nur RHN Push. Die Proxy-Satellite-Kombination erfordert, dass angepasste Pakete und Channels nur auf den Satellite hochgeladen werden. Von dort holen sich die Proxy-Server die Pakete und verteilen diese an die Client-Systeme.

6.1. Pakete auf den RHN Proxy Server hochladen

RHN Package Manager ermöglicht es einem Unternehmen, angepasste Pakete in Verbindung mit einem privaten RHN-Channel mittels RHN Proxy Server anzubieten. Wenn Sie möchten, dass der RHN Proxy Server nur offizielle Red Hat Enterprise Linux-Pakete anbietet, dann brauchen Sie den RHN Package Manager nicht zu installieren.
Um den RHN Package Manager verwenden zu können, installieren Sie das rhns-proxy-package-manager-RPM-Paket und alle abhängigen Pakete. Dieses Paket ist für registrierte RHN Proxy Server-Systeme erhältlich und wird mittels up2date rhns-proxy-package-manager installiert.

Anmerkung

Es wird nur die Header-Information für die Pakete auf die RHN-Server hochgeladen. Die Header werden für das Auflösen von Paketabhängigkeiten für die Client-Systeme durch RHN benötigt. Die eigentlichen Paketdateien (*.rpm) werden auf dem RHN Proxy Server gespeichert. Aus diesem Grund können angepasste Pakete nicht von der RHN-Website heruntergeladen werden, obwohl diese dort aufgelistet sind. Sie müssen vom Client-System mittels up2date abgerufen werden.

6.1.1. Den RHN Package Manager konfigurieren und verwenden

Bevor Sie den RHN Package Manager dazu verwenden können, Pakete zum RHN hochzuladen, müssen Sie die Pakete zuerst manuell auf den Proxy-Server selbst kopieren. Sie können beispielsweise von einem Entwicklungshost aus scp verwenden:
scp foo.rpm root@rhnproxy.example.com:/tmp
Wenn Sie den RHN Package Manager dazu verwenden, die Pakete zum Red Hat Network hochzuladen, verweisen Sie auf die Dateien, die Sie zuvor auf den Server kopiert haben.

Anmerkung

Erstellen Sie zumindest einen privaten Channel, um angepasste Pakete vor dem Hochladen zum Red Hat Network zu erhalten, da ein Channel für Systeme notwendig ist, um die Pakete abfragen zu können.
Der folgende Befehl lädt die Paket-Header auf die RHN-Server hoch und kopiert die Pakete in das RHN Proxy Server-Repository:
rhn_package_manager -c label_of_private_channelpkg-list
label_of_private_channel ist der angepasste Channel, der erstellt wurde, um diese Pakete abzurufen. Bitte achten Sie darauf, dass Sie genau das Channel-Label verwenden, welches bei der Erstellung festgelegt wurde. Wenn Sie einen oder mehrere Channel festgelegt haben (unter Verwendung von -c oder --channel), werden die hochgeladenen Paket-Header mit allen festgelegten Channeln verlinkt. Wenn Sie keinen Channel festlegen, dann werden die Pakete im Keine Channels-Abschnitt der Paket-Management-Seite abgelegt. Werfen Sie einen Blick auf Abschnitt 4.6, »Pakete zu Software-Channels hinzufügen« für Instruktionen, wie die Pakete neu zugeordnet werden können.
Die pkg-list-Referenz stellt die Liste von Paketen dar, die hochgeladen werden sollen. Diese Pakete müssen bereits tatsächlich auf den Proxy-Host kopiert worden sein. Sie können auch die -d-Option verwenden, um das lokale Verzeichnis festzulegen, welches die Pakete enthält, die zum Channel hinzugefügt werden sollen. Der RHN Package Manager kann die Paketliste auch von Standardeingabe lesen (mittels --stdin).
Andere Optionen werden in einer Konfigurationsdatei festgelegt, wie beispielsweise die Red Hat Network Server-URL, der HTTP-Proxy-Benutzername und das Passwort (wenn Ihr HTTP-Proxy Authentifizierung benötigt) und das Top-Verzeichnis, in welchem sich die Pakete befinden. Diese spezielle Konfiguration darf nicht bearbeitet werden und befindet sich in /etc/rhn/default/rhn_proxy_package_manager.conf. Sie können die Auswahl in dieser Standardkonfigurationsdatei entweder durch Einstellungen in der Haupt-Konfigurationsdatei /etc/rhn/rhn.conf außer Kraft setzen oder auch mittels Befehlszeilenoptionen, die Sie an den RHN Package Manager übergeben.
Parameter, die in dieser Datei nicht gesetzt sind, werden von .rhn_package_manager im Stammverzeichnis des aktuell angemeldeten Benutzers gelesen und abschließend von /etc/rhn/rhn_package_manager.conf. Überprüfen Sie, dass alle diese Dateien die entsprechenden Berechtigungen besitzen, sodass nicht jeder diese Dateien lesen kann.
Nachdem Sie die Pakete hochgeladen haben, überprüfen Sie, dass das lokale Verzeichnis mit dem RHN-Server-Image der Channels übereinstimmt:
rhn_package_manager -s -c name_of_private_channel
Diese -s-Option listet alle fehlenden Pakete auf, die auf den RHN-Server hochgeladen wurden, sich jedoch nicht im lokalen Verzeichnis befinden. Sie müssen ein Organization Administrator sein, um diese Option verwenden zu können. Sie werden nach Ihrem RHN-Benutzernamen und -Passwort gefragt.
Die --copyonly-Option kopiert die im Parameter aufgelistete Datei in den spezifischen Channel, ohne sie auf den Satellite hochzuladen. Dies ist sehr nützlich, wenn einem Channel auf dem RHN Proxy Server ein Paket fehlt und Sie nicht alle Pakete neu importieren möchten.
rhn_package_manager -c channel-name --copyonly /path/to/missing/file
Sie können den RHN Package Manager auch dazu verwenden, eine Liste von Paketen in einem Channel abzufragen, so wie diese vom RHN-Server gespeichert werden:
rhn_package_manager -l -c name_of_private_channel
Die -l-Option listet den Paketnamen, die Versionsnummer, die Release-Nummer, die Architektur und den Channel-Namen für jedes Paket in den angegebenen Channels auf. Werfen Sie einen Blick auf Tabelle 6.1, »rhn_package_manager-Optionen« für zusätzliche Optionen.
Tabelle 6.1, »rhn_package_manager-Optionen« ist eine Zusammenfassung aller Befehlszeilenoptionen für den RHN Package Manager (rhn_package_manager):

Tabelle 6.1. rhn_package_manager-Optionen

Option Beschreibung
-v, --verbose Erhöht die Ausführlichkeit von Mitteilungen der Standardausgabe.
-d, --dir DIRECTORY_NAME Verarbeitet Pakete aus diesem Verzeichnis.
-c, --channel CHANNEL_NAME Legt den Channel fest, welcher Pakete erhalten soll. Mehrere Channels können angegeben werden, indem mehrmals die Option -c verwendet wird (z.B.: -c channel_one -c channel_two)
-n, --count NUMBER Verarbeitet diese Anzahl an Headern pro Aufruf — Standard ist 32.
-l, --list Listet die Pakete in den festgelegten Channeln/im festgelegten Channel auf.
-s, --sync Überprüft, ob das lokale Verzeichnis mit dem Server übereinstimmt.
-p, --printconf Druckt die aktuelle Konfiguration und beendet.
--newest Pusht lediglich diejenigen Pakete, die neuer sind als die Pakete auf dem Server. Dabei sollten Sie beachten, dass Source-Pakete dabei eine Ausnahme darstellen, da ihre Versionen niemals miteinander verglichen werden. Ihre 'Neuheit' oder Aktualität hängt jeweils von den zugehörigen Binärpaketen ab. Wenn Sie diese Option mit dem RHN Package Manager und nur einem Source-Paket anwenden, wird das Source-Paket zwar hochgeladen, erscheint aber nicht auf der RHN-Web-Oberfläche, bis das zugehörige Binärpaket hochgeladen wurde. Stellen Sie dies --source gegenüber. Wenn Sie --source --newest gemeinsam verwenden, dann wird das eigenständige Source-Paket mit neueren Paketen aktualisiert und es muss nicht zuerst ein Binärpaket hochgeladen werden.
--source Lädt die angezeigten Source-Pakete hoch. Dadurch werden diese als einfache, alleinstehende Pakete behandelt und nicht als spezielle Source-Pakete, die mit einem anderen, bereits bestehenden Binärpaket in Zusammenhang stehen. Sie können dies beispielsweise dazu verwenden, wenn Sie Applikations-Quellcode unter Entwicklern und Testern außerhalb des regulären Source-Control-Managements verteilen möchten.
--stdin Liest die Paketnamen von der Standardeingabe (stdin).
--nosig Bricht nicht ab, wenn Pakete nicht signiert sind.
--no-ssl Schaltet SSL ab (nicht empfehlenswert).
--stdin Liest die Paketnamen von der Standardeingabe (stdin).
--username USERNAME Gibt den RHN-Benutzernamen an. Wenn dieser nicht angegeben wird, werden Sie nach dem Benutzernamen eines gültigen Channel-Administrators gefragt.
--password PASSWORD Gibt das RHN-Passwort an. Wenn dieses nicht angegeben wird, werden Sie nach dem Passwort eines gültigen Channel-Administrators gefragt.
--dontcopy Kopiert die Pakete nach dem Hochladen nicht an die endgültige Stelle im Paketbaum.
--copyonly Kopiert Pakete lediglich und importiert sie nicht erneut.
--test Zeigt nur eine Liste der zu pushenden Pakete an.
-?, --help Zeigt den Hilfebildschirm mit einer Liste von Optionen an.
--usage Beschreibt kurz die verfügbaren Optionen.
--copyonly Kopiert nur Pakete

Anmerkung

Eine Beschreibung dieser Befehlszeilenoptionen finden Sie auch auf der Handbuchseite von rhn_package_manager: man rhn_package_manager.