<div class="gmail_quote">On Thu, Jan 29, 2009 at 12:27 PM, Alexander &#39;Leo&#39; Bergolth <span dir="ltr">&lt;<a href="mailto:leo@strike.wu-wien.ac.at">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;">
<div class="Ih2E3d">On 01/27/2009 09:34 AM, Panu Matilainen wrote:<br>
&gt; On Mon, 26 Jan 2009, devzero2000 wrote:<br>
&gt;&gt; On Sat, Jan 24, 2009 at 2:45 PM, Alexander &#39;Leo&#39; Bergolth<br>
&gt;&gt; &lt;<a href="mailto:leo@strike.wu-wien.ac.at">leo@strike.wu-wien.ac.at</a>&gt; wrote:<br>
</div><div class="Ih2E3d">&gt;&gt; &nbsp; &nbsp; &nbsp; -------------------- 8&lt; --------------------<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; rpmdb: Program version 4.5 doesn&#39;t match environment version<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; 0.128<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; error: db4 error(-30972) from dbenv-&gt;open:<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; DB_VERSION_MISMATCH: Database<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; environment version mismatch<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; error: cannot open Packages index using db3 - &nbsp;(-30972)<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; error: cannot open Packages database in /var/lib/rpm<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; -------------------- 8&lt; --------------------<br>
&gt;&gt;<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; This is because some environment files (__db.00*) of the<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; rpm-database<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; remain from the previous version. To work around this error,<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; rpm has a<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; posttrans scriptlet that deletes those environment files:<br>
</div>[...]<br>
<div class="Ih2E3d">&gt;&gt; &nbsp; &nbsp; &nbsp; Is there any workaround for this problem?<br>
&gt;&gt;<br>
&gt;&gt; IMHO, should be useful to patch RPM 4.6 (././lib/backend/db3.c db_init)<br>
&gt;&gt; for resolving this - old - issue. For RPM 4.4.2.x.x.x the patch is<br>
&gt;&gt;<br>
&gt;&gt; <a href="https://bugzilla.redhat.com/show_bug.cgi?id=464752" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=464752</a><br>
&gt;&gt;<br>
&gt;&gt; (not applied anyway in 4.4.2.3-9.el5). Not hard to do in RPM 4.6 also.<br>
&gt;&gt; Sorry if isn&#39;t the workround you have asked.<br>
&gt;<br>
&gt; Blindly blasting away the environment that provides the means for safe<br>
&gt; concurrent access (including protects the db from being accessed with<br>
&gt; incompatible DB version, ie the error message above) to the rpmdb when it<br>
&gt; happens to prevent access is not a solution at all IMO. When the<br>
&gt; underlying BDB gets upgraded, you have two versions of rpm, linked against<br>
&gt; different, potentially incompatible versions of BDB, accessing the rpmdb<br>
&gt; concurrently with all protection removed. Not good.<br>
&gt;<br>
&gt; The only thing that can safely and reliably access the rpmdb across DB<br>
&gt; version upgrades, glibc futex implementation changes and the like, is the<br>
&gt; single process performing the transaction. This also means there&#39;s<br>
&gt; precisely one way scriptlets could reliably access the rpmdb, and that&#39;s<br>
&gt; the embedded Lua interpreter. As of 4.4.2.x and 4.6.0 the embedded Lua<br>
&gt; interpreter doesn&#39;t have access to rpmdb but there&#39;s work going on to<br>
&gt; change that. But no, there&#39;s no good workaround at the moment.<br>
<br>
</div>The purpose of all calls to rpm I found inside pre or post scriptlets is<br>
to obtain the version of the currently installed package or the upgrade.<br>
</blockquote><div><br></div></div>Not the only. For example there are commercial packages that have no correct dependencies or incorrect pre/post install. Or commercial packages that require an interactive EULA. Or if you want to make a yum-pull-update -&nbsp; do a search if interested- without using special agent - a yum-pull-update is equivalent to to a package bundle.<br>
Anyway for&nbsp; quering package , more that env var, could be useful to use the internal lua interpreter and the rpm lua extension.<br><br>Regards<br>