Wie emulier ich die Funktion „Replaces:“ eines Debian-Pakets in einem RPM?

Wie emulier ich die Funktion „Replaces:“ eines Debian-Pakets in einem RPM?

Ich muss NSCD, den Name Service Caching Daemon, verwenden, um die Belastung unseres LDAP-Servers auf meinen SLES10-Systemen zu verringern. Meiner Erfahrung nach ist der Standard-NSCD, der als Teil von GNU LibC bereitgestellt wird, Müll und bricht alle paar Stunden schrecklich zusammen. Daher ist die Verwendung eines Ersatzes wie unscd oder gnscd zwingend erforderlich.

Für beides gibt es in SLES10 keine Pakete, daher muss ein Paket kompiliert werden. Es gibt jedoch ein Problem mit AppArmor – in SLE10 wurde das AppArmor-Profil jeder einzelnen App in einem großen „Apparmor-Profile“-Paket zusammengeführt, anstatt dass jedes Paket sein eigenes Profil bereitstellt – und unscd/gnscd funktionieren nicht mit den Profilen in Apparmor-Profilen.

Beim Erstellen eines Debian-Pakets ist es möglich, eine Beziehung namens „Replaces:“ anzugeben, die besagt: „Ich weiß, dass ich dieselbe Datei wie dieses andere Paket einschließe, aber ich kann deren Datei überschreiben, solange ihre Version dieser Prüfung entspricht.“ Als Ergebnis könnte ich in meiner Spezifikationsdatei etwas wie „Replaces: apparmor-profiles (<= 2.0.1-20.20.16)“ sagen und jede Datei aus dem Paket „apparmor-profiles“ sauber ersetzen.

Wie kann ich dasselbe mit RPM erreichen, ohne mein eigenes Apparmor-Profile-Paket mit entfernter Datei neu zu kompilieren oder das Paket durch den RPM-Befehl zu erzwingen (was in Zukunft zu Problemen führen wird)?

Antwort1

Ich glaube nicht, dass RPM eine analoge Funktion hat. RPM hat eine „Obsoletes“-Funktion, aber die dient dazu, ein Paket durch ein anderes Paket mit einem anderen Namen zu ersetzen. Sie können mehrere RPMs haben, die ein einzelnes Objekt besitzen, aber das wird hauptsächlich für Verzeichnisse verwendet, wie /etc/bash_completion.d, je nachdem, welche Distribution Sie verwenden: Sie alle haben leicht unterschiedliche Verpackungsrichtlinien.

verwandte Informationen