每当我尝试安装某些东西时,堆栈抛出错误

问题描述 投票:0回答:1

每当我尝试使用stack安装某些东西时,例如$ stack install hip$ stack install Gifcurry和其他几个软件包,它们都会抛出相同的错误:

Downloaded lts-12.9 build plan.
AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\""

这是我第一次尝试使用stack安装任何东西,所以我不知道该怎么做。在做这个之前我确实运行过$ stack upgrade

Stack版本是1.5.1 x86_64,它位于usr/bin/stack目录中。

haskell haskell-stack
1个回答
4
投票

我认为这是一个常见问题,但是找到直接解决它的StackOverflow答案有点困难,所以这里有一个镜头。

在Linux上,最初安装Stack有两种主要方式:

  1. 如果您的发行版具有“堆栈”包,则可以安装它。这通常会将stack二进制文件放在/usr/bin/stack中。
  2. 如果您按照haskellstack.org上的说明操作,它会告诉您通过curl检索安装脚本并通过shell管道:curl -sSL https://get.haskellstack.org/ | sh。默认情况下,这会将stack放入/usr/local/bin/stack

大多数人已经在他们的路径中有这些目录,所以在安装之后运行stack没有任何问题,无论是哪种情况。

但是,如果您稍后按照使用stack upgrade命令升级Stack的说明,这将在~/.local/bin/stack下的主目录中安装升级后的二进制文件。在/usr/bin/stack/usr/local/bin/stack的旧版本将保持不变。

由于许多人在他们的路径中没有~/.local/bin/,他们可能会发现尝试在升级后运行Stack仍将运行旧版本。如果您运行:

$ which stack
/usr/local/bin/stack

并看到路径是全局安装的版本,而不是你的主目录下的东西,如/home/xxx/.local/bin/stack,那么你可能仍在运行旧版本。

如果您尝试运行:

$ ~/.local/bin/stack install hip

这是有效的,然后这将确认这是你的问题。您必须在全局路径之前将$HOME/.local/bin添加到路径中以选择正确版本的stack。 (如果您之前没有这样做过,请搜索“添加目录路径”和Linux发行版。例如,这里有一些Ask Ubuntu StackExchange站点上的instructions for Ubuntu。)

© www.soinside.com 2019 - 2024. All rights reserved.