Red Hat Bugzilla – Bug 82028
Rollback for transaction containing partial package fails
Last modified: 2007-11-30 17:06:52 EST
Description of problem:
If you install several packages as one trasaction and one
of the packages to be installed fails in its %post scriptlet,
when you go to rollback this transaction none of the upgraded
packages will rollback. The implication is that the rollback feature
is only useful if everything goes OK.
Also, note that the expected behavior is that the sucessfully
installed RPM's would be able to be rolled back, but the
partial packages would not be. Instead no packages can be
rolled back; it is as if that transaction was never recorded
in the RPM database.
Version-Release number of selected component (if applicable): 4.04
How reproducible: Every Time
Steps to Reproduce:
Given packages A and B where package A is set to exit with a positive
error code in its %post scriptlet.
rpm -Uvh --repackage A B
This will fail, but B will be successfully installed.
2. Try to rollback to an hour ago:
rpm -Fvh --rollback '1 hour ago'
Provided no other rpm transactions have occured in the last hour
nothing will happen; neither A or B will be rolled back.
I expected B to be rolled back, and A to be left on the system.
This bug is related to enhancement request 82024, where a request
to be able query for partially installed packages has been made.
The relation is, even if this bug is fixed, a method to find out
what packages were partially installed is still necessary.
James -- is this resolved in newer releases (I seem to remember you had a patch
for it once upon a time)?
No it was never resolved officially. I created the autorollback patch which
rollback the failed transaction automatically. I have a set of patches for
RHEL 3 which we use in production:
But AFAIK if you don't use this patch, or enable the feature, a failed
transaction cannot be rolled back properly.
Also, those patches are in the HEAD of rpm.
Improved rollback in rpm HEAD/4.4.x branches. This is not going to get
backported to AS 2.1 as it is in maintenance mode atm.