Hi, I am not a PostgreSQL specialist, but to become a DD I have been asked to send patches to fix some RC bugs, so...
Anyway, I am currently working on these issues, and I have managed to get this package installed correctly, and the database created. It would need a few more tests, but is looks like the modifications to the postinst script might close #272191 as well. This patch also adds support for deleting the database if the DB server is on localhost. If someone could test this patch and give a report on it, it would be nice. J.L., as I am working the scripts for this package, would you like me to continue and try to add support for remote database servers ? Regards, Regis
diff -urN bacula-1.36.1/debian/bacula-director-pgsql.postinst bacula-1.36.1_patched/debian/bacula-director-pgsql.postinst
--- bacula-1.36.1/debian/bacula-director-pgsql.postinst 2005-02-20 20:52:30.300692272 +0000
+++ bacula-1.36.1_patched/debian/bacula-director-pgsql.postinst 2005-02-20 22:24:45.865158560 +0000
@@ -46,42 +46,47 @@
db_get bacula-director-pgsql/db_host || true
PGSQL_HOST="$RET"
+
+ db_get bacula-director-pgsql/pgsql_root_username || true
+ DB_ADMIN="$RET"
# default: "localhost"
if [ "$PGSQL_HOST" != "localhost" ]; then
PGSQL_HOST_STRING="-h $PGSQL_HOST"
export PGUSER=$DB_ADMIN
- PGSQLCMD="/usr/bin/psql $PGSQL_HOST_STRING"
else # 'localhost' install
if ! getent passwd $DB_ADMIN >/dev/null ; then
echo -e "\nFATAL: the specified DB Administrator does not exist in 'passwd' databases"
exit 1
fi
- PGSQLCMD="su -s /bin/sh $dbadmin -c /usr/bin/psql"
+ SUPOSTGRES_CMD="su -s /bin/sh $DB_ADMIN -c"
fi
+
+ PGSQLCMD="/usr/bin/psql $PGSQL_HOST_STRING"
# Non-local setups are not yet supported.
# Patches are welcome !!!
echo -n "Checking DB connectivity..."
- if ! $PGSQLCMD -l >/dev/null 2>&1; then
+ if ! $SUPOSTGRES_CMD "$PGSQLCMD -l" >/dev/null 2>&1; then
echo -e "\nFATAL: Could not connect to PostgreSQL server at $PGSQL_HOST"
exit 1
fi
echo "Ok."
+ CREATE_DB=`$SUPOSTGRES_CMD "$PGSQLCMD -l" | grep bacula` || true
db_get bacula-director-pgsql/create_tables || true
- if [ "$RET" = "true" ]; then
+ if [ "$RET" = "true" -a -z "$CREATE_DB" ]; then
if [ "$PGSQL_HOST" = "localhost" ]; then
# localhost, so we can go the easy way :-)
# We are already ·DB_ADMIN -- no need to worry about privileges
echo -n "Creating Catalog \"$CATALOG\" at 'localhost'... "
- if ! eval $PGSQLCMD -d 'template1' -c "\"CREATE DATABASE bacula;\""; then
+ if ! $SUPOSTGRES_CMD "$PGSQLCMD template1 -c \"CREATE DATABASE $CATALOG;\"" > /dev/null 2>&1; then
echo -e "\nERROR: Database creation failed!";
exit 1;
fi
@@ -95,7 +100,7 @@
# Create tables
echo -n "Creating tables ..."
- if ! su -s /bin/sh $DB_ADMIN -c $MAKE_SQL_TABLES >/dev/null 2>&1
+ if ! $SUPOSTGRES_CMD "$MAKE_SQL_TABLES" > /dev/null 2>&1
then
echo -e "\nERROR: Table creation failed!"
exit 1
@@ -110,7 +115,7 @@
export DBUSER DBPASS
echo -n "Granting privileges ..."
- if ! $GRANT_SQL_TABLES >/dev/null 2>&1
+ if ! $GRANT_SQL_TABLES > /dev/null 2>&1
then
echo -e "\nERROR: Granting privileges failed!"
exit 1
@@ -161,7 +166,7 @@
DBUSER="bacula"
export DBUSER DBPASS
echo -n "Granting privileges ..."
- if ! $GRANT_SQL_PRIVS >/dev/null 2>&1
+ if ! $SUPOSTGRES_CMD "$GRANT_SQL_PRIVS" > /dev/null 2>&1
then
echo -e "\nERROR: Granting privileges failed!"
exit 1
@@ -170,7 +175,7 @@
#AUTHFILE=`getent passwd bacula | cut -d ':' -f 6`/.pgpass
AUTHFILE=/var/lib/bacula/.pgpass
- echo "localhost:*:bacula:$DB_USER:$DB_PASS" > $AUTHFILE
+ echo "localhost:*:bacula:$DBUSER:$DBPASS" > $AUTHFILE
chown bacula:root $AUTHFILE # reported by Shin-young Yune
chmod 0600 $AUTHFILE
@@ -183,7 +188,7 @@
echo -n "Processing configuration ..."
TARGET=$CFGFILE.dpkg-tmp
- sed -e "s/dbname = bacula;/dbname = bacula; DB Address = $PGHOST;/" \
+ sed -e "s/dbname = bacula;/dbname = bacula; DB Address = $PGSQL_HOST;/" \
-e "s/@db_user@/$DBUSER/" -e "s/@db_pswd@/$DBPASS/" \
$DEFCONFIG/bacula-dir.conf > $TARGET
diff -urN bacula-1.36.1/debian/bacula-director-pgsql.postrm bacula-1.36.1_patched/debian/bacula-director-pgsql.postrm
--- bacula-1.36.1/debian/bacula-director-pgsql.postrm 2005-02-20 20:52:30.289693944 +0000
+++ bacula-1.36.1_patched/debian/bacula-director-pgsql.postrm 2005-02-20 22:25:56.397436024 +0000
@@ -22,12 +22,28 @@
CONFFILE=/etc/bacula/bacula-dir.conf
+CATALOG="bacula"
case "$1" in
purge)
rm -f $CONFFILE $CONFFILE.dist
# Drop Bacula's user privileges? Can't do
- # Potentially, drop DB ... Can't do?
+ # Potentially, drop DB ... Works only for localhost so far
+
+ db_get bacula-director-pgsql/db_host || true
+ PGSQL_HOST="$RET"
+
+ db_get bacula-director-pgsql/pgsql_root_username || true
+ DB_ADMIN="$RET"
+
+ db_get bacula-director-pgsql/remove_catalog_on_purge || true
+ PGSQL_PURGE="$RET"
+
+ if [ "$PGSQL_HOST" = "localhost" -a "$PGSQL_PURGE" = "true" ]; then
+ echo -n "Destroying Catalog \"$CATALOG\" at 'localhost'... "
+ su -s /bin/sh $DB_ADMIN -c "psql template1 -c \"DROP DATABASE $CATALOG;\"" || true
+ fi
+
db_purge
;;
signature.asc
Description: This is a digitally signed message part

