I have 3 packages corepkg
, corepkg-optB
and corepkg-optC
. corepkg-optC
depends on corepkg-optB
, corepkg-optB
depends on corepkg
.
I've created a repo of these 3 packages. When I run yum install corepkg-optC
, and corepkg
failed, yum installs corepkg-optB
and corepkg-optC
. It is not what I would like.
I would like corepkg-optB
failing if corepkg
is failed and corepkg-optC
failing if corepkg-optB
failed because corepkg
failed.
My specfile looks like this:
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
I tried Requires then Requires(pre), but give me the same result:
# 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
I tried Requires(pretrans) but it was a non-sense as everything is a single yum transaction.
All corepkg are mine, I can modify specfiles. Any idea? Thank you!
EDIT: package B and C are not dep but more like additionnal stuff to corepkg. It is similar to packages php-* or python-*. Similar because my packages corepkg-optB and corepkg-optC are modules (text files) and means nothing without corepkg. I'm saying that because some php-* packages work standalone.
Looks like there is no simple answer on your question. I find question similar to yours. And looks like this is only one way, you should check in
%pre
section properly installed packages, but not usingrpm
command. May be check for existing files or something like that.