RPM

Comment 4 for bug 638584

Revision history for this message
In , Jeff (jeff-redhat-bugs) wrote :

The symptoms are different but it is not a different problem.

The whole issue is that Berkeley DB provides backward but not forward
compatibility.

So when you have a mixture of Berkeley DB versions, incompatibilities arise.

The problem in #464752 is quite straightforward, there's a version stamp
in a file which causes an error return (EINVAL in older releases, DB_VERSION_MISMATCH
in newer). The patch automates the corrective action, removing the file that
has the wrong version stamp within.

The problem here is that the hash version changed, and switching to DB_BTREE
instead of DB_HASH avoids the problem (note that there is a non-trivial one time
cost switching from DB_HASH -> DB_BTREE everywhere).

There's a few more details ensuring that rpm itself can open an rpmdb
transparently, dealing with both DB_BTREE and DB_HASH as found, not
as configured.

But the fundamental problem here and in #464752 is the same, ensuring
transparent interoperation when there are multiple versions of Berkeley DB
accessing a single rpmdb.