有谁知道(或是否可以)在规格文件中指定替代需求或一组需求,而不是单个需求?
例如,假设有两个可用的软件包,方便地命名为foo-bar
和bar-foo
。我的包裹需要其中之一,但不是全部,而且我不在乎是哪一个。在运行时,我使用任何可用的方法。
如此有效,我想说一种方式:
Requires: foo-bar OR bar-foo
据我所知这是不可能的,但我认为这里的人比我更了解RPM,所以也许有一种方法可以做到。
更新:我仅控制的打包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
会追溯告诉RPM,我要求或者foo-bar
或者bar-foo
或者两者,取决于那里的东西,当我安装。
感谢您的建议!
Provides: foo-bar
,因此它满足两个依赖关系。对于较新的rpm版本,请检查Boolean Dependencies。远离%pre
和%post
隔离,不要试图破坏系统。