2016-01-20 41 views
1

我已经从我们的项目创建RPM软件包。在这个软件包中只有二进制文件和脚本,二进制文件依赖于特定的内核版本(3.10.0-327.el7)。所以我加入到这个RPM说明文件:RPM安装不同的包作为依赖

Requires:  kernel = 3.10.0-327.el7 

现在能正常工作的大部分时间,但如果有内核3.10.0-327。 4.4 .el7(注意4.4.el7)安装在目标机器上而不是kernel-3.10.0-327.el7那么yum不会安装kernel-3.10.0-327.el7,而是安装kernel-debug -3.10.0-327.el7,这基本上打破了我的包。

有没有办法在RPM规范文件来指定我不想安装kernel-devel,但正是我想要安装为依赖特定的内核?

非常感谢。

+0

为什么是打破你的包?这不仅仅是用额外的调试信息构建的正常内核吗?那么它不适合你的包需要什么?它缺少文件吗? –

+0

我认为包只是调试符号,但是我的包依赖于实际的内核包,所以它不会启动。另外,如果我想删除我的包,然后yum写关于破包的几个错误。 – Jan

+0

内核调试软件包声称是打开调试的内核。你可以看到你自己'yum info kernel-debug'。我没有问你*认为*打破了什么。我问什么*做*打破它。你的应用程序运行失败吗?它会抛出一个错误吗?当你删除它时,你会得到什么“破包”的错误? 'rpm -qpi - 提供$ your_package.rpm'输出是什么? –

回答

2

我知道这是旧的,但我只是无意中发现了同样的问题。希望它能对别人有所帮助。我能够按如下格式化该行来解决该问题。

Requires:  kernel-%{_target_cpu} = 3.10.0-693.el7 

(不同的版本,同样的问题)我在kmods v1标准的模板中找到了这个解决方案。这是记录在这里:https://rpmfusion.org/Packaging/KernelModules/Kmods1