If there are two versions of a package installed and they share files, then removing one of the versions causes the shared files to be removed. To reproduce: 1) try "rpm -Uvh" in a situation where the %postun script of the old package would fail. 2) Observe that "rpm -q <package-name>" shows two versions of the package. 3) Observe that "rpm -V <package-name-new-version>" shows that the package is correct. 4) Fix the problem that caused the postun script to fail 5) Run "rpm -e <package-name-old-version>" 6) Run "rpm -V <package-name>" Expected: no inconsistencies reported, as "rpm -e" should be smart enough not to break other installed packages. Actual: Some (all?) files included in both packages (for example, documentation files) will be reported as missing.
this may be related to bug 120519, which i just opened
This is also a problem on biarch systems -- removing one of the installed architectures of a package will also remove the files shared with other installed architectures.
The following is an example of the problem, in case I wasn't too clear in my explanation: [root@entropy ~]# rpm -q rpm rpm-4.3.2-11 [root@entropy ~]# ls nc* nc-1.10-22.i386.rpm nc-1.10-22.x86_64.rpm [root@entropy ~]# rpm -ivh nc-1.10-22.* Preparing... ########################################### [100%] 1:nc ########################################### [ 50%] 2:nc ########################################### [100%] [root@entropy ~]# rpm -V nc .......T d /usr/share/man/man1/nc.1.gz [root@entropy ~]# rpm -e nc.i386 [root@entropy ~]# rpm -V nc missing /usr/share/doc/nc-1.10 missing d /usr/share/doc/nc-1.10/Changelog missing d /usr/share/doc/nc-1.10/README missing /usr/share/doc/nc-1.10/scripts missing d /usr/share/doc/nc-1.10/scripts/README missing d /usr/share/doc/nc-1.10/scripts/alta missing d /usr/share/doc/nc-1.10/scripts/bsh missing d /usr/share/doc/nc-1.10/scripts/dist.sh missing d /usr/share/doc/nc-1.10/scripts/irc missing d /usr/share/doc/nc-1.10/scripts/iscan missing d /usr/share/doc/nc-1.10/scripts/ncp missing d /usr/share/doc/nc-1.10/scripts/probe missing d /usr/share/doc/nc-1.10/scripts/web missing d /usr/share/doc/nc-1.10/scripts/webproxy missing d /usr/share/doc/nc-1.10/scripts/webrelay missing d /usr/share/doc/nc-1.10/scripts/websearch .......T d /usr/share/man/man1/nc.1.gz
It's because of the skipDirs() call in rpmdb.c. See bugzilla #140055
this bug still exists in FC4! removing lm_sensors.i386 blows away the /usr/share/doc/lm_sensors* of lm_sensors.x86_64, very annoying.
Collapsing to single skipDirs bug *** This bug has been marked as a duplicate of 140055 ***