如果主包失败,则让 yum 不安装依赖项

如果主包失败,则让 yum 不安装依赖项

我有 3 个软件包corepkgcorepkg-optBcorepkg-optCcorepkg-optC依赖于corepkg-optBcorepkg-optB依赖于corepkg。 我已经为这 3 个软件包创建了一个仓库。 当我运行 yum install 时corepkg-optCcorepkg失败了, yum 会安装corepkg-optBcorepkg-optC。 这不是我想要的。

corepkg-optB如果corepkg失败了,我愿意失败;corepkg-optC如果corepkg-optB因为失败而失败,我愿意失败corepkg

我的 spec 文件如下所示:

Name: corepkg
Version: 1.0.0

%pretrans
if ! grep -q foo /etc/hosts
then
    exit 1
fi

%package optB
Requires: corepkg = 1.0.0

%package optC
Requires: codepkg-optB = 1.0.0

我尝试了 Requires 然后 Requires(pre),但结果相同:

# yum install corepkg-optC
error: %pretrans(corepkg-1.0.0-1.el7.noarch) scriptlet failed, exit status 1
Error in PRETRANS scriptlet in rpm package corepkg-1.0.0-1.el7.noarch
  Installing : corepkg-optB-1.0.0-1.el7.noarch                                     1/3
error: corepkg-1.0.0-1.el7.noarch: install skipped
  Installing : corepkg-optC-1.0.0-1.el7.noarch                                     2/3
  Verifying  : corepkg-optC-1.0.0-1.el7.noarch                                     1/3
  Verifying  : corepkg-optB-1.0.0-1.el7.noarch                                     2/3
  Verifying  : corepkg-1.0.0-1.el7.noarch                                          3/3

Installed:
  corepkg-optC.noarch 0:1.0.0-1.el7.noarch

Dependency Installed:
  corepkg-optB.noarch 0:1.0.0-1.el7.noarch

Failed:
  corepkg.noarch 0:1.0.0-1.el7.noarch

我尝试了 Requires(pretrans),但是这毫无意义,因为一切都是单一的 yum 事务。

所有 corepkg 都是我的,我可以修改 specfile。有什么想法吗?谢谢!

编辑:包 B 和 C 不是依赖包,更像是 corepkg 的附加内容。它类似于包 php-* 或 python-*。相似之处在于我的包 corepkg-optB 和 corepkg-optC 是模块(文本文件),没有 corepkg 就毫无意义。我之所以这么说是因为有些 php-* 包可以独立运行。

答案1

看起来你的问题没有简单的答案。我发现问题和你的类似。而且看起来这只是一种方法,您应该检查%pre部分中是否正确安装了软件包,但不要使用rpm命令。可能是检查现有文件或类似的东西。

相关内容