2017-10-19 321 views
19

我在我的Mac上完成了對High Sierra,Mac OS X 10.13的全新安裝。VirtualBox安裝在乾淨的OSX 10.13失敗

我安裝了幾個應用程序,一些瀏覽器,webStorm,vagrant,skype和slack。

當試圖安裝VirtualBox我得到一個錯誤消息說:

「安裝失敗 安裝程序遇到導致安裝失敗的錯誤聯繫以獲得幫助軟件製造商。」

當檢查安裝日誌文件,我得到以下錯誤mesage:

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"; 
} 

我GOOGLE了這一點,並發現這裏和那裏的幾個線程解決不同的問題。但到目前爲止,沒有人爲我工作。

一些我已經找到了帖子:

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

Error installing Virtualbox 5.1.10 on macOS Sierra, "The installation failed"

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

Can't unload kext while installing VirtualBox 4.3.6

這些解決方案都沒有爲我工作。

我沒有安裝vmware,並嘗試搜索要刪除的.match_kernel文件,但無法在任何地方找到它。我沒有在磁盤實用程序上選擇分區的選項,因此無法對其修復磁盤權限。

我已經安裝和卸載了不同的版本,並在兩者之間啓動以嘗試查看是否有幫助。

感謝您的幫助!

+0

增加了一個賞金,因爲我遇到了同樣的問題。 –

+0

@DriesVints,假設你正在從他們的網站上嘗試最新版本的VirtualBox? –

+0

@TarunLalwani我試圖安裝5.2(最新版本)和5.1 –

回答

16

在這個問題上黑客攻擊後,我的同事和我來到了一個可行的解決方案。這個問題(至少對我來說)是當我去安裝軟件包時它被阻塞了。您可以通過嘗試安裝來檢查是否屬於這種情況,並且當它說'安裝失敗'時,請轉到您的安全隱私(在系統首選項中),然後轉到「常規」選項卡並在底部附近說明一個oracle應用程序被阻止。

這裏是我們想出的步驟**注意:如果您嘗試像我一樣嘗試下載或安裝這幾次,您將首先使用virtualbox卸載工具卸載virtualbox,您可以在下載的.dmg文件。您還需要從設備中彈出virtualbox(在查找器的左側面板中)。之後繼續前進,遵循以下步驟:

  1. 下載的VirtualBox 5.2安裝程序
  2. 運行DMG,這將創建一個設備
  3. 嘗試從pkg文件安裝,它會失敗在驗證步驟
  4. 關閉安裝程序並運行uninstaller.tool文件。不要刪除安裝設備
  5. 進入系統偏好設置 - >安全和隱私 - >常規,批准從「甲骨文美國
  6. 運行受阻軟件從同一個pkg文件安裝,它現在應該能成功完成
+1

謝謝@Ilene這爲我工作。但是,對於我來說,我必須在第6步之後執行第5步。例如,請按照上述步驟操作,直到第4步,現在跳過第5步,然後執行第6步,直到安裝位置選項卡出現在「安裝」之前,然後在實際安裝之前先執行第5步。如果我沒有這樣做,驗證仍然失敗! – projeqht

0

解決方案迄今:

好吧,這是有點麻煩,但我們還是設法使它的工作內容。

該問題與系統不刪除虛擬盒安裝中的所有文件有關。

使用終端在文件名中搜索帶有virtualbox的文件,我們發現仍然存在於系統中的(非vagrant相關的)文件。

問題是即使使用sudo也無法刪除這些文件。所以我們必須重新啓動系統,按下cmd + r,以便進入故障排除系統,而不是正常的操作系統環境。在那裏,你可以打開終端並運行「csrutil disable」,然後重新啓動系統。

這會關閉系統完整性保護,因此不建議使用此功能,但我們必須這樣做才能刪除以前無法刪除的這些文件。

因此,刪除這些文件後,我們再次運行安裝,現在它的工作!之後,我立即嘗試運行流浪漢,現在按預期工作。

我現在的最後一個問題是:在確定vagrant正在工作後,我再次按下cmd + r來啓動計算機,打開終端並運行「csrutil enable」並重新啓動。

回到正常的OS X我嘗試運行vagrant並再次出現錯誤。所以此刻我不得不再次回去,禁用csrutil,這是不推薦的,但是這是目前唯一對我有用的東西。

我還沒有試過再次運行所有這些步驟。

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。保持批准的kext,直到腳本運行乾淨:

enter image description here

運行brew cask reinstall --force virtualbox

榮譽丹Stroot的解決方案。

0

所以..在經歷了很多這方面的苦苦掙扎之後,又花了很多時間在堆棧溢出之後..我結合了一些答案和finnaly在我的10.13 osx中安裝virtualbox。

因此: 在我看來,Sierra有一個新的安全功能,可以阻止一些外部程序。在虛擬機安裝期間,您可以查看首選項>安全&隱私>常規。你will see that Oracle (virtualbox) is being blocked。 所以,我所做的就是:

  1. 運行在終端這一命令禁用新的塞拉利昂看門人:須藤SPCTL --master-禁用
  2. 打開VirtualBox的安裝程序,然後單擊反安裝到確保沒有以前安裝嘗試的痕跡
  3. 在桌面或查找器左側邊欄(在設備中)如果有任何virtualbox圖像,您必須將它們彈出
  4. 刪除以前的virtualbox程序和下載一個新的
  5. 現在,如果這些步驟爲您工作,那麼您將能夠安裝virtualbox。

(在此之後,你可以重新啓用運行「命令SPCTL --master啓用」把關功能)

0

從llene答案的工作非常適合我。最關鍵的是,當你已經嘗試安裝並沒有成功,你需要做的正是這個步驟:

  1. 運行的VirtualBox安裝
  2. 運行從pkg文件安裝,它會在驗證步驟失敗,它的確定
  3. 關閉安裝程序並重新運行它,但現在選擇uninstaller.tool文件,裏面(不要刪除安裝設備還)從您的設備
  4. 彈出的VirtualBox(在取景器的左側面板)
  5. 後,進入系統首選項 - >安全和隱私 - >常規,並批准這樣封鎖來自'Oracle America'的軟件,將出現在那裏 6)再次從相同的.pkg文件運行安裝。現在它應該成功完成