在干净的OSX 10.13中安装VirtualBox失败。

24
我在我的Mac上进行了High Sierra,Mac OS X 10.13的全新安装。
我安装了一些应用程序,一些浏览器,webStorm,vagrant,skype和slack。
尝试安装virtualBox时,我收到一个错误消息,内容如下:
“安装失败。 安装程序遇到导致安装失败的错误。请联系软件制造商以获得帮助。”
当检查安装程序日志文件时,我收到以下错误消息:
Oct 19 16:22:42 newens-mbp installd[519]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package “VirtualBox.pkg”." UserInfo={NSFilePath=./postflight, NSURL=file://localhost/Volumes/VirtualBox/VirtualBox.pkg#VBoxKEXTs.pkg, PKInstallPackageIdentifier=org.virtualbox.pkg.vboxkexts, NSLocalizedDescription=An error occurred while running scripts from the package “VirtualBox.pkg”.} {
    NSFilePath = "./postflight";
    NSLocalizedDescription = "An error occurred while running scripts from the package \U201cVirtualBox.pkg\U201d.";
    NSURL = "file://localhost/Volumes/VirtualBox/VirtualBox.pkg#VBoxKEXTs.pkg";
    PKInstallPackageIdentifier = "org.virtualbox.pkg.vboxkexts";
}

我已经在谷歌上搜索了相关内容,并找到了一些解决不同问题的线程。但是到目前为止,没有一个适用于我。
我找到的一些帖子:

https://www.virtualbox.org/ticket/15832

在macOS Sierra上安装Virtualbox 5.1.10出错,提示"安装失败"。

https://apple.stackexchange.com/questions/177868/virtualbox-4-3-26-on-osx-10-10-2-fails-to-install

无法在安装VirtualBox 4.3.6时卸载kext

这些解决方案对我都没有用。

我没有安装vmware,并且尝试搜索.match_kernel文件以进行删除,但无法找到它。我没有在磁盘工具中选择分区的选项,因此无法对其进行修复磁盘权限。

我已安装和卸载了不同版本,并在之间进行了冷启动,以尝试查看是否有所帮助。

感谢任何帮助!


因为我遇到了同样的问题,所以添加了赏金。 - Dries Vints
{btsdaf} - Tarun Lalwani
{btsdaf} - Dries Vints
{btsdaf} - Newen F
{btsdaf} - Newen F
8个回答

31

经过数小时的攻克,我和同事终于找到了可行的解决方案。对我来说,问题在于当我尝试安装软件包时它被阻止了。你可以通过尝试安装并在出现“安装失败”时前往“安全性与隐私”(在系统偏好设置中),然后转到“常规”选项卡,在底部附近会显示一个Oracle应用程序被阻止的提示,以检查是否是这种情况。

以下是我们想出的步骤 **注意:如果像我一样尝试下载或安装了几次,您需要先使用VirtualBox卸载工具卸载VirtualBox,您可以在下载的.dmg文件中找到该工具。您还需要将VirtualBox从设备中弹出(在Finder的左侧面板中)。之后,请按照以下说明操作:

  1. 下载VirtualBox 5.2安装程序
  2. 运行DMG,这将创建一个设备
  3. 尝试从.pkg文件安装,它将在验证步骤失败
  4. 关闭安装程序并运行uninstaller.tool文件。不要删除安装程序设备
  5. 前往“系统偏好设置”->“安全性与隐私”->“常规”,批准被“Oracle America”阻止的软件
  6. 从相同的.pkg文件运行安装程序,现在应该可以成功完成

1
谢谢@Ilene,这个方法对我很有效。不过,对于我来说,我必须在第6步之后才能进行第5步。例如,按照相同的步骤一直到第4步,现在跳过第5步,在点击“安装”之前完成第6步,然后在实际安装之前执行第5步。如果我不这样做,验证仍然会失败! - projeqht
对我也起作用了。在批准“Oracle America”之后,系统提示我必须重新启动计算机以使更改生效。 - Jake Rayson
哇,太感谢了。你又救了我一天。我已经花费了很多时间在这个简单的疯子上。它解决了所有问题。 - Farruh Habibullaev
1
我尝试了这个,但它没有起作用。当我到达“安全和偏好设置”小程序时,没有“允许”按钮。 - Wallace B. McClure

2

我终于通过这里的建议解决了问题:https://github.com/caskroom/homebrew-cask/issues/39369#issuecomment-339118861

运行这个脚本:

#!/bin/bash

unload() {
        if [ `ps -ef | grep -c VirtualBox$` -ne 0 ]
        then
                echo "VirtualBox still seems to be running. Please investigate!!"
                exit 1;
        elif [ `ps -ef | grep -c [V]ir` -gt 0 ]
        then
                echo "Stopping running processes before unloading Kernel Extensions"
                ps -ef | grep [V]ir | awk '{print $2}' | xargs kill
        fi
        echo "Unloading Kernel Extensions"
        kextstat | grep "org.virtualbox.kext.VBoxUSB" > /dev/null 2>&1 && sudo kextunload -b org.virtualbox.kext.VBoxUSB
        kextstat | grep "org.virtualbox.kext.VBoxNetFlt" > /dev/null 2>&1 && sudo kextunload -b org.virtualbox.kext.VBoxNetFlt
        kextstat | grep "org.virtualbox.kext.VBoxNetAdp" > /dev/null 2>&1 && sudo kextunload -b org.virtualbox.kext.VBoxNetAdp
        kextstat | grep "org.virtualbox.kext.VBoxDrv" > /dev/null 2>&1 && sudo kextunload -b org.virtualbox.kext.VBoxDrv
}

load() {
        echo "Loading Kernel Extentions"
        sudo kextload "/Library/Application Support/VirtualBox/VBoxDrv.kext" -r "/Library/Application Support/VirtualBox/"
        sudo kextload "/Library/Application Support/VirtualBox/VBoxNetAdp.kext" -r "/Library/Application Support/VirtualBox/"
        sudo kextload "/Library/Application Support/VirtualBox/VBoxNetFlt.kext" -r "/Library/Application Support/VirtualBox/"
        sudo kextload "/Library/Application Support/VirtualBox/VBoxUSB.kext" -r "/Library/Application Support/VirtualBox/"
}

case "$1" in
        unload|remove)
                unload
                ;;
        load)
                load
                ;;
        *|reload)
                unload
                load
                ;;
esac

在尝试安装VirtualBox后运行此脚本。不断批准kexts,直到脚本无误地运行:

enter image description here

运行brew cask reinstall --force virtualbox

感谢Dan Stroot提供的解决方案。


0
在运行优秀的 Disk Arbitrator 应用程序时,停用它——当它处于活动状态时,它会阻止所有挂载并可选择将它们重新挂载为只读。例如,这可以防止 Spotlight 损坏 USB 驱动器,但是必须记得在适当的时候关闭它。

0
对于使用homebrew的用户,请运行“brew install caskroom/cask/virtualbox”,第一次会失败。然后按照上面所述的方法,转到“系统偏好设置>安全性与隐私>常规”,在底部应该有一个关于软件安装被阻止的消息。单击此消息旁边的“允许”按钮,然后返回终端。再次运行homebrew命令,这次它将起作用。

0

问题已解决。

  • 从Finder > 设备中弹出VirtualBox镜像

  • 移除VirtualBox设备 然后在: 系统偏好设置 > 安全性与隐私 中允许异常

然后再次尝试从.dmg安装,以便重新挂载设备。 现在我已经可以正常工作了。


0
解决方案如下:
好的,这有点麻烦,但我们设法让它有点发挥作用。
问题与系统未删除虚拟机安装中的所有文件有关。
使用终端搜索名称中带有virtualbox的文件,我们发现(非vagrant相关)仍在系统中的文件。
问题是即使使用sudo也无法删除这些文件。因此,我们不得不重新启动系统,按住cmd + r,以便进入故障排除系统而不是正常的操作系统环境。在那里,您可以打开终端并运行“csrutil disable”,然后重新启动系统。
这会关闭系统完整性保护,因此不建议这样做,但我们必须这样做才能删除之前无法删除的这些文件。
因此,在删除这些文件后,我们再次运行安装程序,现在它可以正常工作了!然后我立即尝试运行vagrant,现在它像预期的那样工作了。
我的最后一个问题是:确保vagrant正在工作后,我又回到按住cmd + r启动计算机,打开终端并运行“csrutil enable”,然后重新启动。

回到正常的OS X后,我尝试运行vagrant,但又出现了错误。所以目前我不得不再次返回,禁用csrutil,虽然这是不推荐的,但这是目前对我有效的唯一方法。

我还没有尝试重新运行所有这些步骤。


0

所以..在经历了很多困难之后,在Stack Overflow上花费了很多时间后,我结合了一些答案,最终成功在我的10.13 OSX中安装了VirtualBox。

所以: 据我所读,Sierra有一个新的安全功能,可以阻止一些外部程序。在VirtualBox安装过程中,您可以检查“首选项>安全性与隐私>常规”。您将看到Oracle(VirtualBox)被阻止。 所以,我所做的是:

  1. 在终端中运行此命令以禁用新的Sierra Gatekeeper:sudo spctl --master-disable

  2. 打开VirtualBox安装程序,并单击卸载以确保没有先前安装尝试的痕迹。

  3. 如果桌面上或者在Finder左侧边栏(设备中)有任何VirtualBox映像,则必须弹出它们
  4. 删除以前的VirtualBox程序并下载新的程序
  5. 现在,如果这些步骤对您起作用,就像它们对我起作用一样,您将能够安装VirtualBox。

完成之后,您可以重新启用Gatekeeper功能,运行sudo spctl --master-enable


0

llene的回答对我来说非常完美。关键是,当你尝试安装但不成功时,必须按照以下步骤操作:

  1. 运行VirtualBox安装程序
  2. 运行.pkg文件进行安装,它在验证步骤时会失败,没关系
  3. 关闭安装程序,然后再次运行它,但现在选择卸载工具文件(不要删除安装程序设备)
  4. 弹出Finder左侧面板中的VirtualBox设备
  5. 之后,转到“系统偏好设置” -> “安全性与隐私” -> “通用”,允许'Oracle America'的被阻止软件显示在那里
  6. 再次从同一个.pkg文件运行安装。现在应该能够成功完成安装。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接