2015-05-20 60 views
0

在我/home/sk/.ghc/x86_64-linux-7.8.4/package.conf.d文件夾中,有一個bytestring包作爲一款入門,Haskell內置的庫,它去哪裏?

bytestring-0.10.6.0-7682cf7d45ee92d104399a67f3bce6ba.conf 

在我/opt/ghc/7.8.4/lib/ghc-7.8.4/package.conf.d文件夾中,有一個字節字符串作爲一款入門,

bytestring-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5.conf 

爲什麼哈斯克爾店bytestring庫兩個不同的地方。由於類型/版本不匹配,這導致編譯錯誤。

如何確保在我的ubuntu 14.04機器上一次只存儲和使用任何庫的一個版本?

+0

我的猜測:您安裝了兩個軟件包 - 一個是全局的,一個是每個用戶。 – Sibi

+0

你應該可以用'ghc-pkg'助手來管理那些 - 如果一切都失敗了,你總是可以重置你的安裝:( – Carsten

回答

2

爲什麼Haskell在兩個不同的地方存儲bytestring庫。由於類型/版本不匹配,這導致編譯錯誤。

那麼,沒有。問題是你有兩個版本的bytestring庫安裝,期間。無論他們是否在同一個包數據庫中都沒關係。

你應該ghc-pkg unregister bytestring-0.10.6.0解決這個問題(第註銷,將打破任何包,如果有的話),然後

constraint: bytestring installed 

添加一行到您~/.cabal/config,以防止它再次發生。您可能希望對GHC附帶的其他軟件包(至少所有依賴於ghc軟件包的軟件包(請參閱ghc-pkg describe ghc))執行相同的操作。

我不知道是否有辦法告訴cabal永遠不會安裝第二個版本的任何包。 (在實踐中,我發現臨時安裝多個版本的軟件包足夠有用,我會發現它更有趣,而不是有幫助。)