2011-06-30 34 views
6

所以我試圖安裝一個大的凌亂的依賴集(gitit,在這種情況下)的包。從hackage部隊直接cabal install重建大量庫我不想重建(與text約束,network約束,parsec約束等)我做了正確的事情,跑cabal unpack gitit,手動編輯.cabal文件,併成功通過了cabal configurecabal build循環。到現在爲止還挺好。我想運行一個cabal install。在過去的好時光(去年),這隻會安裝已經構建的二進制文件和它們所屬的文件。但是,現在運行cabal install運行依賴檢查程序,它決定我正在構建的所有程序包不使用相同的parsec等,並試圖重新安裝它們無論如何!儘管我剛剛跑完美cabal build。什麼是魔術標誌來解決這個問題,並得到舊的,不聰明的,完全可以接受的行爲?如何禁用本地cabal安裝的依賴性檢查?

回答

4

看着旗幟,似乎沒有任何跡象cabal install這樣做。在此之前,在cabal install之前以及您必須手動獲取自己的軟件包之前,在運行runghc Setup configure --prefix=$FOO --user之後,安裝階段的咒語爲runghc Setup install --user - 也許這會起作用?如果我的內存正確運行,Setup.hs將不會自動調用'build'來告訴它'安裝'。我現在強烈建議你使用cabal-dev,它會對你的軟件包安裝進行沙盒處理,不會碰到你的實際用戶/全局包數據庫,在這種情況下, ð只是做:

$ cabal unpack gitit 
$ cd gitit-0.8.0.1 # latest hackage version 
$ cabal-dev install 

它會正常下載並安裝所有需要的依賴像陰謀安裝,但它會通過創建包含一個自包含的包數據庫./cabal-dev目錄沙盤他們。它永遠不會觸及你的全球或用戶包db在~/.ghc/cabal-dev有效地編輯cabal文件和處理鑽石依賴問題cabal面臨着過去的事情,cabal-install手動下載軟件包的方式成爲過去。

+1

是的 - 直接使用安裝腳本的伎倆。令人驚訝的是,我多快忘記了整整兩年前的那些日子:-) – sclv

2

它也證明有一個--only標誌可以讓我們只生成和安裝該包,就像./Setup路由一樣。