2013-10-30 37 views
21

當重新安裝使用驚天動地包,人們通常看到這樣的警告:爲什麼cabal重新安裝「永遠危險」?

警告:請注意,重新安裝是非常危險的。無論如何繼續...

這條消息背後的原因是什麼?

+5

[SICP](http://www.vex.net/~trebla/haskell/sicp.xhtml),規範的答案(尤其是鴿子丟棄騙局)。 –

+2

此外,事實上,你得到這個「警告」,而它正在做/完成無論如何重新安裝。 –

+0

有什麼要告訴我,如果你不打算給我一個選擇,以實際聽取警告並取消它,這是危險的嗎? – flarn2006

回答

16

目前,重新安裝軟件包意味着破壞性地覆蓋已經安裝的軟件包。如果這個舊軟件包對系統有任何反向依賴關係,他們將不再工作。

爲了減少這種可能性,cabal-install在調用這些反向依賴關係時檢查它有權訪問的包數據庫並列出它們。在這種情況下,它需要--force-reinstalls才能繼續。但即使沒有找到任何反向依賴關係,也並不意味着沒有任何反向依賴關係。在系統的其他地方可能會有其他軟件包數據庫(例如,多個用戶數據庫),或者已針對要覆蓋的舊版軟件包配置的項目目錄。 cabal-install沒有辦法完全確定,這就是爲什麼它警告重新安裝總是危險的。

+2

在沙箱中重新安裝會非常危險嗎? –

+3

@SeanLeather不是那麼危險,所以'cabal-install'的輸出可能應該稍微改進一點。沙箱中的重新安裝仍然會破壞使用沙箱的程序包(沙箱可以在多個項目之間共享,儘管這並不常見)。但它至少不會破壞任何不使用沙箱的東西。 – kosmikus

+0

所以這是一個問題的規模。問題仍然存在;只是包含了損害。如果發生問題,您可以刪除沙箱,而全局包數據庫則更成問題。至於在軟件包之間共享沙箱,我們正在這樣做。我不確定它有多普遍。 –

相關問題