Haskell 每当我尝试安装某些东西时,堆栈抛出错误
每当我尝试使用Haskell 每当我尝试安装某些东西时,堆栈抛出错误,haskell,haskell-stack,Haskell,Haskell 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 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
堆栈版本是
1.5.1 x86_64
,它位于目录usr/bin/Stack
我认为这是一个常见的问题,但要找到一个直接解决它的StackOverflow答案有点困难,所以这里有一个尝试
在Linux上,有两种主要的初始安装堆栈的方法:
堆栈
二进制文件放入/usr/bin/stack
haskellstack.org
上的说明操作,它将告诉您通过curl
检索安装脚本,并通过shell将其导入:curl-sSLhttps://get.haskellstack.org/ |sh
。默认情况下,这会将stack
放入/usr/local/bin/stack
中stack
都不会有任何问题
但是,如果以后按照使用堆栈升级
命令升级堆栈的说明进行操作,这将在主目录下的~/.local/bin/Stack
下安装升级的二进制文件。/usr/bin/stack
或/usr/local/bin/stack
中的旧版本将保持不变
由于许多人的路径中没有~/.local/bin/
,他们可能会发现,在假定升级堆栈后尝试运行堆栈仍将运行旧版本。如果您运行:
$ which stack
/usr/local/bin/stack
看到路径是全局安装的版本,而不是主目录下的某个版本,如/home/xxx/.local/bin/stack
,那么您可能仍在运行旧版本
如果您尝试跑步:
$ ~/.local/bin/stack install hip
这是有效的,那么这将证实这是你的问题。您必须在全局路径之前将
$HOME/.local/bin
添加到您的路径中,才能选择堆栈的正确版本。(如果您以前没有做过这种事情,请搜索“添加目录路径”和您的Linux发行版。例如,这里是Ask Ubuntu StackExchange站点上的一些。)我认为这是一个常见问题,但要找到直接解决它的StackOverflow答案有点困难,所以这里有一个尝试
在Linux上,有两种主要的初始安装堆栈的方法:
如果您的发行版有一个“堆栈”包,您可以安装它。这通常会将堆栈
二进制文件放入/usr/bin/stack
如果您按照haskellstack.org
上的说明操作,它将告诉您通过curl
检索安装脚本,并通过shell将其导入:curl-sSLhttps://get.haskellstack.org/ |sh
。默认情况下,这会将stack
放入/usr/local/bin/stack
中
大多数人在他们的路径中已经有了这些目录,所以无论是哪种情况,他们在安装后运行stack
都不会有任何问题
但是,如果以后按照使用堆栈升级
命令升级堆栈的说明进行操作,这将在主目录下的~/.local/bin/Stack
下安装升级的二进制文件。/usr/bin/stack
或/usr/local/bin/stack
中的旧版本将保持不变
由于许多人的路径中没有~/.local/bin/
,他们可能会发现,在假定升级堆栈后尝试运行堆栈仍将运行旧版本。如果您运行:
$ which stack
/usr/local/bin/stack
看到路径是全局安装的版本,而不是主目录下的某个版本,如/home/xxx/.local/bin/stack
,那么您可能仍在运行旧版本
如果您尝试跑步:
$ ~/.local/bin/stack install hip
这是有效的,那么这将证实这是你的问题。您必须在全局路径之前将$HOME/.local/bin
添加到您的路径中,才能选择堆栈的正确版本。(如果您以前没有做过这种事情,请搜索“添加目录路径”和您的Linux发行版。例如,下面是Ask Ubuntu StackExchange站点上的一些。)如果您运行哪个堆栈和堆栈--version
,它会显示什么?一个潜在的问题是堆栈升级
通常在~/.local/bin/stack
中安装新版本,但您可能在/usr/local/bin/stack
或类似的地方使用旧版本。@K.A.Buhr版本是1.5.1 x86\u 64
,文件夹是usr/bin/stack
,您需要更新版本的堆栈(1.6.1或以上).Cf.@duplode谢谢,如果不是通过堆栈升级
,我如何获得新版本?堆栈升级
在~/.local/bin
中安装堆栈。似乎全局安装的版本比本地安装的版本要早,所以您可能需要查看路径。如果运行哪个堆栈
和堆栈--version
,它显示了什么?一个潜在的问题是,堆栈升级
通常在~/.local/bin/stack
中安装新版本,但您可能在/usr/local/bin/stack
或类似的地方使用旧版本。@K.A.Buhr版本是1.5.1 x86\u 64
,文件夹是usr/bin/stack
较新版本的Stack(1.6.1或更高版本)。Cf.@duplode谢谢,如果不是通过堆栈升级
,堆栈升级
在~/.local/bin
中安装Stack。看起来