debian-mirror-gitlab/debian/postrm
2017-04-27 11:23:26 +05:30

199 lines
6.2 KiB
Bash

#! /bin/sh
# postrm.skeleton
# Skeleton maintainer script showing all the possible cases.
# Written by Charles Briscoe-Smith, March-June 1998. Public Domain.
# Abort if any command returns an error value
set -e
# Set variables
gitlab_debian_conf=/etc/gitlab/gitlab-debian.conf
gitlab_debian_defaults=/var/lib/gitlab/gitlab-debian.defaults
# This script is called twice during the removal of the package; once
# after the removal of the package's files from the system, and as
# the final step in the removal of this package, after the package's
# conffiles have been removed.
# Ensure the menu system is updated
# Read debian specific configuration
if [ -f ${gitlab_debian_conf} ]; then . ${gitlab_debian_conf}; fi
if [ -f ${gitlab_debian_defaults} ]; then . ${gitlab_debian_defaults}; fi
safely_remove() {
CANDIDATE_DIR=$1
if [ -n "${CANDIDATE_DIR}" ];then
if [ -e ${CANDIDATE_DIR} ]; then
echo "Removing: $i"
rm -rf ${CANDIDATE_DIR}
fi
fi
}
case "$1" in
remove)
# This package is being removed, but its configuration has not yet
# been purged.
:
# Remove diversion
# ldconfig is NOT needed during removal of a library, only during
# installation
;;
purge)
# This package has previously been removed and is now having
# its configuration purged from the system.
:
# purge debconf questions
if [ -e /usr/share/debconf/confmodule ]; then
# Source debconf library.
. /usr/share/debconf/confmodule
# Do you want to remove all data?
db_input high gitlab/purge_data || true
db_go
# Check if we should remove data?
db_get gitlab/purge_data
if [ "${RET}" = "true" ]; then
if [ -n "${gitlab_data_dir}" ] && [ -d ${gitlab_data_dir} ]; then
for i in shared public db repositories secrets.yml Gemfile.lock; do
if [ -e ${gitlab_data_dir}/$i ]; then
echo "Removing: ${gitlab_data_dir}/$i"
rm -rf ${gitlab_data_dir}/$i; fi
done
fi
for i in ${gitlab_log_dir} ${gitlab_cache_path} ${gitlab_pid_path} \
${gitlab_data_dir}; do
safely_remove $i
done
if [ ! -z "${gitlab_user}" ]; then
# Do only if gitlab_user is set
if command -v dropdb >/dev/null; then
echo "Removing Database: gitlab_production"
if runuser -u ${gitlab_user} -- sh -c 'psql gitlab_production -c ""' ; then su postgres -c "dropdb gitlab_production"; fi
else
echo "dropdb command not found. Hence not removing database."
fi
echo "Removing user: ${gitlab_user}"
if id -u ${gitlab_user}; then userdel -r ${gitlab_user}; fi
else
echo "gitlab_user not set. Hence not removing user."
fi
safely_remove ${gitlab_ssl_path}
fi
# Remove my changes to the db.
db_purge
fi
nginx_site="/etc/nginx/sites-available/${GITLAB_HOST}"
if [ -f ${nginx_site} ]; then echo "Found nginx site configuration at ${nginx_site}..."; fi
# we mimic dpkg as closely as possible, so we remove configuration
# files with dpkg backup extensions too:
### Some of the following is from Tore Anderson:
for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist; do
rm -f ${nginx_site}$ext
rm -f ${gitlab_debian_conf}$ext
rm -f ${gitlab_yml}$ext
rm -f ${gitlab_tmpfiles}$ext
rm -f ${gitlab_shell_config}$ext
done
for i in ${nginx_site} ${gitlab_debian_conf} ${gitlab_yml} \
${gitlab_tmpfiles} ${gitlab_shell_config}; do
# remove the configuration file itself
safely_remove $i
# and finally clear it out from the ucf database
if which ucf >/dev/null; then
if [ -n "$i" ]; then ucf --purge $i; fi
fi
if which ucfr >/dev/null; then
if [ -n "$i" ]; then ucfr --purge gitlab $i; fi
fi
done
# remove generated assets
if [ -n "${gitlab_data_dir}" ]; then safely_remove ${gitlab_data_dir}/public/assets; fi
# Remove private copies of configuration files
rm -f ${nginx_site_private}
rm -f ${gitlab_debian_conf_private}
rm -f ${gitlab_yml_private}
rm -f ${gitlab_tmpfiles_private}
rm -f ${gitlab_shell_config_private}
# Remove systemd service overrides
for service in mailroom unicorn sidekiq workhorse; do
path=/etc/systemd/system/gitlab-${service}.service.d
rm -rf $path
done
# cleanup complete
exit 0
;;
disappear)
if test "$2" != overwriter; then
echo "$0: undocumented call to \`postrm $*'" 1>&2
exit 0
fi
# This package has been completely overwritten by package $3
# (version $4). All our files are already gone from the system.
# This is a special case: neither "prerm remove" nor "postrm remove"
# have been called, because dpkg didn't know that this package would
# disappear until this stage.
:
;;
upgrade)
# About to upgrade FROM THIS VERSION to version $2 of this package.
# "prerm upgrade" has been called for this version, and "preinst
# upgrade" has been called for the new version. Last chance to
# clean up.
:
;;
failed-upgrade)
# About to upgrade from version $2 of this package TO THIS VERSION.
# "prerm upgrade" has been called for the old version, and "preinst
# upgrade" has been called for this version. This is only used if
# the previous version's "postrm upgrade" couldn't handle it and
# returned non-zero. (Fix old postrm bugs here.)
:
;;
abort-install)
# Back out of an attempt to install this package. Undo the effects of
# "preinst install...". There are two sub-cases.
:
if test "${2+set}" = set; then
# When the install was attempted, version $2's configuration
# files were still on the system. Undo the effects of "preinst
# install $2".
:
else
# We were being installed from scratch. Undo the effects of
# "preinst install".
:
fi ;;
abort-upgrade)
# Back out of an attempt to upgrade this package from version $2
# TO THIS VERSION. Undo the effects of "preinst upgrade $2".
:
;;
*) echo "$0: didn't understand being called with \`$1'" 1>&2
exit 0;;
esac
#DEBHELPER#
exit 0