如何创建一个需要sl-release或centos-release或redhat-release的.spec文件?

时间:2013-09-02 22:02:01

标签: centos redhat rpmbuild

我认为我的问题与“https://serverfault.com/q/299179”和“https://serverfault.com/q/283330/71790”有些相关,但是其中任何一个都没有令人满意的答案。

为了确保我的.rpm的依赖关系正确,我想要一个特定的最低版本。就我而言sl-release >= 6.1。好吧,所以我在Requires: sl-release >= 6.1文件中写了.spec,然后我突然意识到:“如果有人试图在其中一个相关的发行版上安装这个怎么办?” (如CentOS或RHEL本身)。

由于Scientific Linux基于RHEL,就像CentOS一样,应该有一种方法来表达我需要基于特定RHEL版本的东西。唉,快yum list installed|grep release只是屈服了:

sl-release.x86_64  6.1-2         @anaconda-ScientificLinux-201107272231.x86_64/6

Dang,sl-release显然特别针对Scientific Linux(并且yum list没有任何帮助,yum grouplist也没有提供任何帮助。所以我认为依赖关系必须以某种方式表达Provides:并发出yum deplist sl-release。唉,输出再次对我的事业没有帮助。

1 个答案:

答案 0 :(得分:2)

...除了“https://serverfault.com/q/283330/71790”中指出的条件之外,还有类似上面的符号/别名的内容。稍微猜一下,网络搜索出现了centos-release,当然还有redhat-release作为其他两个相关发行版上使用的包名。

由于我花了一些时间来提出解决方案并且分享是关心的,所以我决定写下我为下一个internaut进行网络搜索所发现的内容。

所以,接下来我运行yum install redhat-release以便安装它,希望它可用。

$ sudo yum install redhat-release
Setting up Install Process
Package sl-release-6.1-2.x86_64 already installed and latest version
Nothing to do

显然名称redhat-release以某种方式神奇地转换为sl-release。即这是别名。

结论

您可以使用通用名redhat-release,甚至可以使用两个派生的发行版CentOS和Scientific Linux来引用相应的特定于发行版的包centos-releasesl-release。所以:

Require: redhat-release >= 6.1

完成所有这些工作。


在相关的说明中,我知道所有人都有一个文件/etc/redhat-releaseyum whatprovides /etc/redhat-release给了我:

$ yum whatprovides /etc/redhat-release
sl-release-6.1-2.x86_64 : Scientific Linux release file
Repo        : local
Matched from:
Filename    : /etc/redhat-release



sl-release-6.1-2.x86_64 : Scientific Linux release file
Repo        : installed
Matched from:
Other       : Provides-match: /etc/redhat-release