我花了一整天时间尝试各种各样的事情并没有取得任何进展。
我正在为我的应用程序(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。
我怎么教它做得比这更好!
(咆哮)
答案 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需要修复 - 他们需要设置Requires
或Requires(pre)
。提交驱动程序供应商的错误。
答案 3 :(得分:0)
我有完全相同的问题(在YUM组中也是如此)。如果福雷斯特的建议需要在同一行中为您服务,请告诉我们。 否则,您可以尝试添加仅需要aksusbd的RPM并将其添加到需求列表中。如果YUM以Alpha-beta顺序安装依赖项,请在aksusbd和glibc之间命名,它可能会起作用。