File prereqorder.diff of Package rpm
Backported fix. Seems to do no harm.
--- ./lib/depends.c.orig	2005-12-14 19:51:34.000000000 +0000
+++ ./lib/depends.c	2006-01-27 21:05:13.000000000 +0000
@@ -1294,14 +1403,12 @@ int rpmtsOrder(rpmts ts)
 	    switch (rpmteType(p)) {
 	    case TR_REMOVED:
 		/* Skip if not %preun/%postun requires or legacy prereq. */
-		if (isInstallPreReq(Flags)
-		 || !( isErasePreReq(Flags) || isLegacyPreReq(Flags) ) )
+		if (!( isErasePreReq(Flags) || isLegacyPreReq(Flags) ) )
 		    /*@innercontinue@*/ continue;
 		/*@switchbreak@*/ break;
 	    case TR_ADDED:
 		/* Skip if not %pre/%post requires or legacy prereq. */
-		if (isErasePreReq(Flags)
-		 || !( isInstallPreReq(Flags) || isLegacyPreReq(Flags) ) )
+		if (!( isInstallPreReq(Flags) || isLegacyPreReq(Flags) ) )
 		    /*@innercontinue@*/ continue;
 		/*@switchbreak@*/ break;
 	    }