Red Hat Linux/BDB dependencies upgrade questions
Kevin M. Myer
kevin_myer at iu13.org
Thu Dec 12 09:28:24 EST 2002
I have an update scheduled for our mail server over the Christmas break
(assuming I can get all the snags worked out of the upgrade process). Where I
Cyrus-IMAPd v2.1.0pre (from CVS just before SASLv2 was required)
Cyrus-SASL v1.5.27 w/ Simon Loader's LDAP patch
Red Hat Linux 7.1 w/ all errata applied
Berkeley DB is Red Hat's packages, version 3.2.9
Where I want to go:
Cyrus-SASL v2.1.10 using saslauthd w/ LDAP authenticaiton
Red Hat Linux 7.3 w/ all errata applied
The snag I ran into is this: I restored my /var/imap from my production mail
server to my test mail server, from backup. For starters, I used Simon Matter's
Cyrus IMAP RPM and his conversion scripts and upgraded my RPM on the test
server. While the conversion script appeared to run, checking the logs showed
that not to be the case. My log showed this:
cvt_cyrusdb: DBERROR db3: Program version 3.3.11 doesn't match
environment version 3.2.9
I think this is easily explained - Red Hat 7.1 uses BDB 3.2.9 and Red Hat 7.3
uses BDB 3.3.11 (but it has a 3.2.X compatibility library). But suffice to say,
I've not been able to get anything thats in BDB format into skiplist format.
I've done the following: db32_dump the database files (mailboxes.db,
tls_sessions.db, and deliver.db) to text, then db_load the text file to a new
database. The size of the database is cut in about a half but cvt_cyrusdb
complains about the same above problem. So I temporarily made libdb3.3
disappear and recompiled Cyrus, so it would link with libdb3.2 and reinstalled.
Then the message changes to:
cvt_cyrusdb: incorrect version of Berkeley db: compiled against 3.3.11,
linked against 3.2.9
This is probably because in Red Hat 7.3, while they provide a compatibility 3.2
library, they don't provide the 3.2 headers so I'm thinking it linked against
3.2 but used the 3.3 headers.
So where I'm headed now in my thinking is to leave the server at Red Hat 7.1
until I get everything converted to skiplist, then upgrade to 7.3, at which
point it won't matter (hopefully) what version of BDB I have installed. For
that to work, I need to make sure that there are no BDB version dependencies in
Cyrus IMAP. By that I mean are there any other databases (besides mailboxes.db,
deliver.db and tls_sessions.db) that need to be convereted from BDB to skiplist?
FWIW, the /var/imap/users/* flat databases converted to skiplist just fine.
What about the cyrus.* files in a user's mailbox (cyrus.index, cyrus.header, and
cyrus.cache)? And is /var/imap/db/* simply the database transaction log? Or do
I have to worry about converting that to something else as well?
Bottom line is this: if I convert mailboxes.db, deliver.db and tls_sessions.db
from BDB 3.2.9 -> skiplist, then upgrade to a new version of BDB and Red Hat
Linux 7.3, are there any other databases I need to upgrade?
Or is there an easier way to deal with different BDB versions across the Red Hat
distributions so that I can upgrade to 7.3 first, turn on some environment
compatibility flag, and migrate to skiplist? The general concensus I gather
from this list seems to be that skiplist is the way to go but running configure
--help at least says that db3 or flat databases are the default for all the
databases listed (duplicate-db, mboxlist-db, seen-db, subs-db, and tls-db). I
know Simon's RPMs use skiplist for a number of those but if skiplist is the way
to go, why isn't it the default?
If anyone has been down this road before, I'd appreciate your insight.
Kevin M. Myer
Lancaster-Lebanon Intermediate Unit 13
More information about the Info-cyrus