每当我尝试安装某些东西时堆栈抛出错误
Stack throwing errors whenever I try to install something
每当我尝试使用 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
.
我认为这是一个常见问题,但要找到直接解决该问题的 Whosebug 答案有点困难,所以这里有一个例子。
在Linux上,初始安装Stack主要有两种方式:
如果您的发行版有 "stack" 软件包,您可以安装它。这通常会将 stack
二进制文件放入 /usr/bin/stack
.
如果您按照 haskellstack.org
上的说明进行操作,它会告诉您通过 curl
检索安装脚本并将其通过 shell 管道传输:curl -sSL https://get.haskellstack.org/ | sh
。默认情况下,这会将 stack
放入 /usr/local/bin/stack
.
大多数人已经在他们的路径中有了这些目录,所以他们在安装后 运行ning stack
没有任何问题,无论哪种情况。
HOWEVER,如果您稍后按照使用 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
如果可行,那么这将确认这是您的问题。在 到 select 正确版本 stack
的全局路径之前,您必须将 $HOME/.local/bin
添加到您的路径 。 (如果您以前没有做过此类事情,请搜索 "adding directory path" 和您的 Linux 发行版。例如,这里有一些 instructions for Ubuntu 在 Ask Ubuntu StackExchange 站点.)
每当我尝试使用 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
.
我认为这是一个常见问题,但要找到直接解决该问题的 Whosebug 答案有点困难,所以这里有一个例子。
在Linux上,初始安装Stack主要有两种方式:
如果您的发行版有 "stack" 软件包,您可以安装它。这通常会将
stack
二进制文件放入/usr/bin/stack
.如果您按照
haskellstack.org
上的说明进行操作,它会告诉您通过curl
检索安装脚本并将其通过 shell 管道传输:curl -sSL https://get.haskellstack.org/ | sh
。默认情况下,这会将stack
放入/usr/local/bin/stack
.
大多数人已经在他们的路径中有了这些目录,所以他们在安装后 运行ning stack
没有任何问题,无论哪种情况。
HOWEVER,如果您稍后按照使用 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
如果可行,那么这将确认这是您的问题。在 到 select 正确版本 stack
的全局路径之前,您必须将 $HOME/.local/bin
添加到您的路径 。 (如果您以前没有做过此类事情,请搜索 "adding directory path" 和您的 Linux 发行版。例如,这里有一些 instructions for Ubuntu 在 Ask Ubuntu StackExchange 站点.)