On 08/15/2014 07:45 AM, Toralf Lund wrote:
Hi,
Does anyone know if there is a clean way to "downgrade" to the old rpm package when it was previously replaced by another that obsolete it?
I mean, say that I have installed some rpm "A-1.0-1.x86_64.rpm", and along comes "B-1.0-1.x86_64.rpm", whose spec has
Obsoletes: A
Now, if I do "rpm -U B-1.0-1.x86_64.rpm" or "yum install B-1.0-1.x86_64.rpm" or (if B is available through an enabled repository) "yum update", what happens is that "A" gets removed and "B" is installed in its place. Then I decide I want to switch back to "A". So what do I do? I know that one answer is
rpm -e B rpm -U A-1.0-1.x86_64.rpm
- but what if A and B provide facilities required by other installed
packages? I'll then have to pass "--nodeps" when removing B, but that's something that I really want to avoid as it means loosing control over whether all dependencies are satisfied. So is there an alternative?
"rpm -U A-1.0-1.x86_64.rpm" alone seems to fail with file conflicts, assuming "B" replaces some of "A"'s files. In a real scenario I tried, there was no mention of the fact that something that was essentially a newer version of the same package, was already installed.
"yum upgrade A" (when the package is available on a repository) fails in a similar manner.
"yum localinstall A-1.0-1.x86_64.rpm" is a bit smarter - it exists with a message like "Cannot install package A. It is obsoleted by installed package B".
"yum downgrade A" (via repository) says something like "No Match for available package: A-1.0-1.x86_64.rpm".
"yum localdowngrade A-1.0-1.x86_64.rpm" would seem to have the highest probability of success based on the above, except that there is no such command :-/
Any other ideas?
- Toralf
You can try using 'yum shell'
# yum shell
remove B install A run
Thomas