madscience 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VirtualBox_Uninstall.tool +246 -0
- data/bin/madscience +10 -1
- data/lib/madscience/version.rb +2 -1
- data/uninstall.sh +3 -2
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4df0d9249b04bbfb7808f867235ad6e2263a122c
|
4
|
+
data.tar.gz: 75679d7d7916ea23947c5797d95f1fe998581825
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e9828bbbebc878f53215599c4c29a014a4c59f6c3e6caa16d1202bff0931573001ff1b91898a90dc66046e30450f1a44e316ee4f23ced6b8c9fdc61105bb504
|
7
|
+
data.tar.gz: 1543bfa1892f9f9e76fc027c357a104b269bc685e95ef9b83a1f9b476765ed0a5dfeb324cc7798fa6c450f00c92020f1ac57c7444c79627748469650e7b9802d
|
@@ -0,0 +1,246 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# $Id: VirtualBox_Uninstall.tool 89624 2013-10-07 16:13:23Z bird $
|
3
|
+
## @file
|
4
|
+
# VirtualBox Uninstaller Script.
|
5
|
+
#
|
6
|
+
|
7
|
+
#
|
8
|
+
# Copyright (C) 2007-2013 Oracle Corporation
|
9
|
+
#
|
10
|
+
# This file is part of VirtualBox Open Source Edition (OSE), as
|
11
|
+
# available from http://www.virtualbox.org. This file is free software;
|
12
|
+
# you can redistribute it and/or modify it under the terms of the GNU
|
13
|
+
# General Public License (GPL) as published by the Free Software
|
14
|
+
# Foundation, in version 2 as it comes in the "COPYING" file of the
|
15
|
+
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
16
|
+
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
17
|
+
#
|
18
|
+
|
19
|
+
# Override any funny stuff from the user.
|
20
|
+
export PATH="/bin:/usr/bin:/sbin:/usr/sbin:$PATH"
|
21
|
+
|
22
|
+
#
|
23
|
+
# Display a simple welcome message first.
|
24
|
+
#
|
25
|
+
echo ""
|
26
|
+
echo "Welcome to the VirtualBox uninstaller script."
|
27
|
+
echo ""
|
28
|
+
|
29
|
+
#
|
30
|
+
# Check for arguments and display
|
31
|
+
#
|
32
|
+
my_default_prompt=0
|
33
|
+
if test "$#" != "0"; then
|
34
|
+
if test "$#" != "1" -o "$1" != "--unattended"; then
|
35
|
+
echo "Error: Unknown argument(s): $*"
|
36
|
+
echo ""
|
37
|
+
echo "Usage: uninstall.sh [--unattended]"
|
38
|
+
echo ""
|
39
|
+
echo "If the '--unattended' option is not given, you will be prompted"
|
40
|
+
echo "for a Yes/No before doing the actual uninstallation."
|
41
|
+
echo ""
|
42
|
+
exit 4;
|
43
|
+
fi
|
44
|
+
my_default_prompt="Yes"
|
45
|
+
fi
|
46
|
+
|
47
|
+
#
|
48
|
+
# Collect directories and files to remove.
|
49
|
+
# Note: Do NOT attempt adding directories or filenames with spaces!
|
50
|
+
#
|
51
|
+
declare -a my_directories
|
52
|
+
declare -a my_files
|
53
|
+
|
54
|
+
# Users files first
|
55
|
+
test -f "${HOME}/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist" && my_files+=("${HOME}/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist")
|
56
|
+
|
57
|
+
test -d /Library/StartupItems/VirtualBox/ && my_directories+=("/Library/StartupItems/VirtualBox/")
|
58
|
+
test -d /Library/Receipts/VBoxStartupItems.pkg/ && my_directories+=("/Library/Receipts/VBoxStartupItems.pkg/")
|
59
|
+
|
60
|
+
test -d "/Library/Application Support/VirtualBox/LaunchDaemons/" && my_directories+=("/Library/Application Support/VirtualBox/LaunchDaemons/")
|
61
|
+
test -d "/Library/Application Support/VirtualBox/VBoxDrv.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxDrv.kext/")
|
62
|
+
test -d "/Library/Application Support/VirtualBox/VBoxUSB.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxUSB.kext/")
|
63
|
+
test -d "/Library/Application Support/VirtualBox/VBoxNetFlt.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxNetFlt.kext/")
|
64
|
+
test -d "/Library/Application Support/VirtualBox/VBoxNetAdp.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxNetAdp.kext/")
|
65
|
+
# Pre 4.3.0rc1 locations:
|
66
|
+
test -d /Library/Extensions/VBoxDrv.kext/ && my_directories+=("/Library/Extensions/VBoxDrv.kext/")
|
67
|
+
test -d /Library/Extensions/VBoxUSB.kext/ && my_directories+=("/Library/Extensions/VBoxUSB.kext/")
|
68
|
+
test -d /Library/Extensions/VBoxNetFlt.kext/ && my_directories+=("/Library/Extensions/VBoxNetFlt.kext/")
|
69
|
+
test -d /Library/Extensions/VBoxNetAdp.kext/ && my_directories+=("/Library/Extensions/VBoxNetAdp.kext/")
|
70
|
+
# Tiger support is obsolete, but we leave it here for a clean removing of older
|
71
|
+
# VirtualBox versions
|
72
|
+
test -d /Library/Extensions/VBoxDrvTiger.kext/ && my_directories+=("/Library/Extensions/VBoxDrvTiger.kext/")
|
73
|
+
test -d /Library/Extensions/VBoxUSBTiger.kext/ && my_directories+=("/Library/Extensions/VBoxUSBTiger.kext/")
|
74
|
+
test -d /Library/Receipts/VBoxKEXTs.pkg/ && my_directories+=("/Library/Receipts/VBoxKEXTs.pkg/")
|
75
|
+
|
76
|
+
test -f /usr/bin/VirtualBox && my_files+=("/usr/bin/VirtualBox")
|
77
|
+
test -f /usr/bin/VBoxManage && my_files+=("/usr/bin/VBoxManage")
|
78
|
+
test -f /usr/bin/VBoxVRDP && my_files+=("/usr/bin/VBoxVRDP")
|
79
|
+
test -f /usr/bin/VBoxHeadless && my_files+=("/usr/bin/VBoxHeadless")
|
80
|
+
test -f /usr/bin/vboxwebsrv && my_files+=("/usr/bin/vboxwebsrv")
|
81
|
+
test -f /usr/bin/VBoxBalloonCtrl && my_files+=("/usr/bin/VBoxBalloonCtrl")
|
82
|
+
test -f /usr/bin/VBoxAutostart && my_files+=("/usr/bin/VBoxAutostart")
|
83
|
+
test -f /usr/bin/vbox-img && my_files+=("/usr/bin/vbox-img")
|
84
|
+
test -d /Library/Receipts/VirtualBoxCLI.pkg/ && my_directories+=("/Library/Receipts/VirtualBoxCLI.pkg/")
|
85
|
+
test -f /Library/LaunchDaemons/org.virtualbox.startup.plist && my_files+=("/Library/LaunchDaemons/org.virtualbox.startup.plist")
|
86
|
+
|
87
|
+
test -d /Applications/VirtualBox.app/ && my_directories+=("/Applications/VirtualBox.app/")
|
88
|
+
test -d /Library/Receipts/VirtualBox.pkg/ && my_directories+=("/Library/Receipts/VirtualBox.pkg/")
|
89
|
+
|
90
|
+
# legacy
|
91
|
+
test -d /Library/Receipts/VBoxDrv.pkg/ && my_directories+=("/Library/Receipts/VBoxDrv.pkg/")
|
92
|
+
test -d /Library/Receipts/VBoxUSB.pkg/ && my_directories+=("/Library/Receipts/VBoxUSB.pkg/")
|
93
|
+
|
94
|
+
# python stuff
|
95
|
+
python_versions="2.3 2.5 2.6 2.7"
|
96
|
+
for p in $python_versions; do
|
97
|
+
test -f /Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.py && my_files+=("/Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.py")
|
98
|
+
test -f /Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.pyc && my_files+=("/Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.pyc")
|
99
|
+
test -f /Library/Python/$p/site-packages/vboxapi/__init__.py && my_files+=("/Library/Python/$p/site-packages/vboxapi/__init__.py")
|
100
|
+
test -f /Library/Python/$p/site-packages/vboxapi/__init__.pyc && my_files+=("/Library/Python/$p/site-packages/vboxapi/__init__.pyc")
|
101
|
+
test -f /Library/Python/$p/site-packages/vboxapi-1.0-py$p.egg-info && my_files+=("/Library/Python/$p/site-packages/vboxapi-1.0-py$p.egg-info")
|
102
|
+
test -d /Library/Python/$p/site-packages/vboxapi/ && my_directories+=("/Library/Python/$p/site-packages/vboxapi/")
|
103
|
+
done
|
104
|
+
|
105
|
+
#
|
106
|
+
# Collect KEXTs to remove.
|
107
|
+
# Note that the unload order is significant.
|
108
|
+
#
|
109
|
+
declare -a my_kexts
|
110
|
+
for kext in org.virtualbox.kext.VBoxUSB org.virtualbox.kext.VBoxNetFlt org.virtualbox.kext.VBoxNetAdp org.virtualbox.kext.VBoxDrv; do
|
111
|
+
if /usr/sbin/kextstat -b $kext -l | grep -q $kext; then
|
112
|
+
my_kexts+=("$kext")
|
113
|
+
fi
|
114
|
+
done
|
115
|
+
|
116
|
+
#
|
117
|
+
# Collect packages to forget
|
118
|
+
#
|
119
|
+
my_pb='org\.virtualbox\.pkg\.'
|
120
|
+
my_pkgs=`/usr/sbin/pkgutil --pkgs="${my_pb}vboxkexts|${my_pb}vboxstartupitems|${my_pb}virtualbox|${my_pb}virtualboxcli"`
|
121
|
+
|
122
|
+
#
|
123
|
+
# Did we find anything to uninstall?
|
124
|
+
#
|
125
|
+
if test -z "${my_directories[*]}" -a -z "${my_files[*]}" -a -z "${my_kexts[*]}" -a -z "$my_pkgs"; then
|
126
|
+
echo "No VirtualBox files, directories, KEXTs or packages to uninstall."
|
127
|
+
echo "Done."
|
128
|
+
exit 0;
|
129
|
+
fi
|
130
|
+
|
131
|
+
#
|
132
|
+
# Look for running VirtualBox processes and warn the user
|
133
|
+
# if something is running. Since deleting the files of
|
134
|
+
# running processes isn't fatal as such, we will leave it
|
135
|
+
# to the user to choose whether to continue or not.
|
136
|
+
#
|
137
|
+
# Note! comm isn't supported on Tiger, so we make -c to do the stripping.
|
138
|
+
#
|
139
|
+
my_processes="`ps -axco 'pid uid command' | grep -wEe '(VirtualBox|VirtualBoxVM|VBoxManage|VBoxHeadless|vboxwebsrv|VBoxXPCOMIPCD|VBoxSVC|VBoxNetDHCP|VBoxNetNAT)' | grep -vw grep | grep -vw VirtualBox_Uninstall.tool | tr '\n' '\a'`";
|
140
|
+
if test -n "$my_processes"; then
|
141
|
+
echo 'Warning! Found the following active VirtualBox processes:'
|
142
|
+
echo "$my_processes" | tr '\a' '\n'
|
143
|
+
echo ""
|
144
|
+
echo "We recommend that you quit all VirtualBox processes before"
|
145
|
+
echo "uninstalling the product."
|
146
|
+
echo ""
|
147
|
+
if test "$my_default_prompt" != "Yes"; then
|
148
|
+
echo "Do you wish to continue none the less (Yes/No)?"
|
149
|
+
read my_answer
|
150
|
+
if test "$my_answer" != "Yes" -a "$my_answer" != "YES" -a "$my_answer" != "yes"; then
|
151
|
+
echo "Aborting uninstall. (answer: '$my_answer')".
|
152
|
+
exit 2;
|
153
|
+
fi
|
154
|
+
echo ""
|
155
|
+
my_answer=""
|
156
|
+
fi
|
157
|
+
fi
|
158
|
+
|
159
|
+
#
|
160
|
+
# Display the files and directories that will be removed
|
161
|
+
# and get the user's consent before continuing.
|
162
|
+
#
|
163
|
+
if test -n "${my_files[*]}" -o -n "${my_directories[*]}"; then
|
164
|
+
echo "The following files and directories (bundles) will be removed:"
|
165
|
+
for file in "${my_files[@]}"; do echo " $file"; done
|
166
|
+
for dir in "${my_directories[@]}"; do echo " $dir"; done
|
167
|
+
echo ""
|
168
|
+
fi
|
169
|
+
if test -n "${my_kexts[*]}"; then
|
170
|
+
echo "And the following KEXTs will be unloaded:"
|
171
|
+
for kext in "${my_kexts[@]}"; do echo " $kext"; done
|
172
|
+
echo ""
|
173
|
+
fi
|
174
|
+
if test -n "$my_pkgs"; then
|
175
|
+
echo "And the traces of following packages will be removed:"
|
176
|
+
for kext in $my_pkgs; do echo " $kext"; done
|
177
|
+
echo ""
|
178
|
+
fi
|
179
|
+
|
180
|
+
if test "$my_default_prompt" != "Yes"; then
|
181
|
+
echo "Do you wish to uninstall VirtualBox (Yes/No)?"
|
182
|
+
read my_answer
|
183
|
+
if test "$my_answer" != "Yes" -a "$my_answer" != "YES" -a "$my_answer" != "yes"; then
|
184
|
+
echo "Aborting uninstall. (answer: '$my_answer')".
|
185
|
+
exit 2;
|
186
|
+
fi
|
187
|
+
echo ""
|
188
|
+
fi
|
189
|
+
|
190
|
+
#
|
191
|
+
# Unregister has to be done before the files are removed.
|
192
|
+
#
|
193
|
+
LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
|
194
|
+
if [ -e ${LSREGISTER} ]; then
|
195
|
+
${LSREGISTER} -u /Applications/VirtualBox.app > /dev/null
|
196
|
+
${LSREGISTER} -u /Applications/VirtualBox.app/Contents/Resources/vmstarter.app > /dev/null
|
197
|
+
fi
|
198
|
+
|
199
|
+
#
|
200
|
+
# Display the sudo usage instructions and execute the command.
|
201
|
+
#
|
202
|
+
echo "The uninstallation processes requires administrative privileges"
|
203
|
+
echo "because some of the installed files cannot be removed by a normal"
|
204
|
+
echo "user. You may be prompted for your password now..."
|
205
|
+
echo ""
|
206
|
+
|
207
|
+
if test -n "${my_files[*]}" -o -n "${my_directories[*]}"; then
|
208
|
+
/usr/bin/sudo -p "Please enter %u's password:" /bin/rm -Rf "${my_files[@]}" "${my_directories[@]}"
|
209
|
+
my_rc=$?
|
210
|
+
if test "$my_rc" -ne 0; then
|
211
|
+
echo "An error occurred durning 'sudo rm', there should be a message above. (rc=$my_rc)"
|
212
|
+
test -x /usr/bin/sudo || echo "warning: Cannot find /usr/bin/sudo or it's not an executable."
|
213
|
+
test -x /bin/rm || echo "warning: Cannot find /bin/rm or it's not an executable"
|
214
|
+
echo ""
|
215
|
+
echo "The uninstall failed. Please retry."
|
216
|
+
exit 1;
|
217
|
+
fi
|
218
|
+
fi
|
219
|
+
|
220
|
+
my_rc=0
|
221
|
+
for kext in "${my_kexts[@]}"; do
|
222
|
+
echo unloading $kext
|
223
|
+
/usr/bin/sudo -p "Please enter %u's password (unloading $kext):" /sbin/kextunload -m $kext
|
224
|
+
my_rc2=$?
|
225
|
+
if test "$my_rc2" -ne 0; then
|
226
|
+
echo "An error occurred durning 'sudo /sbin/kextunload -m $kext', there should be a message above. (rc=$my_rc2)"
|
227
|
+
test -x /usr/bin/sudo || echo "warning: Cannot find /usr/bin/sudo or it's not an executable."
|
228
|
+
test -x /sbin/kextunload || echo "warning: Cannot find /sbin/kextunload or it's not an executable"
|
229
|
+
my_rc=$my_rc2
|
230
|
+
fi
|
231
|
+
done
|
232
|
+
if test "$my_rc" -eq 0; then
|
233
|
+
echo "Successfully unloaded VirtualBox kernel extensions."
|
234
|
+
else
|
235
|
+
echo "Failed to unload one or more KEXTs, please reboot the machine to complete the uninstall."
|
236
|
+
exit 1;
|
237
|
+
fi
|
238
|
+
|
239
|
+
# Cleaning up pkgutil database
|
240
|
+
for my_pkg in $my_pkgs; do
|
241
|
+
/usr/bin/sudo -p "Please enter %u's password (removing $my_pkg):" /usr/sbin/pkgutil --forget "$my_pkg"
|
242
|
+
done
|
243
|
+
|
244
|
+
echo "Done."
|
245
|
+
exit 0;
|
246
|
+
|
data/bin/madscience
CHANGED
@@ -12,6 +12,8 @@ if ARGV == [ "--version" ]
|
|
12
12
|
exit 0
|
13
13
|
end
|
14
14
|
|
15
|
+
puts "Running madscience #{MadScience::VERSION}..."
|
16
|
+
|
15
17
|
# TODO: Add Windows runas incantation to replace sudo on Windows
|
16
18
|
USAGE_INFO = <<USAGE
|
17
19
|
Usage:
|
@@ -89,12 +91,19 @@ def do_clone
|
|
89
91
|
unless system "git clone #{MADSCIENCE_REPO_URL} madscience"
|
90
92
|
raise "Couldn't successfully clone MadScience repo from #{MADSCIENCE_REPO_URL}!"
|
91
93
|
end
|
94
|
+
File.open(File.join("madscience", ".cloned_by"), "w") do |f|
|
95
|
+
f.puts <<-CLONED_BY
|
96
|
+
MadScience gem version #{MadScience::VERSION}
|
97
|
+
bin: #{__FILE__}
|
98
|
+
libdir: #{MadScience::VERSION_LIBDIR}
|
99
|
+
CLONED_BY
|
100
|
+
end
|
92
101
|
end
|
93
102
|
|
94
103
|
def do_deploy
|
95
104
|
# Deploy from the 'madscience' dir under this directory
|
96
105
|
|
97
|
-
cmd = "cd madscience && vagrant up --provision --provider=#{MADSCIENCE_PROVIDER}"
|
106
|
+
cmd = "cd madscience && bundle && vagrant up --provision --provider=#{MADSCIENCE_PROVIDER}"
|
98
107
|
|
99
108
|
# Does this display STDOUT properly?
|
100
109
|
pid = Kernel.spawn cmd
|
data/lib/madscience/version.rb
CHANGED
data/uninstall.sh
CHANGED
@@ -2,5 +2,6 @@
|
|
2
2
|
sudo rm -rf /usr/bin/vagrant /opt/vagrant /Applications/Vagrant
|
3
3
|
sudo pkgutil --forget com.vagrant.vagrant
|
4
4
|
|
5
|
-
# And this
|
6
|
-
|
5
|
+
# And this should uninstall VirtualBox. Script copied from
|
6
|
+
# VirtualBox DMG uninstaller.
|
7
|
+
./VirtualBox_Uninstall.tool --unattended
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: madscience
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Gibbs
|
@@ -14,14 +14,14 @@ dependencies:
|
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -140,14 +140,14 @@ dependencies:
|
|
140
140
|
name: rake
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - ~>
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '10.3'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - ~>
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '10.3'
|
153
153
|
description: |
|
@@ -161,8 +161,8 @@ executables:
|
|
161
161
|
extensions: []
|
162
162
|
extra_rdoc_files: []
|
163
163
|
files:
|
164
|
-
- .gitignore
|
165
|
-
- .madscience_gem_location
|
164
|
+
- ".gitignore"
|
165
|
+
- ".madscience_gem_location"
|
166
166
|
- Cheffile
|
167
167
|
- Cheffile.lock
|
168
168
|
- Gemfile
|
@@ -170,6 +170,7 @@ files:
|
|
170
170
|
- README.md
|
171
171
|
- Rakefile
|
172
172
|
- TODO
|
173
|
+
- VirtualBox_Uninstall.tool
|
173
174
|
- bin/madscience
|
174
175
|
- cookbooks/apt/CHANGELOG.md
|
175
176
|
- cookbooks/apt/README.md
|
@@ -332,17 +333,17 @@ require_paths:
|
|
332
333
|
- lib
|
333
334
|
required_ruby_version: !ruby/object:Gem::Requirement
|
334
335
|
requirements:
|
335
|
-
- -
|
336
|
+
- - ">="
|
336
337
|
- !ruby/object:Gem::Version
|
337
338
|
version: '0'
|
338
339
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
339
340
|
requirements:
|
340
|
-
- -
|
341
|
+
- - ">="
|
341
342
|
- !ruby/object:Gem::Version
|
342
343
|
version: '0'
|
343
344
|
requirements: []
|
344
345
|
rubyforge_project:
|
345
|
-
rubygems_version: 2.
|
346
|
+
rubygems_version: 2.4.5
|
346
347
|
signing_key:
|
347
348
|
specification_version: 4
|
348
349
|
summary: Install the current versions of the MadScience stack.
|