Haskell 覆盖阴谋集团版本的LTS

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中提到了一个,但我认为这对我没有帮助,我当时只是升级到

我有一个项目,我想用LTS2编译,但我一直在努力解决这个问题

我可以指定一个较新版本的
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版本。