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-barund 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' andbar-foo bietet beagle and my package works with either (or both); but other packages require eithereagle orbeagle orfoo-bar orbar-foo` und das Zielsystem kann entweder eine oder beide installiert.
Derzeit neige ich dazu, dieses Problem mit einem %preSkript 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-baroder gefragt haben whatrequires beagle.
UPDATE: foo-barZumindest 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-barund dann zur Laufzeit zu bar-foowä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 %postRPM-Datenbank direkt fummeln. So %prekonnte ich von einem Schutz für ungültig installieren, und %postwürde rückwirkend RPM sagen , dass ich erfordern entweder foo-baroder bar-foooder beides, je nachdem , was ist da , wenn ich installieren.
Danke für die Vorschläge!
Provides: foo-barso 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 %preund versuchen Sie nicht, das System zu zerstören . %post