我刚从it's official site安装了Haskell。之后,按照它的快速入门教程。
我跑:
cabal update
显示此消息:
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
我跑:
cabal install cabal-install
并使用
检查更新是否成功cabal update
结果,它从一开始就向我显示了相同的信息:
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
那么,我是否升级了cabal-install?如何查看我的cabal版本?
重要提示:我正在使用适用于Mac OS X的64位版本。
答案 0 :(得分:26)
在我的情况下(可能还有其他人?)cabal最初安装在/usr/local/bin
安装haskell-platform
时由自制程序安装。升级cabal时,版本安装到$HOME/.cabal/bin/cabal
。您应该将您的cabal箱子放在$PATH
的较高位置,如下所示:
export PATH=$HOME/.cabal/bin:$PATH
答案 1 :(得分:18)
在OSX上安装Haskell平台2012.4.0.0
之后,我遇到了类似的问题。当我运行cabal install cabal-install
时,它以:
cabal: ../ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal: does not exist
所以我猜想它的路径在某处混淆了。但是,可执行文件实际上已成功构建(检查~/Library/Haskell/ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal
),我只是将其从那里复制到我路径上的~/Library/Haskell/bin
。
此后一切正常:
$ which cabal
/Users/luke/Library/Haskell/bin/cabal
$ cabal update
Downloading the latest package list from hackage.haskell.org
$ cabal --version
cabal-install version 1.16.0.2
using version 1.16.0.3 of the Cabal library
答案 2 :(得分:12)
每个人似乎都遇到了一个稍微不同的问题。就我而言,cabal
已成功构建并安装到~/Library/Haskell/bin
。
正如~/.cabal/config
中所述,将~/Library/Haskell/bin
添加到PATH
解决了这个问题。
以下是~/.cabal/config
中的说明:
-- === Built executables will be installed in:
-- ~/Library/Haskell/bin
--
-- You may wish to place this on your PATH by adding the following
-- line to your ~/.bash_profile:
-- export PATH="$HOME/Library/Haskell/bin:$PATH"
答案 3 :(得分:10)
在OS X 10.8上,我必须将/Library/Haskell/bin
添加到我的PATH(将其放在/usr/bin
之前)。添加修复了错误消息
答案 4 :(得分:3)
cabal --version
为您提供正在运行的cabal版本。如果您想查看cabal-install的版本,请运行cabal info cabal-install
并查看已安装的版本行。
对于OS X,在运行[unknown]
之后,安装的版本<{em>}为cabal install cabal-install
,这不是很好。
答案 5 :(得分:3)
我也有这个问题。
运行which cabal
后,我发现它正在使用/usr/bin/cabal
。删除它解决了这个问题。
答案 6 :(得分:1)
默认情况下,cabal默认为当前用户在本地安装软件包,因此不会成为PATH的一部分。看着那(这 Cabal documentation具体为步骤1.2.1,您可以在此更改配置以默认全局安装(不推荐)。
我安装cabal的方式是cabal --global install cabal-install
但是路径仍有问题,因为默认安装Haskell的路径按此顺序排列C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files\Haskell Platform\2013.2.0.0\bin;
,其中第一条路径优先于第二条路径。使用--global标记cabal将二进制文件安装到C:\Program Files\Haskell\bin
,这不在我的路径中,但必须在C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin
路径之前添加。
取自文件
您必须将cabal.exe放在%PATH%上的目录中,例如C:\ Program Files \ Haskell \ bin。
答案 7 :(得分:1)
就我而言,这里需要多个答案的组合来解决这个问题。在我的情况下,我会尝试为其他任何人提供一个更全面的解决方案。
which cabal
向我显示正在加载/usr/bin/cabal
,这是/Library/Haskell/ghc-7.8.3-x86_64/bin/cabal
的符号链接。我相信正在安装较新版本的cabal,但是这条路径特定于单个版本,所以它们被忽略了。在/Library/Haskell/bin
的前面添加$PATH
可以解决这种情况。cabal-install
被安装到我的cabal沙箱而不是系统位置。我没有看到任何其他答案暗示这一点,但经过一段时间的修改我发现移动到我的应用程序目录之外允许cabal实际安装到系统。--global
标志可以解决问题。我的最后一个命令是cabal install --global cabal-install
。在此之后,我终于能够正确更新。 TL; DR:如果您使用cabal沙箱,请移出项目目录并运行cabal install --global cabal-install
。另外,请按照其他人的建议检查您的$PATH
变量。
答案 8 :(得分:0)
在我的情况下,新版本的cabal正安装在我所在项目的.cabal-sandbox中。
e.g。检查版本:
./.cabal-sandbox/bin/cabal --version
所以我需要在那之外升级它。这是在OSX上。