31

我刚刚从它的官方网站安装了 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?我如何检查我的阴谋集团的版本?

重要提示:我使用的是 Mac OS X 的 64 位版本。

4

9 回答 9

29

在我的情况下(可能还有其他人?) cabal 最初是/usr/local/bin在安装haskell-platform. 升级 cabal 时,版本安装到$HOME/.cabal/bin/cabal. 你应该把你的 cabal bins 放在更高的地方$PATH,像这样:

export PATH=$HOME/.cabal/bin:$PATH
于 2014-01-18T06:02:19.477 回答
19

2012.4.0.0在 OSX 上安装 Haskell 平台后,我遇到了类似的问题。当我跑的时候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
于 2013-02-17T23:52:45.753 回答
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"
于 2013-11-01T23:02:06.613 回答
10

在 OS X 10.8 上,我必须添加/Library/Haskell/bin到我的 PATH(放在前面/usr/bin)。添加修复了错误消息

于 2013-10-18T02:32:13.817 回答
3

cabal --version为您提供您正在运行的 cabal 版本。如果您想查看您拥有的 cabal-install 版本,请运行cabal info cabal-install并查看安装的版本行。

对我来说,在 OS X 上安装的版本[unknown], after running cabal install cabal-install,这不是很好。

于 2013-02-17T05:34:57.863 回答
3

我也有这个问题。

运行后which cabal发现是用/usr/bin/cabal的。删除它解决了这个问题。

于 2013-03-19T22:14:07.100 回答
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变量。

于 2015-04-25T17:45:06.667 回答
1

似乎 cabal 默认为当前用户在本地安装软件包,因此不会成为 PATH 的一部分。查看 Cabal 文档,特别是步骤 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。

于 2014-05-12T08:43:23.293 回答
0

就我而言,新版本的 cabal 被安装在我所在项目的 .cabal-sandbox 中。

例如检查版本:

./.cabal-sandbox/bin/cabal --version

所以我需要在此之外对其进行升级。这是在 OSX 上。

于 2015-02-15T15:56:05.470 回答