diff options
Diffstat (limited to 'pg_updateaptconfig')
-rwxr-xr-x | pg_updateaptconfig | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/pg_updateaptconfig b/pg_updateaptconfig new file mode 100755 index 0000000..f007e38 --- /dev/null +++ b/pg_updateaptconfig @@ -0,0 +1,39 @@ +#!/bin/sh + +# Tell apt which PostgreSQL versions have clusters present + +set -eu + +APTCONF="/etc/apt/apt.conf.d/01autoremove-postgresql" +TMPCONF="$(mktemp --tmpdir pg_updateaptconfig.XXXXXX)" +trap "rm -f $TMPCONF" EXIT + +cat > $TMPCONF <<EOF +// NO NOT EDIT! +// File maintained by /usr/share/postgresql-common/pg_updateaptconfig. +// +// Mark all PostgreSQL packages as NeverAutoRemove for which PostgreSQL +// clusters exist. This is especially important when the "postgresql" meta +// package changes its dependencies to a new version, which might otherwise +// trigger the old postgresql-NN package to be automatically removed, rendering +// the old database cluster inaccessible. + +APT +{ + NeverAutoRemove + { +EOF + +pg_lsclusters -h | cut -d ' ' -f 1 | uniq | while read version; do + echo " \"^postgresql.*-$version\";" >> $TMPCONF +done + +cat >> $TMPCONF <<EOF + }; +}; +EOF + +if ! cmp --silent $TMPCONF $APTCONF; then + cp $TMPCONF $APTCONF + chmod 444 $APTCONF +fi |