1 | #!/bin/sh
|
---|
2 | #
|
---|
3 | # Oracle VM VirtualBox
|
---|
4 | # VirtualBox linux uninstallation script
|
---|
5 |
|
---|
6 | #
|
---|
7 | # Copyright (C) 2009-2010 Oracle Corporation
|
---|
8 | #
|
---|
9 | # This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
10 | # available from http://www.virtualbox.org. This file is free software;
|
---|
11 | # you can redistribute it and/or modify it under the terms of the GNU
|
---|
12 | # General Public License (GPL) as published by the Free Software
|
---|
13 | # Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
14 | # VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
15 | # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
16 | #
|
---|
17 |
|
---|
18 | . `dirname $0`/routines.sh
|
---|
19 |
|
---|
20 | if [ -z "$ro_LOG_FILE" ]; then
|
---|
21 | create_log "/var/log/vbox-uninstall.log"
|
---|
22 | fi
|
---|
23 |
|
---|
24 | if [ -z "VBOX_NO_UNINSTALL_MESSAGE" ]; then
|
---|
25 | info "Uninstalling VirtualBox"
|
---|
26 | log "Uninstalling VirtualBox"
|
---|
27 | log ""
|
---|
28 | fi
|
---|
29 |
|
---|
30 | check_root
|
---|
31 |
|
---|
32 | [ -z "$DKMS" ] && DKMS=`which dkms 2> /dev/null`
|
---|
33 | [ -z "$CONFIG_DIR" ] && CONFIG_DIR="/etc/vbox"
|
---|
34 | [ -z "$CONFIG" ] && CONFIG="vbox.cfg"
|
---|
35 | [ -z "$CONFIG_FILES" ] && CONFIG_FILES="filelist"
|
---|
36 | [ -z "$DEFAULT_FILES" ] && DEFAULT_FILES=`pwd`/deffiles
|
---|
37 |
|
---|
38 | # Find previous installation
|
---|
39 | if [ -r $CONFIG_DIR/$CONFIG ]; then
|
---|
40 | . $CONFIG_DIR/$CONFIG
|
---|
41 | PREV_INSTALLATION=$INSTALL_DIR
|
---|
42 | fi
|
---|
43 |
|
---|
44 | # Remove previous installation
|
---|
45 | if [ "$PREV_INSTALLATION" = "" ]; then
|
---|
46 | log "Unable to find a VirtualBox installation, giving up."
|
---|
47 | abort "Couldn't find a VirtualBox installation to uninstall."
|
---|
48 | fi
|
---|
49 |
|
---|
50 | # Stop the web service
|
---|
51 | stop_init_script vboxweb-service
|
---|
52 | # Do this check here after we terminated the web service
|
---|
53 | check_running
|
---|
54 | # Terminate VBoxNetDHCP if running
|
---|
55 | terminate_proc VBoxNetDHCP
|
---|
56 | delrunlevel vboxweb-service > /dev/null 2>&1
|
---|
57 | remove_init_script vboxweb-service
|
---|
58 | # Stop kernel module and uninstall runlevel script
|
---|
59 | stop_init_script vboxdrv
|
---|
60 | delrunlevel vboxdrv > /dev/null 2>&1
|
---|
61 | remove_init_script vboxdrv
|
---|
62 | # Stop host networking and uninstall runlevel script (obsolete)
|
---|
63 | stop_init_script vboxnet
|
---|
64 | delrunlevel vboxnet > /dev/null 2>&1
|
---|
65 | remove_init_script vboxnet
|
---|
66 | # Remove kernel module installed
|
---|
67 | if [ -n "$DKMS" ]; then
|
---|
68 | $DKMS remove -m vboxhost -v $INSTALL_VER --all > /dev/null 2>&1
|
---|
69 | fi
|
---|
70 | if [ -z "$VBOX_DONT_REMOVE_OLD_MODULES" ]; then
|
---|
71 | find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2> /dev/null
|
---|
72 | find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2> /dev/null
|
---|
73 | find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2> /dev/null
|
---|
74 | # Remove directories we have installed to in the past
|
---|
75 | find /lib/modules/`uname -r` -name vbox\* 2>/dev/null|xargs rmdir -p 2> /dev/null
|
---|
76 | find /lib/modules/`uname -r` -name misc\* 2>/dev/null|xargs rmdir -p 2> /dev/null
|
---|
77 | rm -f /usr/src/vboxhost-$INSTALL_VER 2> /dev/null
|
---|
78 | rm -f /usr/src/vboxdrv-$INSTALL_VER 2> /dev/null
|
---|
79 | rm -f /usr/src/vboxnetflt-$INSTALL_VER 2> /dev/null
|
---|
80 | rm -f /usr/src/vboxnetadp-$INSTALL_VER 2> /dev/null
|
---|
81 | fi
|
---|
82 |
|
---|
83 | # Remove symlinks
|
---|
84 | rm -f /usr/bin/VirtualBox 2> /dev/null
|
---|
85 | rm -f /usr/bin/VBoxManage 2> /dev/null
|
---|
86 | rm -f /usr/bin/VBoxSDL 2> /dev/null
|
---|
87 | rm -f /usr/bin/VBoxVRDP 2> /dev/null
|
---|
88 | rm -f /usr/bin/VBoxHeadless 2> /dev/null
|
---|
89 | rm -f /usr/bin/VBoxNetDHCP 2> /dev/null
|
---|
90 | rm -f /usr/bin/vboxwebsrv 2> /dev/null
|
---|
91 | rm -f /usr/bin/VBoxAddIF 2> /dev/null
|
---|
92 | rm -f /usr/bin/VBoxDeleteIf 2> /dev/null
|
---|
93 | rm -f /usr/bin/VBoxTunctl 2> /dev/null
|
---|
94 | rm -f /usr/share/pixmaps/VBox.png 2> /dev/null
|
---|
95 | rm -f /usr/share/applications/virtualbox.desktop 2> /dev/null
|
---|
96 | rm -f /usr/bin/rdesktop-vrdp 2> /dev/null
|
---|
97 | rm -f $PREV_INSTALLATION/components/VBoxVMM.so
|
---|
98 | rm -f $PREV_INSTALLATION/components/VBoxREM.so
|
---|
99 | rm -f $PREV_INSTALLATION/components/VBoxRT.so
|
---|
100 | rm -f $PREV_INSTALLATION/components/VBoxDDU.so
|
---|
101 | rm -f $PREV_INSTALLATION/components/VBoxXPCOM.so
|
---|
102 |
|
---|
103 | # Remove udev description file
|
---|
104 | if [ -f /etc/udev/rules.d/60-vboxdrv.rules ]; then
|
---|
105 | rm -f /etc/udev/rules.d/60-vboxdrv.rules 2> /dev/null
|
---|
106 | fi
|
---|
107 | if [ -f /etc/udev/rules.d/10-vboxdrv.rules ]; then
|
---|
108 | rm -f /etc/udev/rules.d/10-vboxdrv.rules 2> /dev/null
|
---|
109 | fi
|
---|
110 |
|
---|
111 | cwd=`pwd`
|
---|
112 | if [ -f $PREV_INSTALLATION/src/Makefile ]; then
|
---|
113 | cd $PREV_INSTALLATION/src
|
---|
114 | make clean > /dev/null 2>&1
|
---|
115 | fi
|
---|
116 | if [ -f $PREV_INSTALLATION/src/vboxdrv/Makefile ]; then
|
---|
117 | cd $PREV_INSTALLATION/src/vboxdrv
|
---|
118 | make clean > /dev/null 2>&1
|
---|
119 | fi
|
---|
120 | if [ -f $PREV_INSTALLATION/src/vboxnetflt/Makefile ]; then
|
---|
121 | cd $PREV_INSTALLATION/src/vboxnetflt
|
---|
122 | make clean > /dev/null 2>&1
|
---|
123 | fi
|
---|
124 | if [ -f $PREV_INSTALLATION/src/vboxnetadp/Makefile ]; then
|
---|
125 | cd $PREV_INSTALLATION/src/vboxnetadp
|
---|
126 | make clean > /dev/null 2>&1
|
---|
127 | fi
|
---|
128 | cd $PREV_INSTALLATION
|
---|
129 | if [ -r $CONFIG_DIR/$CONFIG_FILES ]; then
|
---|
130 | rm -f `cat $CONFIG_DIR/$CONFIG_FILES` 2> /dev/null
|
---|
131 | elif [ -n "$DEFAULT_FILES" -a -r "$DEFAULT_FILES" ]; then
|
---|
132 | DEFAULT_FILE_NAMES=""
|
---|
133 | . $DEFAULT_FILES
|
---|
134 | for i in "$DEFAULT_FILE_NAMES"; do
|
---|
135 | rm -f $i 2> /dev/null
|
---|
136 | done
|
---|
137 | fi
|
---|
138 | for file in `find $PREV_INSTALLATION 2> /dev/null`; do
|
---|
139 | rmdir -p $file 2> /dev/null
|
---|
140 | done
|
---|
141 | cd $cwd
|
---|
142 | mkdir -p $PREV_INSTALLATION 2> /dev/null # The above actually removes the current directory and parents!
|
---|
143 | rmdir $PREV_INSTALLATION 2> /dev/null
|
---|
144 | rm -r $CONFIG_DIR/$CONFIG 2> /dev/null
|
---|
145 |
|
---|
146 | if [ -z "$VBOX_NO_UNINSTALL_MESSAGE" ]; then
|
---|
147 | rm -r $CONFIG_DIR/$CONFIG_FILES 2> /dev/null
|
---|
148 | rmdir $CONFIG_DIR 2> /dev/null
|
---|
149 | [ -n "$INSTALL_REV" ] && INSTALL_REV=" r$INSTALL_REV"
|
---|
150 | info "VirtualBox $INSTALL_VER$INSTALL_REV has been removed successfully."
|
---|
151 | log "Successfully $INSTALL_VER$INSTALL_REV removed VirtualBox."
|
---|
152 | fi
|
---|