Removing duplicate apps after FC6 upgrade from FC5

Sam Varshavchik mrsam at courier-mta.com
Sat Feb 17 05:49:53 UTC 2007


Karl Hakmiller writes:

> I just upgraded from FC5 to FC6 and have found a dozen or more apps 
> left in FC6 from the FC5 installation as well as duplicate FC6 
> applications -- at least that is what Synaptic reports.  I was 
> expecting the first sort of redundancy but not the second.  Any 
> suggestions about the best way to go about locating and then deleting 
> the superfluous files of either sort?

Curious -- can you look in your /root/upgrade.log.  I suspect that you'll 
find that the %post script from most of your packages has barfed during the 
update.  Long standing bug, at least since FC 3.  Bug 178590.

> BTW, wouldn't it be nice if there was a delete button in Synaptic?

Would it be nice if all the bugs in rpm were fixed?  Although this is 
ultimately an anaconda issue -- I suspect that anaconda enables selinux 
during an upgrade, which nukes all the %post scripts if the FC install 
never had selinux policies installed -- I feel that rpm compounds this bug.  
When rpm upgrades package X from version to A to version B, and version B's 
%post script pukes, rpm leaves both version A and version B installed.

Dumb, dumb, dumb…

As far as fixing this -- you'll need to compile a list of dupe packages, as 
a first step.  Something like:

rpm -q -a --queryformat '%{NAME}\n' | sort | uniq -c | awk '$1 > 1 { print $2} '

>From that, you'll need to manually edit out some things.  Like all the 
gpg-pubkey pseudopackage hack -- there'll be more than one of them.  If 
you're running x86-64, multilib packages that you get with the default FC 6 
x86_64 install are going to screw you here, so before cleaning up _this_ 
mess, you should blow away all the i386 packages first (but see below).  You 
really do not need useless multilib packages make your life difficult.

Now, for each dupe package you got from the first rpm command, you'll need 
to grab the old version of each package.  Something like:

cat $pkglist | while read F
do
   rpm -q --queryformat '%{INSTALLTIME} %{NAME}-%{VERSION}-%{RELEASE}' $F | sort -n | sed -n 1p | awk ' {print $2}'
done

That should give you a package-version-release list that you'll want to feed 
back to rpm -e.  Don't take my word for it.  Verify this yourself.

And _then_, after all this silliness, you may or may not notice that bug 
223639 will end up biting you in the arse (which you might've noticed 
already, if you had to remove i386 packages on your x86_64 box).

rpm really needs to go.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.fedoraproject.org/pipermail/users/attachments/20070217/7e240c6c/attachment-0002.bin 


More information about the users mailing list