単一の要件ではなく、仕様ファイルで代替要件または一連の要件を指定する方法(またはできるかどうか)を知っている人はいますか?
たとえば、2つのパッケージがあり、便利な名前のfoo-bar
とがあるとしbar-foo
ます。私のパッケージにはこれらのいずれかが必要ですが、両方ではなく、どちらが存在するかは気にしません。実行時には、使用可能な方を使用します。
だから効果的に私は言う方法が欲しい:
Requires: foo-bar OR bar-foo
それは不可能だと言えますが、私よりもRPMについて多くのことを知っている人がここにいると思うので、それを行う方法があるかもしれません。
UPDATE:私は唯一のパッケージ管理bar-foo
ではないが、foo-bar
その両方が仮想パッケージが動作しません提供しました。
更新:実際に必要なのは、それ自体が各パッケージ内の仮想パッケージです。セイのfoo-bar provides eagle' and
バー-fooがビーグル提供and my package works with either (or both); but other packages require either
ワシをor
ビーグルor
FOO-バーor
バーfoo`、およびターゲット・システムが持つことができますいずれかまたは両方がインストールされています。
私は現在、%pre
次のようなことを行うスクリプトでこれを解決することに傾いています:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
私はそれがうまくいくと確信していますが、RPMの依存関係追跡の残忍な回避のようです。あなたが尋ねたとき、たとえば、あなたは私のパッケージを見ることはないだろうwhatrequires foo-bar
かwhatrequires beagle
。
更新:foo-bar
考え直せば、少なくとも私の場合は、RPMの依存関係管理を回避することの痛みよりも、人々がインストールしないといけない場所にインストールすることを要求する痛みのほうが少ない。だから誰かが「これまたはそれ」を適切に要求する方法を考え出さない限り(これはRPMに一般的には素晴らしい機能だと思います)、私は要求するだけ foo-bar
で、実行時に、bar-foo
利用可能な場合、私は選択しますそれらは私が必要とするどんな基準に従ってでも。
更新:別のアイデアとして、RPMを不正行為するものもありますが、適切な状態になる可能性があります。たぶん%post
、RPMのデータベースを直接いじることができたかもしれません。したがって%pre
、無効なインストールから保護され、インストール時に何が存在するかに応じて、%post
どちらfoo-bar
かbar-foo
または両方が必要であることをRPMにさかのぼって通知します。
提案をありがとう!
Provides: foo-bar
です。これにより、両方の依存関係が満たされます。新しいrpmバージョンについては、Boolean Dependenciesを確認してください。離れて滞在%pre
して%post
、セクションシステムを敗北しようとしないでください。