Upgrade Cyrus 2.1.16 to 2.2.8 & Berkeley DB woes

bnies at bluewin.ch bnies at bluewin.ch
Wed Nov 3 10:15:42 EST 2004


Hi,

The documentation at

http://asg.web.cmu.edu/cyrus/download/imapd/install-upgrade.html

says that one can use the command cvt_cyrusdb to convert Cyrus 2.1.x Berkeley
database files to Cyrus 2.2.x skiplist files.

Unfortunately this does not work if Cyrus 2.1.16 is linked against Berkeley
DB 4.1.25 and Cyrus 2.2.8 against Berkeley DB 4.2.52. 

Obviously Berkeley DB 4.2.x is not backwards compatible with 4.1.x. Isn't
there a method to compile it with backwards compatibility?

cvt_cyrusdb terminates then with a "fatal error: can't read mailboxes file"
error message. And it also cannot read the DB-Files in the imap/db directory.



Here's another method for upgrading to the new database format. It requires
that the mailboxes.db was exported with the old version or the ctl_mboxlist.old
utility is linked against db-4.1:

   a) Shut down the Cyrus IMAP server if it is running and make a backup
      of the imap directory.
                                                                        
                                            
      /etc/init.d/cyrus stop
      cd /var/cyrus
      tar -xvf imap.tar imap

   b) Switch to cyrus user
 
      su - cyrus

   c) These database files can be deleted
  
      cd /var/cyrus/imap
      rm db/*
      rm db.backup?/*
      rm deliver.db
      rm tls_sessions.db

   d) For the mailboxes.db, the Berkeley DB 4.1 must be dumped to a flat
      file using ctl_mboxlist linked against db-4.1.so and then be
      imported from the flat file using the new ctl_mailboxlist linked
      against db-4.1.so. The commands are:
                                                                        
                                            
      cd /var/cyrus/imap
      /opt/cyrus/bin/ctl_mboxlist.old -d >mailboxes.txt
      mv mailboxes.db mailboxes.db.old
      rm db/*
      /opt/cyrus/bin/ctl_mboxlist -u <mailboxes.txt

   e) For the seen state databases, the command to convert them all looks
      like:
                                                                        
                                            
      for file in `find /var/cyrus/imap/user -name \*.seen`; do
        mv $file $file.old
        /opt/cyrus/bin/cvt_cyrusdb $file.old flat $file skiplist
      done

Hope this might help someone sometime.

Regards,
Bernd

---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html




More information about the Info-cyrus mailing list