
我使用 Haskell 程式的 cabal 套件管理器來安裝我從一些儲存庫克隆的庫和新專案。我經常遇到問題。大多數項目都使安裝它們看起來非常容易,但就我而言,情況並非總是如此 - 有時它們很難運行。事實上,有些太難了,以至於我僅僅因為無法安裝它就對這個專案失去了興趣。
因此,我不想抱怨,而是想問我應該做些什麼來改善這種情況。我想用我最近遇到的問題作為例子。
我有興趣嘗試一下gitit項目。這是一個看起來很有前途的個人維基,可以在各種版本控制系統上運作。
這就是我所做的:
- 克隆自吉圖布
cabal install
在專案目錄中運行,就像我在專案安裝頁面上被告知的那樣:mika@eka:~/git/gitit$ ls BLUETRIP-LICENSE CHANGES HCAR-gitit.tex LICENSE Network README.markdown RELANN-0.6.1 Setup.lhs TANGOICONS YUI-LICENSE data expireGititCache.hs gitit.cabal gitit.hs plugins mika@eka:~/git/gitit$ cabal install Resolving dependencies... cabal: cannot configure happstack-server-7.0.7. It requires base64-bytestring ==1.0.* For the dependency on base64-bytestring ==1.0.* there are these packages: base64-bytestring-1.0.0.0. However none of them are available. base64-bytestring-1.0.0.0 was excluded because gitit-0.10 requires base64-bytestring ==0.1.* mika@eka:~/git/gitit$
所以現在我在想:好吧,我會自己安裝 happstack-server,也許這會起作用:
mika@eka:~/git/gitit$ cabal install happstack-server Resolving dependencies... Warning: happstack-server.cabal: Ignoring unknown section type: test-suite Configuring happstack-server-7.0.7... cabal: At least the following dependencies are missing: blaze-html ==0.5.*, hslogger >=1.0.2, monad-control ==0.3.*, network >=2.2.3, sendfile >=0.7.1 && <0.8, system-filepath >=0.3.1, text >=0.10 && <0.12, threads >=0.5, transformers-base ==0.4.* cabal: Error: some packages failed to install: happstack-server-7.0.7 failed during the configure step. The exception was: ExitFailure 1
所以看起來缺少一些依賴項。但是安裝這些依賴項不就是使用 cabal 的首要目的嗎?
我該怎麼辦?提交錯誤報告(到哪個項目?)、手動安裝依賴項還是其他?解釋導致此類問題的原因會加分。
答案1
答案2
對於任何偶然發現這一點的人來說,我發現了兩件重要的事情,可以讓陰謀集團不再那麼痛苦。
首先,從 cabal-install 1.18 開始內建沙箱(您不再需要 cabal-dev)。您應該使用 進行升級cabal install cabal-install
,並將它們用於所有用途!我~/.cabal/sandboxes
為每個構建創建並放置一個沙箱。然後我將完成的二進位檔案連結到~/.cabal/bin
with中ln
。
其次,如果您的發行版(例如 Debian)不提供/tmp
執行權限,則會導致各種看似不相關的錯誤。像configure: error: cannot run C compiled programs
。使用 很容易修復alias cabal="TMPDIR=/somewhere/with/permission cabal"
。