2013-06-03 42 views
2

我花了一整天试图各种事情。凡没有取得进展。如何执行RPM需要为了

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

所以在MyApp.rpm我的规格文件的地方,我有:

MyApp.spec

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

安装过程中它能做什么(YUM安装MyApp的)是,安装第一的aksusbd,其失败没有安装32位兼容性。然后只是在安装glibc后立即取笑我。所以,当它结束我可以键入

yum install aksusbd 

它的工作,因为现在安装glibc。

如何在地球上做我教它做的比这更好!

(咆哮)

+0

相关:http://unix.stackexchange.com/questions/52455/64bit-rpm-can-not-resolve-32bit-dependencies – Ali

回答

2

您可以按照亚伦的建议和调整你有rpmrebuild第三方RPM。它允许你修改需要RPM包的规格:

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

这是一个黑客,但只是为需要在RPM标签,我也不会关心。

0

首先我建议把要求放在同一行。用逗号分隔它们,然后按照您指定的顺序进行操作。如果没有,并且您使用的是RPM 4.3或更低版本,则可以使用大约在页面下半部分rpm.org docs中指定的PreReq标签。

如果没有这些解决方案的工作,或者你是一个版本RPM大于或等于4.4我会想象别的东西是怎么回事,是造成问题的。我会先为一些专门针对未在aksusbd之前安装的glibc问题的“假”项目创建新规范。如果这样做的话,我们知道这是你的MyApp.spec的东西,如果它不起作用,那么我建议检查一下glibc的命名约定,或许在解释你的(x86-32)时会遇到某种问题。

+0

RPM版本是4.8 – Ali

+0

您可以向%pre部分添加一些代码以执行检查特定的glibc,然后如果未安装,请在其上运行yum install,然后aksusbd。这将是非常贫穷的,但它可能会作为解决方法。 – Forrest

0

听起来像aksusbd RPM是什么需要修复 - 他们需要一个RequiresRequires(pre)设置。向驱动程序供应商报告错误。

+1

不是一种选择,我们得释放出来。除了驱动程序是针对多个Linux发行版的,只有在RHEL上才有这个问题。在SLES上安装很好。我猜每个发行版都有一个不同的软件包,可以提供32位兼容性,驱动程序供应商无法解释所有问题。 Linux发行版的美丽世界。 – Ali

0

我有完全相同的问题(和YUM组相同)。如果Forrest的建议要求在同一行中适用于您,请告诉我们。 否则,您可以尝试添加仅需要aksusbd并将其添加到需求列表的RPM。如果YUM以Alpha-Beta顺序安装依赖项,请将它命名为aksusbd和glibc之间的某个项,并且可能有效。