summarylogtreecommitdiffstats
path: root/amanda.install
diff options
context:
space:
mode:
Diffstat (limited to 'amanda.install')
-rw-r--r--amanda.install138
1 files changed, 120 insertions, 18 deletions
diff --git a/amanda.install b/amanda.install
index db0b98d0b164..649bba07e0e1 100644
--- a/amanda.install
+++ b/amanda.install
@@ -1,29 +1,131 @@
-post_install() {
- if [ -z "`getent group amanda`" ]; then
- groupadd -g 112 amanda
+# Can't customize .install scripts so we use an external script
+
+# The PKGBUILD will stop if these vars don't match what's in the PKGBUILD
+
+_amlibexec='/usr/lib'
+_amsecurity='/etc/amanda-security.conf'
+_amhome='/var/lib/amanda'
+
+pre_install() {
+ # During pre_install the settings file amanda-install.sh isn't available yet
+ # During pre_upgrade the settings file exists with only the old settings.
+ # During the pre_upgrade from the old package, there are no old settings.
+ # Here in install we always have the new vars and can guess the old vars.
+
+ # Move file before pacman can remove it
+ local _amsother=''
+ case "${_amsecurity}" in
+ '/etc/amanda-security.conf') _amsother='/etc/amanda/amanda-security.conf';;
+ '/etc/amanda/amanda-security.conf') _amsother='/etc/amanda-security.conf';;
+ esac
+ if [ ! -z "${_amsother}" ] && [ -s "${_amsother}" ] && [ ! -s "${_amsecurity}" ]; then
+ echo "amanda mv ${_amsother} ${_amsecurity}"
+ mv "${_amsother}" "${_amsecurity}"
fi
- if [ -z "`getent passwd amanda`" ]; then
- useradd -u 112 -g amanda -G storage,disk -m -d /var/amanda -s /bin/bash -c "Amanda Backup Daemon" amanda
+
+ # Move home folder before pacman can remove it
+ _amsother=''
+ case "${_amhome}" in
+ '/var/lib/amanda') _amsother='/var/amanda';;
+ '/var/amanda') _amsother='/var/lib/amanda';;
+ esac
+ if [ ! -z "${_amsother}" ] && [ -d "${_amsother}" ] && [ ! -d "${_amhome}" ]; then
+ echo "amanda mv ${_amsother} ${_amhome}"
+ mv "${_amsother}" "${_amhome}"
fi
- cat << EOT
-amanda: Visit the Amanda wiki to configure your backup sets:
-amanda: http://wiki.zmanda.com/index.php/Getting_Started_With_Amanda
-amanda: Examples are in /etc/amanda/examples/
+}
-amanda: Restart xinetd to start the daemon listening for connections.
-EOT
+_post_upins() {
+ _GetOVars= _GetOLocal= bash -e -u "${_amlibexec}/amanda/amanda-install.sh" 'post_upins' 'chown_PKGBUILD' 'chown_makefile'
+ if [ -s '/etc/xinetd.d/amanda' ]; then
+ if ! systemctl -q is-enabled 'xinetd.service' || ! systemctl -q is-active 'xinetd.service'; then
+ echo 'amanda: Service xinetd must be running for bsd support, Try'
+ if ! systemctl -q is-enabled 'xinetd.service'; then
+ echo ' sudo systemctl enable xinetd.service'
+ fi
+ if ! systemctl -q is-active 'xinetd.service'; then
+ echo ' sudo systemctl start xinetd.service'
+ fi
+ fi
+ fi
}
-post_upgrade() {
- post_install $1
+post_install() {
+ _post_upins "$1"
+ echo 'amanda: Visit the Amanda wiki to configure your backup sets:'
+ echo 'amanda: http://wiki.zmanda.com/index.php/Getting_Started_With_Amanda'
+ echo 'amanda: Examples are in /etc/amanda/examples/'
+ if [ -s '/etc/xinetd.d/amanda' ]; then
+ echo ''
+ echo 'amanda: Restart xinetd to start the daemon listening for connections.'
+ fi
+ _GetOVars= _GetOLocal= bash -e -u "${_amlibexec}/amanda/amanda-install.sh" 'post_install'
+}
+
+# During an upgrade the new version's pre_upgrade() is run
+pre_upgrade() {
+ pre_install
+ # Copy the file so we can get to the old vars after the upgrade
+ if [ -s "${_amlibexec}/amanda/amanda-install.sh" ]; then
+ (umask 077; cp --remove-destination "${_amlibexec}/amanda/amanda-install.sh" '/tmp/amanda-install.sh') # as close to atomic as I can get. -p not allowed here
+ fi
}
pre_remove() {
- userdel amanda || true &> /dev/null
- groupdel amanda || true &> /dev/null
+ _GetOVars= _GetOLocal= bash -e -u "${_amlibexec}/amanda/amanda-install.sh" 'pre_remove'
+ pre_upgrade
}
-op=$1
-shift
+post_upgrade() {
+ set -u
+ if [ -s '/tmp/amanda-install.sh' ]; then
+ local _GetOLocal='local'
+ local _GetOVars=1
+ source '/tmp/amanda-install.sh'
+ unset _GetOVars
+ rm '/tmp/amanda-install.sh'
+
+ local _GetVars=1
+ source "${_amlibexec}/amanda/amanda-install.sh"
+ unset _GetVars
-$op $*
+ if [ "${_Oamandauser}" != "${_amandauser}" ]; then
+ echo 'amanda warning: changing username will likely invalidate all cron jobs and crash running jobs'
+ fi
+ # Copy and delete home if not already moved above
+ if [ "${_Oamhome}" != "${_amhome}" ] && [ -d "${_Oamhome}" ] ; then
+ if cp --no-target-directory -pr "${_Oamhome}/" "${_amhome}/"; then
+ rm -rf "${_Oamhome}"
+ fi
+ fi
+ if [ "${_Oamandauser}" != "${_amandauser}" ] ||
+ [ "${_Oamandagroup}" != "${_amandagroup}" ] ||
+ [ "${_Oamandauid}" != "${_amandauid}" ] ||
+ [ "${_Oamandagid}" != "${_amandagid}" ] ||
+ [ "${_Oamhome}" != "${_amhome}" ] ||
+ [ "$(getent passwd "${_amandauser}" | cut -d':' -f6)" != "${_amhome}" ]; then
+ echo 'amanda: Updating user/group info'
+ if ! userdel --force "${_Oamandauser}"; then
+ echo 'amanda: install package again after backup completes to fix'
+ else
+ echo "amanda: User ${_Oamandauser} deleted"
+ fi
+ groupdel "${_Oamandagroup}" 2>/dev/null || :
+ echo "amanda: Group ${_Oamandagroup} deleted"
+ if grep --color=auto -lr "${_Oamhome}" "${_ametc}"; then
+ echo "amanda warning: Some backups reference the old home dir ${_Oamhome}"
+ fi
+ fi
+ fi
+ set +u
+ _post_upins "$1"
+}
+
+post_remove() {
+ set -u
+ if [ -s '/tmp/amanda-install.sh' ]; then
+ _GetOVars= _GetOLocal= bash -e -u '/tmp/amanda-install.sh' 'post_remove'
+ rm '/tmp/amanda-install.sh'
+ fi
+ set +u
+}