[英]cabal-install and Debian
因此,这是一个个人问题,但也许人们会有很好的建议或解决方法。
问题是关于在Debian下安装cabal-install和haskell-platform。
当您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
所以,我的最后一个问题是:
which cabal
仍然指向我无用的/usr/bin/cabal
,因此,如果脚本使用此命令,它们将被愚弄...) 我要做的是使用--global
标志安装cabal。 这会将cabal安装到/usr/local/bin/cabal
,因此它将始终取代Debian软件包cabal。
另一种方法是通常避免使用Debian软件包并直接从其源代码安装Haskell平台。 如果您始终希望拥有Haskell库的最新版本,则此方法也更好。
我将我的用户本地$HOME/.cabal/bin
放在PATH
的前面。 我仅从分发软件包中安装ghc6
, ghc6-prof
, ghc6-doc
和cabal-install
。 除了引导新的~/.cabal
之外,我不使用发行版cabal-install
进行任何其他~/.cabal
。 我使用cabal install
所有其余部分,包括较新的cabal
本身。
当我想使用较新的GHC时,我将其部署在/usr/local/stow/ghcVERSION
,并使用GNU stow
启用它(它在/usr/local
添加了符号链接,该符号链接同样在PATH
具有优先级)。 当我想切换回发行版GHC时,只需运行stow -D
即可删除所有指向它的符号链接。
我考虑使用cabal-dev
进行项目特定的cabal安装,并避免因cabal
时不时发生的cabal
依赖关系。
事实上,我根本不使用Haskell平台,因为我不需要所有功能,并且发现安装单个库更容易。 我不安装分发库,因为并非所有分发库都可用,或者正是我需要的版本。 如果所有冲突都安装在同一位置(在我的情况下是~/.cabal
),则控制冲突要容易得多。 我不使用--global
安装任何东西,因为我认为这是错误的并且很难回滚。
当然,这些信息已经过时了,但是,是的,Debian不稳定,并且在撰写本文时,测试已经有了cabal-install 0.10.2。
通常,Haskell东西的Debian打包针对希望使用一组已知可以一起工作的软件包的用户,即没有依赖地狱,而又不总是拥有最新和最伟大的东西。 这包括安装安装。 我使用来自存储库的cabal-install,仅安装那些尚未为Debian打包的库。
免责声明:我是为Debian创建这些软件包的人之一。
在Ubuntu上,我也倾向于通过存储来安装GHC,而完全不考虑系统软件包。
jetxee的方法有一个小变化,就是我确实安装了Haskell平台(从源代码),并将其与GHC存放目录合并。 我想应该将路径称为/usr/local/stow/haskell-platform-VERSION
,但是我倾向于使用/usr/local/stow/ghc-VERSION
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.