81 lines
2.4 KiB
Bash
81 lines
2.4 KiB
Bash
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
VERSION=${DPKG_MAINTSCRIPT_PACKAGE##*-}
|
|
|
|
clean_dir() {
|
|
if [ -d "$1" ] && [ ! -L "$1" ]; then
|
|
rmdir "$1" >/dev/null 2>/dev/null || true
|
|
fi
|
|
}
|
|
|
|
drop_cluster() {
|
|
# if we still have the postgresql-common package, use it to also shutdown
|
|
# server, etc.; otherwise just remove the directories
|
|
if [ -x /usr/bin/pg_dropcluster ]; then
|
|
pg_dropcluster --stop-server $VERSION "$1"
|
|
else
|
|
# remove data directory
|
|
PGDATALINK="/etc/postgresql/$VERSION/$1/pgdata"
|
|
if [ -e "$PGDATALINK" ]; then
|
|
rm -rf $(readlink -f "$PGDATALINK") "$PGDATALINK"
|
|
else
|
|
rm -rf "/var/lib/postgresql/$VERSION/$1/"
|
|
fi
|
|
|
|
# remove log file, including rotated ones
|
|
LOGLINK="/etc/postgresql/$VERSION/$1/log"
|
|
if [ -e "$LOGLINK" ]; then
|
|
LOG=$(readlink -f "$LOGLINK")
|
|
rm -f $LOG* "$LOGLINK"
|
|
else
|
|
rm -f /var/log/postgresql/postgresql-$VERSION-"$1".log*
|
|
fi
|
|
|
|
# remove conffiles
|
|
for f in pg_hba.conf pg_ident.conf postgresql.conf start.conf environment pg_ctl.conf; do
|
|
rm -f /etc/postgresql/$VERSION/"$1"/$f
|
|
done
|
|
# remove empty conf.d directories
|
|
for d in /etc/postgresql/$VERSION/"$1"/*/; do
|
|
clean_dir "$d"
|
|
done
|
|
|
|
clean_dir /etc/postgresql/$VERSION/"$1"
|
|
fi
|
|
}
|
|
|
|
purge_package () {
|
|
# ask the user if they want to remove clusters. If debconf is not
|
|
# available, just remove everything
|
|
if [ -e /usr/share/debconf/confmodule ]; then
|
|
db_set $DPKG_MAINTSCRIPT_PACKAGE/postrm_purge_data true
|
|
db_input high $DPKG_MAINTSCRIPT_PACKAGE/postrm_purge_data || :
|
|
db_go || :
|
|
db_get $DPKG_MAINTSCRIPT_PACKAGE/postrm_purge_data || :
|
|
[ "$RET" = "false" ] && return 0
|
|
fi
|
|
|
|
for c in /etc/postgresql/$VERSION/*; do
|
|
[ -e "$c/postgresql.conf" ] || continue
|
|
cluster=$(basename "$c")
|
|
echo "Dropping cluster $cluster..."
|
|
drop_cluster "$cluster"
|
|
done
|
|
|
|
clean_dir /etc/postgresql/$VERSION
|
|
clean_dir /var/lib/postgresql/$VERSION
|
|
clean_dir /var/log/postgresql/$VERSION
|
|
}
|
|
|
|
if [ "$1" = purge ] && [ -d "/etc/postgresql/$VERSION" ] && [ "$(ls /etc/postgresql/$VERSION)" ]; then
|
|
# can't load debconf from a function
|
|
if [ -e /usr/share/debconf/confmodule ]; then
|
|
. /usr/share/debconf/confmodule
|
|
fi
|
|
purge_package
|
|
fi
|
|
|
|
#DEBHELPER#
|