diff options
author | Chris Severance | 2017-06-26 14:27:17 -0400 |
---|---|---|
committer | Chris Severance | 2017-06-26 14:27:17 -0400 |
commit | bcdfe5f385df1c77c6af6d9d6fe7d7faf5df8cd2 (patch) | |
tree | b89945557051fd94cba475eef1c7a73dca1437a8 /amanda.install | |
parent | 2dd7069c709677e04e71fb217cef97ab63c465af (diff) | |
download | aur-bcdfe5f385df1c77c6af6d9d6fe7d7faf5df8cd2.tar.gz |
Revamp for 3.4.5, some breaking changes
Diffstat (limited to 'amanda.install')
-rw-r--r-- | amanda.install | 138 |
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 +} |