Strange behaviour of rpm command on error in %pre section of a rpm pakage
Lubos Kardos
lkardos at redhat.com
Fri Apr 24 13:56:29 UTC 2015
Hi,
this behaviour is a bug and now it is fixed in upstream:
c7fa7b2fd7205b73c833831ab9f8c311f40b2ff1
Thank you for your report.
Lubos
----- Original Message -----
> From: "Viktor Shitkovskiy" <hanksmail at gmail.com>
> To: rpm-list at lists.rpm.org
> Sent: Monday, April 13, 2015 9:23:39 AM
> Subject: Strange behaviour of rpm command on error in %pre section of a rpm pakage
>
> I've got several versions of some package. The last of it has an error in
> %pre section that terminates the install script:
>
> mypak-0.0.1-1.el6.noarch.rpm
> mypak-0.0.1-2.el6.noarch.rpm
> mypak-0.0.1-3.el6.noarch.rpm <-- bad package
>
> All of my packages have debug output in pre, post, preun and postun sections.
>
> I install the first package:
>
> rpm -ihv mypak-0.0.1-1.el6.noarch.rpm
>
> Output (param is the parameter passed to script sections) is:
>
> Preparing... ########################################### [100%]
> pre: 0.0.1-1.el6 ; param = 1
> 1:mypak ########################################### [100%]
> post: 0.0.1-1.el6 ; param = 1
>
> Then I try to update my package and (accidentally) launch rpm command with v2
> and v3 packages at once:
>
> rpm -Uhv mypak-0.0.1-2.el6.noarch.rpm mypak-0.0.1-3.el6.noarch.rpm
> warning: package mypak = 0.0.1-2.el6 was already added, replacing with mypak
> > 0.0.1-3.el6
> Preparing... ########################################### [100%]
> pre: 0.0.1-3.el6 ; param = 2
> !!!version 3 is bad!!!
> error: %pre(mypak-0.0.1-3.el6.noarch) scriptlet failed, exit status 1
> error: install: %pre scriptlet failed (2), skipping mypak-0.0.1-3.el6
> preun: 0.0.1-1.el6 ; param = 0
> postun: 0.0.1-1.el6 ; param = 0
>
> As you can see, my package was removed in the end. Moreover, the package is
> removed even if other packages depend on it. I don't even get any warnings
> about corrupted dependencies!
>
> If I update my packages one after another, I don't have that problem. In this
> case update to the third version fails and that's all. My package of
> previous version is still in place.
>
> So my questions are:
> 1. Why do I get different behaviour when I update my package using 'rpm -Uhv
> 3' and 'rpm -Uhv 2 3'? In the first case only the update fails and my
> package is not removed. In the second one, the update fails and the package
> **is** removed.
> 2. How can my package be removed in that corrupted update transaction if
> other packages depend on it? If I launch 'rpm -e mypak' it fails as it
> should:
> rpm -e mypak
> error: Failed dependencies:
> mypak is needed by (installed) mypak-dep-0.0.1-1.el6.noarch
>
> I use rpm 4.8.0 on Centos 6.5.
> Originally I posted this question on SO:
> http://stackoverflow.com/questions/29565224/strange-behaviour-of-rpm-command-on-error-in-pre-section-of-a-rpm-pakage
>
> _______________________________________________
> Rpm-list mailing list
> Rpm-list at lists.rpm.org
> http://lists.rpm.org/mailman/listinfo/rpm-list
>
More information about the Rpm-list
mailing list