2011-06-29 76 views
3

如果這是一個FAQ,請原諒我,但我對如何正確解決此問題感到有點困惑。Cabal的軟件包版本衝突

我最近下載裏面裝精了最新版本0.12.2

TagSoup然後我安裝的安裝罰款與最新版本的軟件包download-curl。我沒有意識到的是,下載捲曲取決於TagSoup的版本= < 0.11,因此作爲安裝過程的一部分,Cabal也下載了較舊版本的TagSoup。

這是一個問題,因爲我想同時使用兩個庫(最新版本的TagSoup和下載捲曲) - 當您因爲某種原因而做GHCI時,會陷入一團糟。

我的問題是,是否有指定的import語句版本的方式,即

import Text.Html.TagSoup-0.12.2 

,或者這是一個沒有去?我不想。

我解決這個得到的唯一辦法就是下載下載捲曲源,修改.cabal文件使用TagSoup-0.12.2與重新安裝包我的小「黑客」的地方,因爲我希望它其中工程 - 但我不認爲這是解決

任何幫助,將不勝感激

+0

這就是解決方案。另外,一定要用舊的版本發送包裹的維護人員(請注意,在這種情況下)。 –

回答

4

通常一個指定的文件.cabal所需版本。有特定軟件包導入的擴展語法(-XPackageImports),但讓Cabal處理通常會更好。

也就是說,如果你需要使用兩者,那麼你就進入了鑽石依賴的黑暗境界。你們幾乎是目前唯一可用的解決方案。 -XPackageImports不是這裏有一個好主意,因爲試圖在同一個程序中使用同一個庫的兩個版本可能不會鏈接,並且幾乎肯定會在運行時轉儲核心,如果它確實設法鏈接而沒有重複的符號。

+0

啊好吧謝謝,謝謝GHC擴展的提示,但正如你所說這可能不適用於我的情況。手動編輯cabal文件並在本地升級版本現在就足夠了。 – djhworld