0

我在 Haskell 中完全是菜鸟,我正在尝试学习如何在网络上使用它的教程。

我使用的是 Mac OSX,所以我从http://www.haskell.org/platform/mac.html下载了 OSX 的 haskell 平台

然后我做了

cabal update

它告诉我有新版本的 cabal install 可用,那么为什么不 cabal install cabal-install

它编译了 Cabal-1.16.0.3 版本并将其安装在我的 $HOME/Library/Haskell 中。我将 $HOME/Library/Haskell/bin 添加到我的 $PATH 并打开一个新终端。

然后我做 cabal --version

但是版本是 1.14 我做了 $HOME/Library/Haskell/bin/cabal --version 我知道二进制文件正在使用库版本 1.14 我怎样才能让它使用新安装的版本而不是平台之一?

然后我做 cabal install cabal-dev

并获取要编译的新包的消息,但此消息还包括cabal:

The following packages are likely to be broken by the reinstalls:
network-2.3.1.0
haskell-platform-2012.4.0.0
cgi-3001.1.7.4
HTTP-4000.2.5

我不喜欢这听起来如何。

我以前尝试在另一台计算机上安装 yesod,我记得遇到过同样的问题,最终 yesod 没有安装,我不想做任何会破坏任何事情的事情。

让 Yesod 或任何 haskell 包在 mac osx 上工作的正确方法是什么?

4

1 回答 1

3

我怎样才能让它使用新安装的版本而不是平台之一?

正如 cabal 应该告诉您的,您只需将目录添加到 PATH 环境变量中。例如,如果你使用 bash 作为你的 shell,添加

export PATH=$HOME/Library/Haskell/bin:$PATH

到 $HOME/.bashrc 并重新启动你的 shell。

让 Yesod 或任何 haskell 包在 mac osx 上工作的正确方法是什么?

这个问题不是特定于 OSX 的,而是特定于阴谋集团的。答案是告诉 cabal你关心的所有已经安装的包。例如,您可以尝试

cabal install cabal-dev haskell-platform # or
cabal install cabal-dev async cgi fgl GLUT haskell-src html HTTP HUnit mtl network OpenGL parallel parsec QuickCheck random regex-base regex-compat regex-posix split stm syb text transformers vector xhtml zlib

或者,如果您只是想阻止某些包被重建,您可以使用installed约束,如cabal install cabal-dev --constraint "haskell-platform installed".

于 2013-01-19T12:50:09.117 回答