I thought I knew most of what was wrong with rpm, but this bug has opened my eyes to whole new levels of evil. (It's also a textbook example of exactly how not to respond to bug reports.)

Description of why using rpm to upgrade a package with /usr mounted read-only can cause the package to silently be removed from the rpm database:

RPM uses a "best effort" algorithm when doing upgrades. What actually happened here is that the previous versions were removed as part of the upgrade process, and the newer versions were installed. At least as much as possible. :-) As many files as could be removed from the old install were, and that install was removed from the RPM DB. As much of the new stuff as could be installed was, but the install of some items failed, so the new packages were not added to the RPM DB.

dpkg's behavior in the equivilant situation is to complain as soon as it can't write to a file, and roll back the package state to the previous version.