diff options
Diffstat (limited to 'packaging/install-scripts/uninstall.bash')
-rwxr-xr-x | packaging/install-scripts/uninstall.bash | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/packaging/install-scripts/uninstall.bash b/packaging/install-scripts/uninstall.bash new file mode 100755 index 0000000..bd5ec60 --- /dev/null +++ b/packaging/install-scripts/uninstall.bash @@ -0,0 +1,180 @@ +#!/usr/bin/env bash + +help() { +cat <<'EOT' + Uninstall Script for Virtualbox and PHPVirtualbox (apt-based distros) + + -v --virtualbox-only Uninstall Virtualbox && apt source + -p --phpvirtualbox-only Uninstall PHPVirtualbox + -a --all Uninstall both Virtualbox and PHPVirtualbox + + --purge Remove config as well + --install-dir= Directory PHPVirtualbox is installed + --remove-vbox-user= Virtualbox user to remove + --remove-vbox-group= Virtualbox group to remove + -d= --debug= Debug output 0=quiet, 10=verbose +EOT +} + +# Sensible defaults +DEBUG=0 +UNINSTALL_VBOX=${INSTALL_VBOX:=true} +UNINSTALL_PHPVBOX=${INSTALL_PHPVBOX:=true} +UNINSTALL_EXTPACK=${INSTALL_EXTPACK:=true} +PURGE=${PURGE:=false} +PHPVBOX_INSTALL_DIR=${PHPVBOX_INSTALL_DIR:='/usr/share/phpvirtualbox'} +APT=${APT:='apt-get -y'} +APT_KEY=${APT_KEY:='apt-key'} +VBOX_VER=${VBOX_VER:='6.1'} +VBOX_USER=${VBOX_USER:='vbox'} +VBOX_GROUP=${VBOX_GROUP:='vboxusers'} +VBOX_HOME=${VBOX_HOME:="/home/${VBOX_USER}"} +VBOX_VM_DIR=${VBOX_VM_DIR:="${VBOX_HOME}/VBox/VMs"} +VBOX_DRIVES_DIR=${VBOX_DRIVES_DIR:="${VBOX_HOME}/VBox/drives"} +VBOX_IMPORT_DIR=${VBOX_IMPORT_DIR:="${VBOX_HOME}/VBox/import"} +VBOX_AUTOSTART_DIR=${VBOX_AUTOSTART_DIR:="${VBOX_HOME}/VBoxAutostart"} +VBOX_ETC_DEFAULT=${VBOX_ETC_DEFAULT:='/etc/default/virtualbox'} +AUTOSTART_CONF=${AUTOSTART_CONF:='/etc/vbox/autostart.conf'} +WAIT_FOR_STOP=10s + + +for i in "$@" +do +case $i in + -d=*|--debug=*) + DEBUG="${i#*=}" + ;; + --install-dir=*) + PHPVBOX_INSTALL_DIR="${i#*=}" + ;; + --virtualbox-user=*) + VBOX_USER="${i#*=}" + ;; + --virtualbox-group=*) + VBOX_GROUP="${i#*=}" + ;; + -v|--virtualbox-only) + UNINSTALL_VBOX=true + UNINSTALL_PHPVBOX=false + ;; + -p|--phpvirtualbox-only) + UNINSTALL_VBOX=false + UNINSTALL_PHPVBOX=true + ;; + --purge) + PURGE=true + ;; + -a|--all) + UNINSTALL_VBOX=true + UNINSTALL_PHPVBOX=true + ;; + -h|--help) + help + exit 0 + ;; + *) + # unknown option + ;; +esac +done + +## Check we're running as root so we don't need to rely on sudo. +if [ "$EUID" -ne 0 ]; then + echo "Please run as root" + exit +fi + +############################# +## UNINSTALL PHPVIRTUALBOX ## +############################# + +if [ "${UNINSTALL_PHPVBOX}" = true ]; then + set -u + set -e + set -o pipefail + + echo ">>>> Removing ${PHPVBOX_INSTALL_DIR} <<<<" + rm -rf "${PHPVBOX_INSTALL_DIR}" + + echo ">>>> Disabling Apache alias <<<<" + a2disconf phpvirtualbox || true + echo ">>>> Removing Apache alias <<<<" + rm /etc/apache2/conf-available/phpvirtualbox.conf || true + + echo ">>>> Reloading Apache config <<<<" + systemctl --no-pager reload apache2 + + echo <<'EOT' +****************************************************** +* PHPVirtualBox is now uninstalled. * +****************************************************** +EOT +fi + +########################## +## UNINSTALL VIRTUALBOX ## +########################## + +if [ "${UNINSTALL_VBOX}" = true ]; then + set -u + set -e + set -o pipefail + + echo ">>>> Removing any previous VBox Extension Pack <<<<" + vboxmanage extpack uninstall "Oracle VM VirtualBox Extension Pack" || true + + echo ">>>> Stop vbox services <<<<" + systemctl --no-pager stop vboxdrv.service vboxautostart-service.service vboxweb-service.service || true + + echo ">>>> Waiting $WAIT_FOR_STOP until all services shut down <<<<" + sleep "$WAIT_FOR_STOP" + + echo ">>>> Uninnstalling VirtualBox on non-x11 system <<<<" + ${APT} remove virtualbox-${VBOX_VER} + + echo ">>>> Removing Oracle Virtualbox Debian Repository key <<<<" + ${APT_KEY} del B9F8 D658 297A F3EF C18D 5CDF A2F6 83C5 2980 AECF + ${APT_KEY} del 7B0F AB3A 13B9 0743 5925 D9C9 5442 2A4B 98AB 5139 + + echo ">>>> Removing Oracle Virtualbox Debian Repository <<<<" + rm /etc/apt/sources.list.d/virtualbox.list || true + + echo ">>>> Updating Oracle Virtualbox Debian Repository index <<<<" + ${APT} update + + + echo ">>>> Removing vbox user <<<<" + deluser vbox || true + echo ">>>> Removing vbox group <<<<" + delgroup vbox || true + + echo ">>>> Deleting '${VBOX_IMPORT_DIR}' (if empty) <<<<" + rmdir ${VBOX_IMPORT_DIR} + echo ">>>> Deleting '${VBOX_DRIVES_DIR}' (if empty) <<<<" + rmdir ${VBOX_DRIVES_DIR} + echo ">>>> Deleting '${VBOX_VM_DIR}' (if empty) <<<<" + rmdir ${VBOX_VM_DIR} + + + echo ">>>> Deleting '${AUTOSTART_CONF}' <<<<" + rm ${AUTOSTART_CONF} || true + + echo ">>>> Deleting '${VBOX_AUTOSTART_DIR}' <<<<" + rmdir ${VBOX_AUTOSTART_DIR} || true + + echo ">>>> Deleting '${VBOX_HOME}/bin/vbox_save_rvms.bash' <<<<" + rm ${VBOX_HOME}/bin/vbox_save_rvms.bash || true + + echo ">>>> Deleting '${VBOX_HOME}/bin/vbox_start_svms.bash' <<<<" + rm ${VBOX_HOME}/bin/vbox_start_svms.bash || true + + echo ">>>> Deleting '${VBOX_HOME}/bin/vbox_activate_auto.bash' <<<<" + rm ${VBOX_HOME}/bin/vbox_activate_auto.bash || true + + echo ">>>> Deleting '${VBOX_HOME}/bin/vbox_deactivate_auto.bash' <<<<" + rm ${VBOX_HOME}/bin/vbox_deactivate_auto.bash || true + + echo ">>>> Removing '${VBOX_HOME}/bin' <<<<" + rmdir ${VBOX_HOME}/bin || true + +fi |