Bug#803976: closed by Ondřej Surý <ondrej at debian.org> (Bug#803976: fixed in cyrus-imapd-2.4 2.4.18-1)

Agustín Eijo aeijo at mpba.gov.ar
Tue Dec 29 13:34:39 UTC 2015


Hello Ondrej,

I tried with 2.4.18-2

But, I had this warning:

     db5.1_archive: DB_ENV->log_archive: DB_NOTFOUND: No matching key/data pair found

And, this error:

     /usr/lib/cyrus/bin/upgrade-db: 54: /usr/lib/cyrus/bin/upgrade-db: 
/usr/sbin/cvt_cyrusdb: not found

The output in debug was:

     + export PATH=/sbin:/usr/sbin:/bin:/usr/bin
     + LC_ALL=C gawk /^configdirectory:[[:blank:]]/ { print $2 }
     + CONFIG_DIR=/var/lib/cyrus
     + date +%Y%m%d-%H%M%S
     + BACKUP_DIR=/var/backup/cyrus-imapd/20151229-095634
     + mkdir -p /var/backup/cyrus-imapd/20151229-095634
     + upgradealldb /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-db-types.active
     + OLD_LIST=/usr/lib/cyrus/cyrus-db-types.active
     + NEW_LIST=/usr/lib/cyrus/cyrus-db-types.txt
     + sed -e s/BerkeleyDB//
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.active
     + OLD_DBVERSION=5.1
     + sed -e s/BerkeleyDB//
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVERSION=5.3
     + [ 5.1 != 5.3 ]
     + DB_UTIL_NOT_FOUND=
     + [ ! -x /usr/bin/db5.1_recover ]
     + [ ! -x /usr/bin/db5.3_upgrade ]
     + [ -n  ]
     + backupbdb 5.1
     + mkdir -p /var/backup/cyrus-imapd/20151229-095634/db
     + su cyrus -c db5.1_recover -h /var/lib/cyrus/db
     + read log_file
     + su cyrus -c db5.1_archive -h /var/lib/cyrus/db -l
     db5.1_archive: DB_ENV->log_archive: DB_NOTFOUND: No matching key/data pair found
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^ANNOTATION[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + DBFILE=annotations.db
     + [ -n  ]
     + [ -f /var/lib/cyrus/annotations.db ]
     + [ -n  -o 5.1 != 5.3 ]
     + backupdb annotations.db skiplist
     + cp -a /var/lib/cyrus/annotations.db /var/backup/cyrus-imapd/20151229-095634
     + upgradedb annotations.db skiplist skiplist
     + mktemp /tmp/annotations.db.XXXXXXXX
     + TMPFILE=/tmp/annotations.db.w2eglUaq
     + /usr/sbin/cvt_cyrusdb /var/lib/cyrus/annotations.db skiplist 
/tmp/annotations.db.w2eglUaq skiplist
     /usr/lib/cyrus/bin/upgrade-db: 55: /usr/lib/cyrus/bin/upgrade-db: 
/usr/sbin/cvt_cyrusdb: not found
     dpkg: error al procesar el paquete cyrus-common (--configure):

With this modification:

54c54
<     /usr/lib/cyrus/cvt_cyrusdb $CONFIG_DIR/$1 $2 $TMPFILE $3
---
 >     /usr/sbin/cvt_cyrusdb $CONFIG_DIR/$1 $2 $TMPFILE $3

The output was:

     + set -e
     + export PATH=/sbin:/usr/sbin:/bin:/usr/bin
     + LC_ALL=C gawk /^configdirectory:[[:blank:]]/ { print $2 }
     + CONFIG_DIR=/var/lib/cyrus
     + date +%Y%m%d-%H%M%S
     + BACKUP_DIR=/var/backup/cyrus-imapd/20151229-100507
     + mkdir -p /var/backup/cyrus-imapd/20151229-100507
     + upgradealldb /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-db-types.active
     + OLD_LIST=/usr/lib/cyrus/cyrus-db-types.active
     + NEW_LIST=/usr/lib/cyrus/cyrus-db-types.txt
     + sed -e s/BerkeleyDB//
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.active
     + OLD_DBVERSION=5.1
     + sed -e s/BerkeleyDB//
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVERSION=5.3
     + [ 5.1 != 5.3 ]
     + DB_UTIL_NOT_FOUND=
     + [ ! -x /usr/bin/db5.1_recover ]
     + [ ! -x /usr/bin/db5.3_upgrade ]
     + [ -n  ]
     + backupbdb 5.1
     + mkdir -p /var/backup/cyrus-imapd/20151229-100507/db
     + su cyrus -c db5.1_recover -h /var/lib/cyrus/db
     + read log_file
     + su cyrus -c db5.1_archive -h /var/lib/cyrus/db -l
     db5.1_archive: DB_ENV->log_archive: DB_NOTFOUND: No matching key/data pair found
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^ANNOTATION[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + DBFILE=annotations.db
     + [ -n  ]
     + [ -f /var/lib/cyrus/annotations.db ]
     + [ -n  -o 5.1 != 5.3 ]
     + backupdb annotations.db skiplist
     + cp -a /var/lib/cyrus/annotations.db /var/backup/cyrus-imapd/20151229-100507
     + upgradedb annotations.db skiplist skiplist
     + mktemp /tmp/annotations.db.XXXXXXXX
     + TMPFILE=/tmp/annotations.db.Pariro4V
     + /usr/lib/cyrus/cvt_cyrusdb /var/lib/cyrus/annotations.db skiplist 
/tmp/annotations.db.Pariro4V skiplist
     /usr/lib/cyrus/bin/upgrade-db: 54: /usr/lib/cyrus/bin/upgrade-db: 
/usr/lib/cyrus/cvt_cyrusdb: not found
     dpkg: error al procesar el paquete cyrus-common (--configure):
      el subproceso instalado el script post-installation devolvió el código de salida de 
error 127


And with this modifications:

54c54
<     /usr/lib/cyrus/cvt_cyrusdb $CONFIG_DIR/$1 $2 $TMPFILE $3
---
 >     /usr/sbin/cvt_cyrusdb $CONFIG_DIR/$1 $2 $TMPFILE $3
170,172c170
<               if [ -n "${DO_UPGRADE_DB}" ]; then
<                   upgradedb $DBFILE $OLD_DBVALUE $NEW_DBVALUE
<               fi
---
 >               upgradedb $DBFILE $OLD_DBVALUE $NEW_DBVALUE

The upgrade ran successfully, and the output was:

     + set -e
     + export PATH=/sbin:/usr/sbin:/bin:/usr/bin
     + LC_ALL=C gawk /^configdirectory:[[:blank:]]/ { print $2 }
     + CONFIG_DIR=/var/lib/cyrus
     + date +%Y%m%d-%H%M%S
     + BACKUP_DIR=/var/backup/cyrus-imapd/20151229-101550
     + mkdir -p /var/backup/cyrus-imapd/20151229-101550
     + upgradealldb /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-db-types.active
     + OLD_LIST=/usr/lib/cyrus/cyrus-db-types.active
     + NEW_LIST=/usr/lib/cyrus/cyrus-db-types.txt
     + sed -e s/BerkeleyDB//
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.active
     + OLD_DBVERSION=5.1
     + sed -e s/BerkeleyDB//
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVERSION=5.3
     + [ 5.1 != 5.3 ]
     + DB_UTIL_NOT_FOUND=
     + [ ! -x /usr/bin/db5.1_recover ]
     + [ ! -x /usr/bin/db5.3_upgrade ]
     + [ -n  ]
     + backupbdb 5.1
     + mkdir -p /var/backup/cyrus-imapd/20151229-101550/db
     + su cyrus -c db5.1_recover -h /var/lib/cyrus/db
     + read log_file
     + su cyrus -c db5.1_archive -h /var/lib/cyrus/db -l
     db5.1_archive: DB_ENV->log_archive: DB_NOTFOUND: No matching key/data pair found
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^ANNOTATION[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + DBFILE=annotations.db
     + [ -n  ]
     + [ -f /var/lib/cyrus/annotations.db ]
     + [ -n  -o 5.1 != 5.3 ]
     + backupdb annotations.db skiplist
     + cp -a /var/lib/cyrus/annotations.db /var/backup/cyrus-imapd/20151229-101550
     + [ -n  ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^DBENGINE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=BerkeleyDB5.3
     + [ -z BerkeleyDB5.3 ]
     + DO_UPGRADE_DB=
     + [ BerkeleyDB5.3 != BerkeleyDB5.1 ]
     + DO_UPGRADE_DB=yes
     + DBFILE=
     + continue
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^DUPLICATE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + DBFILE=deliver.db
     + [ -n  ]
     + [ -f /var/lib/cyrus/deliver.db ]
     + [ -n  -o 5.1 != 5.3 ]
     + backupdb deliver.db skiplist
     + cp -a /var/lib/cyrus/deliver.db /var/backup/cyrus-imapd/20151229-101550
     + [ -n  ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^MBOX[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + DBFILE=mailboxes.db
     + [ -n  ]
     + [ -f /var/lib/cyrus/mailboxes.db ]
     + [ -n  -o 5.1 != 5.3 ]
     + backupdb mailboxes.db skiplist
     + cp -a /var/lib/cyrus/mailboxes.db /var/backup/cyrus-imapd/20151229-101550
     + [ -n  ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^PTS[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + [ -n  ]
     + [ -f /var/lib/cyrus/ ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^QUOTA[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=quotalegacy
     + [ -z quotalegacy ]
     + DO_UPGRADE_DB=
     + [ quotalegacy != quotalegacy ]
     + DBFILE=
     + [ -n  ]
     + [ -n  ]
     + [ -f /var/lib/cyrus/ ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^SEEN[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + [ -n  ]
     + [ -n  ]
     + [ -f /var/lib/cyrus/ ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^STATUSCACHE[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + [ -n  ]
     + [ -f /var/lib/cyrus/ ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^SUBS[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=flat
     + [ -z flat ]
     + DO_UPGRADE_DB=
     + [ flat != flat ]
     + DBFILE=
     + [ -n  ]
     + [ -n  ]
     + [ -f /var/lib/cyrus/ ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^TLS[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=skiplist
     + [ -z skiplist ]
     + DO_UPGRADE_DB=
     + [ skiplist != skiplist ]
     + DBFILE=
     + [ -n  ]
     + [ -f /var/lib/cyrus/ ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + LC_ALL=C gawk /^USERDENY[[:blank:]]/ { print $2 } /usr/lib/cyrus/cyrus-db-types.txt
     + NEW_DBVALUE=flat
     + [ -z flat ]
     + DO_UPGRADE_DB=
     + [ flat != flat ]
     + DBFILE=
     + DBFILE=user_deny.db
     + [ -n  ]
     + [ -f /var/lib/cyrus/user_deny.db ]
     + [ -n  -o 5.1 != 5.3 ]
     + backupdb user_deny.db flat
     + cp -a /var/lib/cyrus/user_deny.db /var/backup/cyrus-imapd/20151229-101550
     + [ -n  ]
     + read -r OLD_DBKEY OLD_DBVALUE
     + [ 5.1 != 5.3 ]
     + checkpointbdb 5.3
     + su cyrus -c db5.3_checkpoint -h /var/lib/cyrus/db -1
     + su cyrus -c db5.3_archive -h /var/lib/cyrus/db -d
     + return 0
     + RET=0
     + [ 0 -eq 0 ]
     + cp -p /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-db-types.active
     + exit 0
     Configurando cyrus-imapd (2.4.18-2) ...
     Configurando cyrus-imapd-2.4 (2.4.18-2) ...
     Configurando cyrus-pop3d (2.4.18-2) ...
     Configurando cyrus-pop3d-2.4 (2.4.18-2) ...

I hope it helps,
Thank you very much,
Agu

PD: And feel free to ask me to try something...



El 23/12/2015 a las 11:12 a.m., Ondřej Surý escribió:
> Hmm, I see. It basically means I have to trigger the BDB update if the
> environment is found or I'll use the solution you have suggested :)
>
> Cheers,
> Ondrej
>
> On Wed, Dec 23, 2015, at 13:32, Agustín Eijo wrote:
>> Hi Ondrej,
>>
>> This patch does not work. The script ends with the following error (in
>> both cases: wheezy
>> -> jessie and wheezy -> sid ) :
>>
>> db5.3_checkpoint: BDB1538 Program version 5.3 doesn't match environment
>> version 5.1
>> db5.3_checkpoint: DB_ENV->open: BDB0091 DB_VERSION_MISMATCH: Database
>> environment version
>> mismatch
>>
>> I attach the output script with set -x  ( debug-upgrade-db.txt )
>>
>> Agu
>>
>>
>> El 23/12/2015 a las 04:59 a.m., Ondřej Surý escribió:
>>> Hi Augustín,
>>>
>>> are you able to retry the upgrade with following patch?
>>>
>>> diff --git a/debian/cyrus-upgrade-db b/debian/cyrus-upgrade-db
>>> index 82a9d8e..2077a1f 100755
>>> --- a/debian/cyrus-upgrade-db
>>> +++ b/debian/cyrus-upgrade-db
>>> @@ -182,13 +182,8 @@ upgradealldb() {
>>>    
>>>        # Create Berkeley DB checkpoint and remove old logs
>>>        if [ -n "${DO_UPGRADE_BDB}" -a -d $CONFIG_DIR/db ]; then
>>> -       if [ -f /usr/lib/cyrus/berkeley-db-found.txt ]; then
>>> -           # Create new checkpoint
>>> -           checkpointbdb $NEW_DBVERSION
>>> -       else
>>> -           # Remove empty environment
>>> -           rm -rf $CONFIG_DIR/db
>>> -       fi
>>> +       # Create new checkpoint
>>> +       checkpointbdb $NEW_DBVERSION
>>>        fi
>>>    
>>>        [ -f /usr/lib/cyrus/berkeley-db-found.txt ] && \
>>>
>>> (aka never remove the BerkeleyDB environment, just checkpoint it every
>>> time)
>>>
>>> Cheers,
>>> Ondrej
>>>
>>> On Tue, Dec 22, 2015, at 22:30, Agustín Eijo wrote:
>>>> Hello,
>>>>
>>>> I tried to make the upgrade from wheezy to sid, but I have the same
>>>> problem with 2.4.18-1.
>>>>
>>>> The script  /usr/lib/cyrus/bin/upgrade-db delete /var/lib/cyrus/db
>>>> directory
>>>>
>>>> I tried changing:
>>>>
>>>> 190c190
>>>> <           rm -rf $CONFIG_DIR/db
>>>> ---
>>>>    >           rm -rf $CONFIG_DIR/db/*
>>>>
>>>> And the upgrade works well...
>>>>
>>>> Agustín.
>>>>
>>>>
>>>> El 21/12/2015 a las 09:24 a.m., Debian Bug Tracking System escribió:
>>>>> This is an automatic notification regarding your Bug report
>>>>> which was filed against the cyrus-common package:
>>>>>
>>>>> #803976: cyrus-common: /usr/lib/cyrus/bin/upgrade-db delete /var/lib/cyrus/db on upgrade from wheezy to jessie
>>>>>
>>>>> It has been closed by Ondřej Surý <ondrej at debian.org>.
>>>>>
>>>>> Their explanation is attached below along with your original report.
>>>>> If this explanation is unsatisfactory and you have not received a
>>>>> better one in a separate message then please contact Ondřej Surý <ondrej at debian.org> by
>>>>> replying to this email.
>>>>>
>>>>>
>> Email had 1 attachment:
>> + debug-upgrade-db.txt
>>    6k (text/plain)
>



More information about the Pkg-Cyrus-imapd-Debian-devel mailing list