Weiß jemand, wie man eine alternative Anforderung oder einen Satz von Anforderungen in einer Spezifikationsdatei im Gegensatz zu einer einzelnen Anforderung spezifiziert (oder ob man sie spezifizieren kann)?
Angenommen, es sind zwei Pakete mit dem passenden Namen foo-bar
und verfügbar bar-foo
. Mein Paket benötigt eines davon, aber nicht beide, und es ist mir egal, welches vorhanden ist. Zur Laufzeit verwende ich das, was verfügbar ist.
So effektiv möchte ich sagen:
Requires: foo-bar OR bar-foo
Soweit ich das beurteilen kann, ist das nicht möglich, aber ich schätze, es gibt Leute hier, die viel mehr über RPM wissen als ich. Vielleicht gibt es einen Weg, dies zu tun.
UPDATE: Ich kontrolliere nur das Paketieren von bar-foo
, nicht foo-bar
, also funktioniert es nicht , wenn beide ein virtuelles Paket bereitstellen.
UPDATE: Was ich eigentlich brauche, ist selbst ein virtuelles Paket in jedem der Pakete. Say foo-bar provides eagle' and
bar-foo bietet beagle and my package works with either (or both); but other packages require either
eagle or
beagle or
foo-bar or
bar-foo` und das Zielsystem kann entweder eine oder beide installiert.
Derzeit neige ich dazu, dieses Problem mit einem %pre
Skript zu lösen , das etwa folgende Aufgaben erfüllt:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Ich bin mir zwar ziemlich sicher, dass dies funktionieren würde, aber es scheint eine brutale Umgehung des RPM-Abhängigkeits-Trackings zu sein. Zum Beispiel würden Sie mein Paket nie sehen, wenn Sie whatrequires foo-bar
oder gefragt haben whatrequires beagle
.
UPDATE: foo-bar
Zumindest für meine Situation ist der Schmerz, dass die Benutzer an einem Ort installiert werden müssen, an dem er möglicherweise nicht installiert wird, geringer als der Schmerz, das RPM-Abhängigkeitsmanagement zu umgehen. Wenn also nicht jemand eine Möglichkeit findet, "dieses ODER das" (was meiner Meinung nach eine großartige Funktion im RPM-Bereich ist) richtig zu fordern, plane ich, dies nur zu fordern foo-bar
und dann zur Laufzeit zu bar-foo
wählen , ob es verfügbar ist sie nach welchen Kriterien ich brauche.
UPDATE: eine andere Idee, die auch RPM betrügen würde, aber die Dinge in den richtigen Zustand bringen könnte. Vielleicht könnte ich in der %post
RPM-Datenbank direkt fummeln. So %pre
konnte ich von einem Schutz für ungültig installieren, und %post
würde rückwirkend RPM sagen , dass ich erfordern entweder foo-bar
oder bar-foo
oder beides, je nachdem , was ist da , wenn ich installieren.
Danke für die Vorschläge!
Provides: foo-bar
so zu erstellen , dass beide Abhängigkeiten erfüllt werden. Überprüfen Sie für neuere RPM-Versionen die Booleschen Abhängigkeiten . Halten Sie sich von Abschnitten fern %pre
und versuchen Sie nicht, das System zu zerstören . %post