On Mar 10, 2008, at 5:32 AM, Martin Nicolay wrote:
> Is there a way to archive database compatibility with older
> versions (rpm4
> / rpm3)? We need to support many different Linux and SunOS
> versions and
> would like to use the same packaging software for all systems.
> Unfortunately we have used the rpm proliferated by the distro for
> our own
> software, so the system-packages and our own packages are within
> the same
> database. If we use the new and shiny rpm5 for updates of our
> hell breaks loose for system updates (unless database compatibility es
There are ways, yes.
Howver, if you want a universally compatible, seamless, drop-in,
version of rpm (who doesn't?), that cannot be achieved without vendor
There are no vendors at rpm5.org. Hence compatibility is impossible.
There are 2 compatibility issues that need figuring: rpmdb
rpm "feature" compatibility.
In general, Berkeley DB provides backward, but not forward
That means a newer version of Berkeley DB can usually read an old
database, but not
Your vendor set, particularly since it includes SunOS (w rpm-3.0.4),
essentially every modern release of Berkeley DB, and so includes every
possible Berkeley DB compatibility issue. All the issues are quite
documented, and Berkeley DB always supplies db_dump/db_load so that
conversions are possible. However conversion is not the same as
There are several approaches to rpmdb compatibility:
1) Use whatever rpm+bdb the vendor supplies.
Yes that is what you are trying to avoid. But you likely have ~5 or
so distributions, so its is certainly feasible to design a process
that distributes ~5 copies of packaged software, one for each vendor.
2) Coexisting vendor <-> custom rpm.
rpm's database needs are rather modest, so it is quite feasible to
build ~5 versions of rpm-5.x, with the same version of Berkeley DB
used by the vendor's version of rpm.
(aside)The one notable exception is rpm-3.0.x, as used by Sun and IBM
and old SuSE, which used
db-1.85. All Berkeley DB releases for years have not supplied
(except through db_dump/db_load conversion). Most rpm-4.0 versions
have support for
both db-1.85 and whatever Berkeley DB version was current when
The two issues that would need deciding for coexisting vendor <->
custom rpm are
1) what version of Berkeley DB to build with? Answer: same as
2) what paths to use when installing? Answer: don't collide with
A typical answer usually involves deciding whether the vendor's or
the custom rpm
is the "production" version, and installing the other version on a
As long as the rpmdb can be shared, the two versions of rpm can
because they use the same version of Berkeley DB.
3) Replace the vendor's rpm everywhere.
I can supply details if desired, but I suspect that replacing is
infeasible for you.
The other compatibility issue is "new and shiny rpm5" features.
Features and compatibility
are always at odds: old version(s) will lack support for new features.
Typically that means choosing the balance point between features <->
and then identifying the version of rpm that supplies the needed
That's the general statement of the problem. I can supply additional
Your hardest compatibility issue is with Sun, IBM, and old SuSE using
to rpm-4.0.x will simplify your problem space (imho), and that's what
I would suggest.
73 de Jeff
Received on Mon Mar 10 17:31:37 2008