问题标签 [haskell-stack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - Stack 可以确保依赖项不被篡改吗?
Cabal 的一个问题是它从 Hackage 中提取软件包,正如前段时间所讨论的,一段恶意代码可以通过多种方式进入。
Stack 是否改善了这种情况,是否采取了任何预防措施?是否可以确保为给定项目从外部下载的所有代码都经过验证?
这包括额外的依赖 - 如果有任何声明,是否可以让堆栈验证它们,例如给出下载包的预期哈希?
haskell - Haskell Stack 和 C 库
这可能是这篇文章的副本。但它得到的唯一答案似乎对我不起作用,所以我在这里发布我自己的案例,希望找到一个具体的解决方案。我在 Linux Ubuntu Trusty 上。
我有一个专有的 C 库 libMyLib.so,位于 /usr/local/lib(包含在 LD_LIBRARY_PATH 中)。
我以通常的方式将 haskell 绑定写到了这个 C 库。主要.hs:
我可以用 ghci 测试这个程序,将库和可以找到它的目录传递给它:ghci /usr/local/lib/ -lMyLib
它工作得很好。
现在,独立地,我正在尝试开始使用堆栈,并且按照本指南,我能够构建几个非平凡的程序示例。
但是,我无法堆栈构建上面的 FFI Main.hs 程序,因为它抱怨缺少 C 库:
第一次尝试 :
me@user:~/myProject$ stack build
在第二次尝试之前,我确实添加了以下内容:
- 添加extra-lib-dirs: [/usr/local/lib]
到 stack.yaml 文件中。
- 添加extra-include-dirs: [/usr/local/lib]
到 stack.yaml 文件中(尽管可能不需要)。
-extra-libraries: lMyLib
在项目的 cabal 文件中添加到可执行文件或库标签下(我也尝试extra-libraries: libMyLib.so
过相同的结果)。
第二次尝试:
me@user:~/myProject$ stack build
所以现在它知道它需要哪个 C 库,因为它抱怨它,同时添加了正确的额外库目录(参见错误消息的最后)。我不确定评论(you may need the "-dev" version)
是否相关。
我的问题:我被困在这里。我还应该对 yaml 或 cabal 文件或其他地方做些什么,以便stack build
找到 C 库?
haskell - Haskell Stack 和 C 库 II
这是这篇文章的后续内容(不幸的是)。
我正在尝试stack build
一个项目,其中对位于(包含在) 中Main.hs
的专有 C 库有一些 FFI 调用。libMyLib.so
/usr/local/lib
LD_LIBRARY_PATH
当使用命令在 GHCi(外部stack
)中运行时ghci /usr/local/lib/ -lMyLib
,一切正常。
但是,在运行时stack build
,我遇到了与链接相关的问题:
这是相关 cabal 文件的额外内容:
运行stack exec env
显示LD_LIBRARY_PATH
指向正确的目录 ( LD_LIBRARY_PATH=/usr/local/lib
),只是为了确保我已将此目录添加到.yaml
文件 ( extra-lib-dirs: [/usr/local/lib]
)。
我玩过各种 GCC 编译选项,例如,通过文件参数或直接通过( )-pthread
代替-threaded
...,但无济于事。.cabal
stack build
stack build --ghc-options="-foo..."
我的问题:我还应该去哪里看?我应该运行什么样的测试来找出问题的根源(明显的链接问题)?
== 编辑 ==
安装了同一个 C 库的两个版本,一个依赖于另一个 C 库,比如libOther.so
. 当我终于意识到这一点时,我将它添加到 cabal 文件中并且效果很好:
haskell - Yesod的`stack build`问题
我正在尝试在一个干净的(新)VPS 服务器上堆叠构建一个新的基于 Yesod 的项目,该服务器在 Ubuntu Trusty x86_64 上运行。
如果它对问题很重要,这里是内存信息:
这是堆栈项目的 cabal 文件的一部分:
除了 yesod 之外,依赖项中还有其他包,当我stack build
没有在依赖项中添加 yesod 时,各种包正常下载并且一切看起来都很好 - 当然构建无法完成,因为还需要 yesod。
但是,当我添加 yesod 依赖项列表时,我收到一条Progress: 0/96Killed
错误消息。依赖项列表中是否存在其他包似乎并不重要。这是一个转储stack build --verbose
:
me@user:~/proj-web01$ stack build --verbose
我在这些输出消息中看不到任何东西,它提供了最后发生的事情的线索Progress: 0/96Killed
,没有警告,什么都没有……我在网上搜索了类似的问题,但找不到任何问题,我被困在那里。
我的问题:我应该寻找什么,我还应该在哪里看?有没有我应该做的测试让我知道问题可能来自哪里?谢谢。
== 编辑 ==
事实上,这个问题更容易重现:
安装其他较小的软件包就可以了(例如stack install csv
...)
按照 Sibi 的建议,我尝试增加 VPS 上的交换空间,但显然这在用户级别是不允许的(U&L 讨论)。围绕这个限制有一些技巧,但是在尝试安装yesod时似乎并没有改变任何东西。
haskell - 目录结构 Yesod 和 Stack
我有一个简单的 Yesod 项目,其通常的目录结构如下:
我正在尝试使用堆栈构建这个项目,通常Main.hs
程序位于app
目录下。
我试图将所有 Yesod 结构放在app
目录下(app
目录在.
上面)。
该项目的 cabal 文件如下所示:
现在,当我尝试时stack build
,我收到以下错误消息:
widgetFileNoReload
不知道在哪里可以找到app/templates
目录中的“默认布局”文件。
我的问题:我应该以不同的方式编写 cabal 文件,还是应该将模板、处理程序...文件夹放在其他地方(例如在 src 中)?使用堆栈时最自然的目录结构是什么?或者如何设置堆栈参数(cabal 和 yaml 文件)以适应通常的 Yesod 目录结构?
macos - ghc-mod 尝试为堆栈项目执行 cabal(即使不存在 dist/ 目录)
我正在使用在 OSX 上使用堆栈安装的 ghc-mod:
但是,当我尝试在 spacemacs 中或从命令行使用没有dist/dir 的堆栈项目时,它会一直尝试执行 cabal。
为什么是这样?
注意我之前从https://ghcformacosx.github.io/安装了 OSX ghc/cabal 。但是,我已经删除了 cabal 所在的 ~/Library/Haskell 目录以及它从 Applicaitons 安装的 app 目录。此外,这里的 ghc-mod 是使用 stack 和 stack 的 ghc 构建的。
haskell - GHC Haskell 工具路径
用项目搭建开发环境需要哪些路径GHC
?或者更具体地说,stack
托管GHC
环境?
我对GHC
, cabal
,stack
和需要什么ghc-mod
感到困惑hdevtools
。
我知道这stack path
会打印出托管路径,但我认为它以不同的键名打印它们,而不是我需要的环境变量或命令行参数GHC
和其他工具,所以它对我没有直接用处。
例如,在处理典型Java
项目时,我只需要设置PATH
,JAVA_HOME
我需要的所有工具都可以在这个环境中工作(因为Java
我通常不需要maven
为每个项目单独存储库,因为链接方式不同)。
理想情况下,我想打电话stack $SHELL
并在环境中配置所有内容(stack ghci
之后不会)。
windows - 如何更改 Windows 上 stack.yaml 的默认位置?
我正在尝试在 Windows 机器上安装 Stack for Haskell。对于安装,我使用了 64 位安装程序。安装程序完成后,我想安装堆栈依赖项
在命令行中。但是,我收到此错误:
如果我不得不猜测是因为堆栈的默认 stack.yaml 配置文件存储在 AppData 中,其中文件夹名称包含我的用户名。而且我猜这个文件夹名称中的特殊字符不受支持(因为实际用户和用户文件夹称为“René”)。
我也已经尝试将 Stack 安装在默认位置(也在 AppData 内)和用户文件夹之外的不同文件夹 - 仍然是同样的问题。
是否有可能更改堆栈从中获取其默认 stack.yaml 文件的位置或针对此问题的任何其他已知解决方法?
haskell - haskell-stack 获取 TlsExceptionHostPort 错误
通过 vagrant 在 Debian 8.2 中运行 stack/ghc 有一段时间了。今天早上:
即使我删除,同样的错误仍然存在~/.stack
。我搞砸了什么吗?
haskell - 尝试使用 GHCJS 编译器创建新 Stack 项目时出错
我正在尝试按照http://docs.haskellstack.org/en/stable/ghcjs.html中的说明在 NixOS 上使用 GHCJS 作为编译器建立一个新的 Stack 项目
我在我的 stack.yaml 文件中包含以下代码行(全部在一行,因为制表符空格似乎会产生问题):
我在运行时检索到以下错误消息stack setup
此外,我尝试删除该setup-info
字段,因为 Stack 抱怨它,让我的stack.yaml
文件如下:
它使用堆栈设置命令生成此输出:
有谁知道为什么会发生这种情况?