2013-02-17 106 views
30

我刚刚从it's official site安装了Haskell。之后,按照它的快速入门教程。我升级了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-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版本?

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

+3

使用'哪个cabal'来找出你正在使用哪个cabal安装,cabal可能不会将新下载的版本安装到你的PATH。检查〜/ bin另一个cabal可执行文件。 – bisserlis 2013-02-17 07:12:11

回答

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,这是我的路径。

此后一切OK跑:

$ 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

我的Windows系统出现类似情况。每个用户cabal安装目录将位于'%HOMEPATH%\ AppData \ Roaming \ cabal \ bin'中,因此需要将此路径作为更高优先级追加到路径中。 – 2014-08-08 21:36:30

3

cabal --version给你你正在运行的阴谋的版本。如果你想看看你的cabal-install版本,请运行cabal info cabal-install并查看版本安装的行。

对我来说,在OS X上,版本安装[unknown],运行cabal install cabal-install,这是不是很大了。

+0

也许是因为它不知道它总是告诉你tu升级? – 2013-02-17 11:40:38

+1

@LuisOrtegaAraneda不,cabal二进制文件知道它的版本,它只会告诉你升级,如果有一个新的hackage。很可能,新的安装目录不在你的路径中。哪个OS?在Linux(和OS X,iirc)上,你应该在你的路径中添加'$ HOME/.cabal/bin';在Windows上,像'Users \ You \ AppData \ Roaming'。 – 2013-02-17 14:21:22

+0

实际上,它不适用于那个路径,在OS X中你必须使用'/ Library/Haskell /'。并且,当我执行cabal信息cabal-install时,它会显示'[unknown]' – 2013-02-17 15:03:03

3

我有这个问题了。

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

10

在OS X 10.8上,我不得不将/Library/Haskell/bin添加到我的PATH(放在/usr/bin之前)。添加固定的错误信息

+1

这是正确的。'/ usr/bin'中的旧版本隐藏了'/ Library/Haskell/bin'中的版本。相当凌乱的安装我会说...为什么他们不只是替换'/ usr/bin'中的旧版本。 – 2015-07-29 08:48:18

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" 
+0

这是要走的路,国际海事组织。 – 2014-02-18 23:38:01

+0

你节省了我的一天。 – Wilbeibi 2015-02-16 02:48:07

26

在我的情况下安装haskell-platform当阴谋最初由自制软件安装在/usr/local/bin。升级cabal时,版本安装到$HOME/.cabal/bin/cabal。你应该把你的阴谋箱设定较高的$PATH,像这样:

export PATH=$HOME/.cabal/bin:$PATH 
+0

这对我来说并不适用于自制+小牛队。尽管如此,[这](http://stackoverflow.com/a/19736802/388010)答案。 – 2014-02-18 23:37:32

+0

@Sebastian - 正确 - 如果您直接从http://hackage.haskell.org/platform/使用该软件包。 Homebrew使用'$ HOME/.cabal'和'/ usr/local/bin',而不是'/ Library/Haskell/bin'。我现在意识到,上述解决方案的回答与OP要求的问题略有不同。 – Charles 2014-04-15 18:28:07

+0

这是我的问题。 – 2014-11-12 21:16:24

1

看来,阴谋默认本地安装包为当前用户,因此不会成为路径的一部分。看看 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标志阴谋安装二进制C:\Program Files\Haskell\bin这是不是在我的道路,但必须在C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin路径前加入。

从文档

两者必须把cabal.exe的目录中在您%PATH%,例如C:\ Program Files文件\哈斯克尔\ bin中。

0

在我的情况正在安装项目我在的.cabal的沙箱阴谋的新版本。

例如检查版本:

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

所以,我需要升级它的那个之外。这是在OSX上。

1

在我而言,这里几个答案的组合被要求通过这个问题来获得。我会尝试为我的情况中的其他人提供一个更全面的解决方案。

  • 对于初学者来说,运行which cabal向我表明/usr/bin/cabal正在加载,这是一个符号链接/Library/Haskell/ghc-7.8.3-x86_64/bin/cabal。我相信cabal的更新版本正在安装,但是这个路径是特定于单个版本的,所以他们被忽略了。在我的$PATH的前面加上/Library/Haskell/bin弥补了这种情况。
  • 其次,更重要的是,cabal-install新版本中被安装到我的阴谋沙箱,而不是系统的位置。我没有看到任何其他答案提出这个建议,但是在我周围有点mon I之后,我发现移动到应用程序目录之外允许cabal实际安装到系统。
  • 最后,加入--global标志提供给命令解决了这一问题。我最后的命令是cabal install --global cabal-install。之后,我终于能够正确更新。

TL; DR:如果您使用cabal沙箱,请移到您项目的目录之外并运行cabal install --global cabal-install。另外,请检查您的$PATH变量,如其他人所建议的。