Haskell 覆盖阴谋集团版本的LTS
我有一个项目,我想用LTS2编译,但我一直在努力解决这个问题 我可以指定一个较新版本的Haskell 覆盖阴谋集团版本的LTS,haskell,cabal,haskell-stack,Haskell,Cabal,Haskell Stack,我有一个项目,我想用LTS2编译,但我一直在努力解决这个问题 我可以指定一个较新版本的Cabal与ghc-7.8.4一起使用吗?请注意,该项目实际上只使用GHC 7.8进行编译。* 编辑: 真正的意思是阴谋集团,而不是阴谋集团安装 编辑2: 实际上,这个问题的答案并没有真正解决我的具体问题(编译氦,这需要GHC我认为这个问题不仅仅与Cabal库版本有关(顺便说一句,stack不使用或不需要Cabal安装),但也是GHC版本。Stack的FAQ中提到了一个,但我认为这对我没有帮助,我当时只是升级到
Cabal
与ghc-7.8.4
一起使用吗?请注意,该项目实际上只使用GHC 7.8进行编译。*
编辑:
真正的意思是阴谋集团
,而不是阴谋集团安装
编辑2:
实际上,这个问题的答案并没有真正解决我的具体问题(编译氦,这需要GHC我认为这个问题不仅仅与
Cabal
库版本有关(顺便说一句,stack不使用或不需要Cabal安装
),但也是GHC版本。Stack的FAQ中提到了一个,但我认为这对我没有帮助,我当时只是升级到了7.10.2。以下是将GHC-7.8.4安装到您选择的目录中的方法:
$HOME/my prefix
$ ./configure --prefix=$HOME/my-prefix
$ make install
$HOME/my prefix/bin
中找到ghc,如中所述,有堆栈设置--升级cabal
来完成此操作。这就是这个问题的答案
在我的具体案例(XY问题)中,为了实现这一点,我必须执行通常的解决方法,这已经解释过了。因此,我启用了rootless,运行了upgrade命令并重新启用了rootless 恐怕没有用:这个bug是特定于
unix<2.7.1.0
,GHC 7.8.4也依赖它。所以即使升级了cabal,我也不能在lts-2中编译任何东西,除非我禁用了rootless,这很烦人
实际上,有了更新的
unix
软件包,这有点令人沮丧。这意味着,任何现实的/最新的OS X配置都无法构建任何涉及GHC<7.10的内容。如果没有其他方法,您总是可以放下堆栈,使用普通的阴谋。这并不理想,但如果堆栈卡住,这是一个很好的最后手段。我不认为stack
调用cabal二进制文件-至少不是stack-1.1.2。我会尝试在上询问或使用cabal沙箱编译。您是否正在寻找堆栈设置--升级cabal?堆栈设置--升级cabal
可能正是我所需要的,但由于相同的错误,它出错了。好的,我通过禁用并重新启用无根数据库来升级cabal功能()。虽然这并没有消除最初的问题(仍然由于相同的错误而出错),我想说你的提示可以作为这个问题的答案,@MichaelSnoyman,所以请随意回答。我正在尝试编译Hemia
编译器,但只在全球范围内安装了GHC 7.10,而没有编译。并排安装GHC 7.8会很麻烦(我不想尝试Hemia
),所以我试着使用堆栈
,如果不是为了那个bug,这显然是符合要求的。@SebastianGraf使用堆栈
,安装GHC 7.10没有任何麻烦。只要运行堆栈设置
,它就会在~/.stack
内部安装GHC,而不会污染您的路径。下次运行堆栈构建
,它就会明白使用GHC,即使它不在你的路径上。是的,我知道。但是Hemia
不是用7.10构建的,所以我要么使用lts-2.22,要么手动安装7.8,这样不会污染我的路径。@SebastianGraf对不起,我是说7.8或8.0,或者其他任何需要的东西。只需执行堆栈设置--resolver=lts-2.2
或者运行堆栈设置
在带有stack.yaml
的氦项目内。stack在~/.stack内处理多个并排安装的GHC。这正是我正在做的,我知道,但我遇到了OP中提到的错误。这就是为什么我想使用相同的LTS(例如,2.22,一个带有GHC 7.8.4),但是有了一个更新的cabal版本,因为我认为这个bug是cabal的固有缺陷。事实证明,堆栈设置——升级cabal
就是我想要的(见OP的评论),但它没有帮助,因为bug在unix
中,我认为GHC也使用它。无论如何,如果不去无根化,仍然无法编译he
(这很有帮助)。似乎这是获得我想要的东西的唯一途径。谢谢,但这并不能真正回答我提出的问题,也无助于解决我面临的具体问题,因为该漏洞存在于unix<2.7.1.0
,而Cabal
和ghc
<7.10都依赖于此。唯一真正的解决办法是禁用无根但是你可以用这个版本的ghc重建你需要的unix版本。