Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > fdd032ed6ad5fc3924643b964b53e923 > scriptlet

bacula-dir-sqlite3-5.0.3-2.mga1.i586.rpm

POSTIN

/bin/sh
umask 077
for f in create_sqlite3_database drop_sqlite3_database drop_sqlite3_tables \
    grant_sqlite3_privileges make_sqlite3_tables update_sqlite3_tables ; do
    ln -snf $f /usr/lib/bacula/${f/sqlite3/bacula}
done
ln -snf bacula-dir-sqlite3 /usr/sbin/bacula-dir
ln -snf bscan-sqlite3 /usr/sbin/bscan
ln -snf dbcheck-sqlite3 /usr/sbin/dbcheck
if [ -s /var/lib/bacula/bacula.db -a -x /usr/bin/sqlite ]; then
	DB2_VER=`echo "select * from Version;" | \
	    sqlite /var/lib/bacula/bacula.db 2>/dev/null | tail -n 1`
fi
if [ -n "$DB2_VER" ]; then
    # we have an sqlite2 db 
    echo "SQLITE 2 database detected: will try to upgrade it."
    echo "a backup of the untouched database will be found in /var/lib/bacula/bacula_backup.sql.bz2"
    #TODO: check if bacula is running 
    #service bacula-dir stop
    echo ".dump" | sqlite /var/lib/bacula/bacula.db | \
	bzip2 > /var/lib/bacula/bacula_backup.sql.bz2 
    if [ -e /var/lib/bacula/rpm_db.log ]; then
	mv /var/lib/bacula/rpm_db.log /var/lib/bacula/rpm_db.log.old
    fi
    # try to upgrade it to minimum requirement for sqlite3
    for v in `seq $DB2_VER 7`; do
	/usr/lib/bacula/update_sqlite_tables_${v}_to_$(($v + 1)) >> /var/lib/bacula/rpm_db.log 2>&1
    done
    touch /var/lib/bacula/bacula.db.new
    echo .dump | sqlite /var/lib/bacula/bacula.db | \
	sed 's/ INTEGER UNSIGNED AUTOINCREMENT,/ INTEGER,/' | \
	sqlite3 /var/lib/bacula/bacula.db.new >> /var/lib/bacula/rpm_db.log 2>&1
    mv /var/lib/bacula/bacula.db.new /var/lib/bacula/bacula.db
fi
DB_VER=`echo "select * from Version;" | \
    sqlite3 /var/lib/bacula/bacula.db 2>/dev/null | tail -n 1`
if [ -z "$DB_VER" -a -n "$DB2_VER" ]; then
    echo "ERROR: conversion from Sqlite2 to Sqlite3 failed!" 1>&2
    echo "see log file /var/lib/bacula/rpm_db.log" 1>&2
    echo "save and drop any existing database" 1>&2
    echo "and recreate it using the following scripts:" 1>&2
    echo "	/usr/lib/bacula/create_bacula_database" 1>&2
    echo "	/usr/lib/bacula/make_bacula_tables" 1>&2
    echo "	/usr/lib/bacula/grant_bacula_privileges" 1>&2
elif [ -z "$DB_VER" ]; then
# grant privileges and create tables
    if [ -e /var/lib/bacula/rpm_db.log ]; then
	mv /var/lib/bacula/rpm_db.log /var/lib/bacula/rpm_db.log.old
    fi
    if [ -s /var/lib/bacula/bacula.db ]; then
	echo "found a possibly corrupt /var/lib/bacula/bacula.db" 1>&2
	echo "renaming to: /var/lib/bacula/bacula.db.$$" 1>&2
	mv /var/lib/bacula/bacula.db /var/lib/bacula/bacula.db.$$
    fi
    /usr/lib/bacula/create_bacula_database >> /var/lib/bacula/rpm_db.log 2>&1
    /usr/lib/bacula/make_bacula_tables >> /var/lib/bacula/rpm_db.log 2>&1
    /usr/lib/bacula/grant_bacula_privileges >> /var/lib/bacula/rpm_db.log 2>&1
    if [ $? != 0 ]; then
	echo "automatic database creation failed!" 1>&2
	echo "see log file /var/lib/bacula/rpm_db.log" 1>&2
	echo "if this is the first bacula installation" 1>&2
	echo "please check and run the following scripts:" 1>&2
	echo "	/usr/lib/bacula/create_bacula_database" 1>&2
	echo "	/usr/lib/bacula/make_bacula_tables" 1>&2
	echo "	/usr/lib/bacula/grant_bacula_privileges" 1>&2
	echo "else manually update the database to version 12 using the scripts:" 1>&2
	echo "	/usr/lib/bacula/update_sqlite3_tables_X_to_Y" 1>&2
	echo "and:" 1>&2
	echo "	/usr/lib/bacula/update_bacula_tables" 1>&2
    fi
elif [ "$DB_VER" -lt "8" ]; then
    echo "ERROR: your bacula database version is too old to be upgraded automatically" 1>&2
    echo "save and drop any existing database" 1>&2
    echo "and recreate it using the following scripts:" 1>&2
    echo "	/usr/lib/bacula/create_bacula_database" 1>&2
    echo "	/usr/lib/bacula/make_bacula_tables" 1>&2
    echo "	/usr/lib/bacula/grant_bacula_privileges" 1>&2
elif [ "$DB_VER" -lt "12" ]; then
    # in case we did a backup of an sqlite 2 database do not overwrite it
    if [ -z "$DB2_VER" ]; then
	echo "Backing up bacula tables"
	echo ".dump" | sqlite3 /var/lib/bacula/bacula.db | bzip2 > /var/lib/bacula/bacula_backup.sql.bz2
	if [ -e /var/lib/bacula/rpm_db.log ]; then
	    mv /var/lib/bacula/rpm_db.log /var/lib/bacula/rpm_db.log.old
	fi
    fi
    echo "Upgrading bacula tables"
    for v in `seq $DB_VER $((12 - 2))`; do
	/usr/lib/bacula/update_sqlite3_tables_${v}_to_$(($v + 1)) >> /var/lib/bacula/rpm_db.log 2>&1
    done
    /usr/lib/bacula/update_bacula_tables >> /var/lib/bacula/rpm_db.log 2>&1

    NDB_VER=`echo "select * from Version;" | \
	sqlite3 /var/lib/bacula/bacula.db 2>/dev/null | tail -n 1`
    if [ "$NDB_VER" -lt "12" ]; then
	echo "There was a problem updating Bacula Sqlite3 database from version $DB_VER to 12" 1>&2
	echo "see log file /var/lib/bacula/rpm_db.log" 1>&2
	echo "manually update the database to version 12 using the scripts:" 1>&2
	echo "	/usr/lib/bacula/update_sqlite3_tables_X_to_Y" 1>&2
	echo "and:" 1>&2
	echo "	/usr/lib/bacula/update_bacula_tables" 1>&2
    else
	echo "Bacula Sqlite3 database updated to version $NDB_VER"
	echo "see log file /var/lib/bacula/rpm_db.log"
	echo "If bacula works correctly you can remove the backup file /var/lib/bacula/bacula_backup.sql.bz2"
    fi
fi
chown -R bacula:bacula /var/lib/bacula
chmod -R u+rX,go-rwx /var/lib/bacula
/usr/share/rpm-helper/add-service bacula $1 bacula-dir