我升级了cabal-install吗?

时间:2013-02-17 05:24:59

标签: macos haskell cabal

我刚从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位版本。

9 个答案:

答案 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上。