postinst.in revision d63de4508a08b11f57c307a15eda3cd95485bf2c
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#!/bin/sh
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync# Copyright (C) 2006-2011 Oracle Corporation
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# available from http://www.virtualbox.org. This file is free software;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# General Public License (GPL) as published by the Free Software
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# we can be called with the following arguments (6.5 of Debian policy):
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# configure: (our version): installing/configuring new version
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# abort-upgrade: (old version): upgrading to a new version failed
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# abort-remove: (our version): removing this package failed
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# abort-deconfigure: (our version): error during resolving conflicts
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
f1acc1e99894e016bd1a6ee65c56b3fc064fa4ebvboxsync#include installer-common.sh
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncLOG="/var/log/vbox-install.log"
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# defaults
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncif [ "$1" = "configure" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # for debconf
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync . /usr/share/debconf/confmodule
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_version 2.0
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # remove old cruft
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ -f /etc/init.d/vboxdrv.sh ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync echo "Found old version of /etc/init.d/vboxdrv.sh, removing."
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync rm /etc/init.d/vboxdrv.sh
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync update-rc.d vboxdrv.sh remove >/dev/null
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ -f /etc/vbox/vbox.cfg ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync echo "Found old version of /etc/vbox/vbox.cfg, removing."
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync rm /etc/vbox/vbox.cfg
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # create users groups (disable with INSTALL_NO_GROUP=1 in /etc/default/virtualbox)
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ "$INSTALL_NO_GROUP" != "1" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_input low virtualbox/group-vboxusers || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_go || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync addgroup --system vboxusers || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
d15e1d56958bda40cd12a7c3a71c962b5a710be2vboxsync # install udev rule (disable with INSTALL_NO_UDEV=1 in
d15e1d56958bda40cd12a7c3a71c962b5a710be2vboxsync # /etc/default/virtualbox) and /dev/vboxdrv and /dev/vboxusb/*/* device nodes
d15e1d56958bda40cd12a7c3a71c962b5a710be2vboxsync install_device_node_setup root 0600 /usr/share/virtualbox "${usb_group}"
d15e1d56958bda40cd12a7c3a71c962b5a710be2vboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # The starters need to be Suid root. They drop the privileges before starting
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # the real frontend.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if ! dpkg-statoverride --list /usr/lib/virtualbox/VirtualBox > /dev/null 2>&1; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync chmod 4511 /usr/lib/virtualbox/VirtualBox
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if ! dpkg-statoverride --list /usr/lib/virtualbox/VBoxHeadless > /dev/null 2>&1; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync chmod 4511 /usr/lib/virtualbox/VBoxHeadless
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if ! dpkg-statoverride --list /usr/lib/virtualbox/VBoxSDL > /dev/null 2>&1; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync chmod 4511 /usr/lib/virtualbox/VBoxSDL
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if ! dpkg-statoverride --list /usr/lib/virtualbox/VBoxNetDHCP > /dev/null 2>&1; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync chmod 4511 /usr/lib/virtualbox/VBoxNetDHCP
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if ! dpkg-statoverride --list /usr/lib/virtualbox/VBoxNetAdpCtl > /dev/null 2>&1; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync chmod 4511 /usr/lib/virtualbox/VBoxNetAdpCtl
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # if INSTALL_NO_VBOXDRV is set to 1, remove all shipped modules
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ "$INSTALL_NO_VBOXDRV" = "1" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync rm -f /lib/modules/*/misc/vboxdrv.ko
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync rm -f /lib/modules/*/misc/vboxnetflt.ko
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync rm -f /lib/modules/*/misc/vboxnetadp.ko
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncfi # $1 = "configure"
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#DEBHELPER#
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncif [ "$1" = "configure" ]; then
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync # Start vboxdrv/vboxballoonctrl/vboxweb-service manually as we use our own error handling in postrm
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ -x "/etc/init.d/vboxdrv" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync update-rc.d vboxdrv defaults >/dev/null
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILD_MODULES=0
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync REGISTER_MODULES=1
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync # Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ ! -f /lib/modules/`uname -r`/misc/vboxdrv.ko ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync REGISTER_MODULES=0
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync db_get virtualbox/module-compilation-allowed
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ "$RET" = "false" ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync cat << EOF
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncUnable to find a precompiled module for the current kernel
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncthough module compilation denied by debconf setting.
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncEOF
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync else
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync db_input low virtualbox/module-compilation-allowed || true
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync db_go || true
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync db_get virtualbox/module-compilation-allowed
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ "$RET" = "true" ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync BUILD_MODULES=1
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync fi
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync fi
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync fi
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync fi
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ $BUILD_MODULES -eq 1 ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync invoke-rc.d vboxdrv setup || true
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync else
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync /etc/init.d/vboxdrv setup || true
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync else
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync # shipped modules found, register sources at DKMS anyway
0c587d7af645db20acefebcfc15b6f46c440ba4avboxsync if lsmod | grep -q "vboxdrv[^_-]"; then
0c587d7af645db20acefebcfc15b6f46c440ba4avboxsync /etc/init.d/vboxdrv stop || true
0c587d7af645db20acefebcfc15b6f46c440ba4avboxsync fi
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ $REGISTER_MODULES -eq 1 ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync DKMS=`which dkms 2>/dev/null`
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ -n "$DKMS" ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync $DKMS add -m vboxhost -v %VER% > /dev/null 2>&1 || true
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync fi
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync fi
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
f5ab5688c35373443d953e2a9fa8a054defdece8vboxsync invoke-rc.d vboxdrv start || exit $?
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync else
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync /etc/init.d/vboxdrv start || exit $?
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync if [ -x "/etc/init.d/vboxballoonctrl-service" ]; then
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync update-rc.d vboxballoonctrl-service defaults >/dev/null
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync invoke-rc.d vboxballoonctrl-service start || exit $?
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync else
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync /etc/init.d/vboxballoonctrl-service start || exit $?
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync fi
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync fi
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync if [ -x "/etc/init.d/vboxautostart-service" ]; then
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync update-rc.d vboxautostart-service defaults >/dev/null
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync invoke-rc.d vboxautostart-service start || exit $?
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync else
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync /etc/init.d/vboxautostart-service start || exit $?
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync fi
87c50c527af59e43745475c4b8ac907c5f9bc204vboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ -x "/etc/init.d/vboxweb-service" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync update-rc.d vboxweb-service defaults >/dev/null
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync invoke-rc.d vboxweb-service start || exit $?
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync else
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync /etc/init.d/vboxweb-service start || exit $?
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncfi # $1 = "configure"
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncexit 0