13

所以,这有点个人问题,但也许人们会有很好的建议或解决方法。

问题是关于在 Debian 下安装 cabal-install 和 haskell-platform 。

当 you 时apt-get install haskell-platform,它附带cabal-install,并且它的命令cabal可用。

现在这cabal-install不是最新的:

> which cabal
/usr/bin/cabal
> /usr/bin/cabal --version
cabal-install version 0.8.0
using version 1.8.0.2 of the Cabal library

但是,我对运行cabal update的理解是它更新了 cabal,但由于它不是“Debian 的东西”,它把它放在~/.cabal/bin/.

> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

现在我的系统有 2 个 cabal,我通过打字得到的cabal那个不是我想要使用的那个……因为它会不断更新另一个而不是它自己,因此是无效的。

所以我所做的就是在我的~/.bashrc:

alias cabal='~/.cabal/bin/cabal'

现在:

> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

所以,我最后的问题:

  • 是否有包含 cabal 0.8.2 的 deb 存储库?
  • 我目前的解决方案会导致问题吗?(例如,which cabal仍然指向我的无用/usr/bin/cabal,所以如果脚本使用这个命令他们会被愚弄......)
  • 有人想出了更好的解决方案吗?(我的有点临时,但我对幕后发生的事情知之甚少,这就是我所能想到的……)
  • 如果我上面所说的任何内容是错误或不准确的,请纠正我。
4

4 回答 4

13

我所做的是用--global旗帜安装阴谋集团。这会将 cabal 安装到/usr/local/bin/cabal中,因此它将始终取代 Debian 软件包 cabal。

另一种方法是通常避免使用 Debian 软件包并直接从其源代码安装 Haskell 平台。如果您总是想拥有最新版本的 Haskell 库,这种方法也更好。

于 2011-03-21T17:07:44.397 回答
11

我将我的本地用户$HOME/.cabal/bin放在PATH. 我只安装ghc6, ghc6-prof,ghc6-doccabal-install分发包。除了cabal-install引导新的~/.cabal. 我安装的所有其余部分cabal install,包括更新的cabal本身。

当我想使用较新的 GHC 时,我将它部署在 中/usr/local/stow/ghcVERSION,并使用 GNU 启用它stow(它添加了符号链接,/usr/local在我的 中再次具有优先权PATH)。当我想切换回分发版 GHC 时,我只是运行stow -D以删除指向它的所有符号链接。

我考虑使用特定于项目的 cabal 安装,并避免不时cabal-dev发生的损坏的依赖关系。cabal

事实上,我根本不使用 Haskell 平台,因为我不需要所有这些平台,并且发现安装单独的库更容易。我不安装分发库,因为并非所有这些库都可用或正是我需要的版本;~/.cabal如果它们都安装在同一个地方(在我的例子中),那么控制冲突会容易得多。我不安装任何东西--global,因为我认为它是错误的并且难以回滚。

于 2011-03-21T17:47:08.260 回答
4

当然,这些信息已经过时了,但是是的,在撰写本文时,Debian 不稳定和测试有 cabal-install 0.10.2。

一般来说,Haskell 的 Debian 打包是针对那些想要一组已知可以协同工作的包的用户,即没有依赖地狱,代价是并不总是拥有最新和最好的。这包括 cabal-install。我使用存储库中的 cabal-install,并且只安装那些尚未为 Debian 打包的库。

免责声明:我是为 Debian 创建这些软件包的人之一。

于 2011-09-21T20:47:05.590 回答
1

在 Ubuntu 上,我也倾向于通过 stow 安装 GHC,完全忽略系统包。

jetxee 方法的一个细微变化是我确实安装了 Haskell 平台(从源代码),将它与 GHC stow 目录混为一谈。我想我应该调用 paths /usr/local/stow/haskell-platform-VERSION,但我倾向于使用/usr/local/stow/ghc-VERSION

于 2011-03-22T13:22:56.037 回答