如何强制执行RPM需要订购

时间:2013-06-03 16:07:05

标签: redhat rpm rpm-spec

我花了一整天时间尝试各种各样的事情并没有取得任何进展。

我正在为我的应用程序(MyApp.rpm)编译一个rpm包,用于RHEL6 64位,这需要一个名为aksusbd.rpm的第三方32位驱动程序包。现在,aksusbd.rpm又需要兼容模式,由RHEL6上的glibc.i686.rpm提供。

所以,在我的MyApp.rpm的spec文件中,我有:

MyApp.spec

Requires: glibc(x86-32) 
Requires: aksusbd >= 1.14

安装过程中(yum install MyApp)的作用是,首先安装aksusbd,但在没有安装32位兼容性的情况下失败。然后在安装glibc后立即取笑我。所以当它全部结束时我可以输入

yum install aksusbd 

这次它起作用了,因为现在安装了glibc。

我怎么教它做得比这更好!

(咆哮)

4 个答案:

答案 0 :(得分:2)

您可以按照Aaron的建议,使用rpmrebuild调整您拥有的第三方RPM。它允许您修改RPM包的需求规范:

rpmrebuild --package -n --edit-requires <your third party rpm package>

这是一个黑客,但只是对于RPM中的需求标签,我不会担心。

答案 1 :(得分:0)

首先,我建议将要求放在同一条线上。只需用逗号分隔它们,它们就应按照您指定的顺序进行。如果没有,并且您使用的是RPM版本4.3或更低版本,则可以使用rpm.org docs中指定的PreReq标记大约一半的页面。

如果这些解决方案都不起作用,或者你的RPM版本大于或等于4.4,我会想象其他正在发生的事情会导致问题。我首先为一些'假'项目创建一个新的规范,专门针对在aksusbd之前没有安装glibc的问题。如果这有效,我们知道它与你的MyApp.spec有关,如果它不起作用,那么我建议查看glibc的命名约定,或许它解释你的(x86-32)有一些问题。 / p>

答案 2 :(得分:0)

听起来aksusbd RPM需要修复 - 他们需要设置RequiresRequires(pre)。提交驱动程序供应商的错误。

答案 3 :(得分:0)

我有完全相同的问题(在YUM组中也是如此)。如果福雷斯特的建议需要在同一行中为您服务,请告诉我们。 否则,您可以尝试添加仅需要aksusbd的RPM并将其添加到需求列表中。如果YUM以Alpha-beta顺序安装依赖项,请在aksusbd和glibc之间命名,它可能会起作用。