<div class="gmail_quote">On Sat, Jan 24, 2009 at 2:45 PM, Alexander &#39;Leo&#39; Bergolth <span dir="ltr">&lt;<a href="mailto:leo@strike.wu-wien.ac.at" target="_blank">leo@strike.wu-wien.ac.at</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi!<br>
<br>
When upgrading to Fedora 10, the newer Berkeley-DB version used in F10<br>
causes the following error messages after RPM itself has been upgraded:<br>
<br>
-------------------- 8&lt; --------------------<br>
rpmdb: Program version 4.5 doesn&#39;t match environment version 0.128<br>
error: db4 error(-30972) from dbenv-&gt;open: DB_VERSION_MISMATCH: Database<br>
environment version mismatch<br>
error: cannot open Packages index using db3 - &nbsp;(-30972)<br>
error: cannot open Packages database in /var/lib/rpm<br>
-------------------- 8&lt; --------------------<br>
<br>
This is because some environment files (__db.00*) of the rpm-database<br>
remain from the previous version. To work around this error, rpm has a<br>
posttrans scriptlet that deletes those environment files:<br>
<br>
-------------------- 8&lt; --------------------<br>
posttrans scriptlet (using /bin/sh):<br>
# XXX this is klunky and ugly, rpm itself should handle this<br>
dbstat=/usr/bin/db45_stat<br>
if [ -x &quot;$dbstat&quot; ]; then<br>
 &nbsp; &nbsp;if &quot;$dbstat&quot; -e -h /var/lib/rpm 2&gt;&amp;1 | grep -q &quot;doesn&#39;t match<br>
environment version \| Invalid argument&quot;; then<br>
 &nbsp; &nbsp; &nbsp; &nbsp;rm -f /var/lib/rpm/__db.*<br>
 &nbsp; &nbsp;fi<br>
fi<br>
exit 0<br>
-------------------- 8&lt; --------------------<br>
<br>
However, this scriptlet is called after the rpm transaction has<br>
finished, so any other rpm that follows the rpm-upgrade in the same<br>
transaction and that calls rpm inside one of its scriptlets will produce<br>
the error and the corresponding script will fail.<br>
<br>
When doing a dist-upgrade, even when only upgrading rpm as a first step,<br>
the packages needed to satisfy the dependencies will cause the above<br>
error. (E.g. openldap-servers contains a call to &quot;rpm -q&quot; in order to<br>
check if the ldap-database needs to be migrated.)<br>
<br>
Is there any workaround for this problem?<br>
</blockquote><div><br>IMHO, should be useful to patch RPM 4.6 (././lib/backend/db3.c db_init) for resolving this - old - issue. For RPM 4.4.2.x.x.x the patch is <br>
<br>
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=464752" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=464752</a><br>&nbsp;
<br></div></div><br>(not applied anyway in 4.4.2.3-9.el5). Not hard to do in RPM 4.6 also. Sorry if isn&#39;t the workround you have asked.<br><br>Regards<br><br><br><br>