rpm yum install:如何在已安装的软件包上放置冲突?

时间:2016-09-20 15:44:41

标签: upgrade rpm yum rhel rpm-spec

如果我已经安装了特定版本的软件包,我正在尝试停止安装rpm。

说我有2个包 A-7.1.1.rpm&

。要安装Main_package-1.0.rpm

我已经在机器上安装了A-1.4.0.rpm。所以我想要实现的是,如果已安装的A< 7.1.0然后不应该升级Main_package。

我尝试将Conflicts标记放在Main_package的spec文件中,如下所示 冲突:A< 7.1.0
并执行yum install *.rpm

这里yum在目录中找到了包'A'的最新版本(即A-7.1.1.rpm),它没有冲突。我想检查的是,如果机器具有特定版本的包A。

我在spec文件中找不到任何其他标签。
有什么方法可以实现这个目标吗?

注意:我无法在脚本中进行此检查,然后调用yum install *.rpm

我只能执行yum install *.rpm,而不能执行其他操作。

2 个答案:

答案 0 :(得分:0)

有一个解决方案,但它不是很干净,不推荐:您可以检查包的前面部分 A 是否安装了其他版本并中止安装:

%pre
if [[ $(rpm -q A --qf "%{VERSION}-%{RELEASE}") == "1.4.0" ]]
then
    # abort installation in this case!
    exit 1
fi

有关详情,请参阅此related question

我确实认为你应该重新考虑你的设计,因为这是一个非常难看的解决方案(并注意到A-7.1.1不会有这个%pre部分,因此仍然会毫无问题地安装)

答案 1 :(得分:0)

yum具有通过CLI选项或配置按模式配置“不升级包XXX”的方法。见https://access.redhat.com/solutions/10185