2014-10-12 70 views
2

假設我運行了cabal sandbox init .. cabal install -j some-package,並在some-package的某個依賴關係中出現構建失敗。解決這個問題的一種方法是,我通知作者失敗,然後等待他們發​​布新版本,但這個過程有時可能太慢。當失敗的原因很明顯時(通常是這種情況),我想啓動我的文本編輯器並自行修復它。Haskell Cabal:本地修復從Hackage DL'ed破損的軟件包

但是,當我從緩存目錄中的錯誤日誌的文件名中運行find(1)時,我找不到.hs文件。 GHC成功或未成功完成執行時,cabal命令是否會刪除整個源目錄?我如何侵入cabal的任務執行?或者,是否有任何標準化的方式來實現我自己從Hackage修復軟件包的最初目標?

回答

1

您可以使用cabal get <package>下載軟件包源代碼,然後修復它,並使用cabal install <package-dir>安裝到沙箱中。

E.g.

$ cabal get split 
Unpacking to split-0.2.2/ 
$ vim split-0.2.2/split.cabal 
$ cabal install ./split-0.2.2 
+0

太好了,我來試一試!我不知道'cabal'接受本地文件路徑。 – nodakai 2014-10-12 17:37:05

+1

起初我以爲它不起作用,但結果是包名稱末尾的'/'字符對'cabal'識別它是本地目錄而不是Hackage非常重要。 – nodakai 2014-10-13 18:12:09

+0

哦,那是真的,我會更新我的答案 – 2014-10-13 18:16:02

相關問題