"所需" .spec文件中的条目不起作用

时间:2014-04-25 14:04:45

标签: packaging rpm

我正在为rpm包编写一个.spec文件,但我遇到了问题。 我需要使用另一个软件包的特定版本安装该软件包。 我们来看一个python包示例。所以,我写下来:

Requires        : bash, grep, python >= 2.6.7-4b

但是,即使python包在2.6.6版本中,也会安装包。 如果我删除python包,系统会告诉我我的包需要python 2.6.7。

有什么不对吗?

rpm -q --provides python的输出:

Distutils
python(abi) = 2.6
python-abi = 2.6
python-ctypes = 1.0.1
python-hashlib = 20081120
python-sqlite = 2.3.2
python-uuid = 1.31
python-x86_64 = 2.6.6-52.el6
python2 = 2.6.6
python = 2.6.6-52.el6
python(x86-64) = 2.6.6-52.el6

rpm -qpR $yourpackage.rpm的输出:

/bin/sh
python >= 2.6.7-4b
bash
grep
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

1 个答案:

答案 0 :(得分:2)

&#39;&#39;要求:&#39;&#39;除非您添加&#39;自动回复:否&#39;&#39;同样。

较新版本的rpmbuild会自动计算需求并忽略&#39;需要:&#39;&#39;除非该功能已关闭。

我多次遇到过这个问题,值得注意的是,你应该首先运行rpmbuild 而不用&#39;&#39; Autoreq:no&#39;&#39;,记下自动检测的依赖关系,并将它们添加到&#39;要求:&#39;&#39;使用&#39;&#39; Autoreq:no&#39;&#39;

进行最终运行之前的标记

还值得注意的是,依赖项的自动检测是一个小错误,并且有一些注释问题。 我打包了一个包含&#34;的评论的perl脚本。 ...然后使用模块...&#34;不久前。 Autoreq检测到它是perl模块&#34; perl a&#34;并将其添加到依赖项中,使我的rpm无用。