在下面的例子中没有找到阴谋集团,问题是,如何纠正这个例子,从而找到阴谋集团。
the nix pill 8.1
nix-repl
,键入
:l <nixpkgs>
然后
"${cabal-install}"
给出了cabal安装所在存储的路径,其中包含子目录,其中bin包含cabal可执行文件。即。
> /nix/store/pathtocabal-install/bin/cabal -v
cabal-install version 2.0.0.0
compiled using version 2.0.0.2 of the Cabal library
在下面,您应该可以找到与“make c”示例相对应的文件。
有了他们
> nix-build hello.nix
不起作用。它首先告诉我们构建“这些派生”,然后说
hello_builder.sh: line 2: cabal: command not found
我怀疑$cabal install/bin是一种错误的方式来指代cabal,但在
找到其存储路径。
你好,建筑商。sh甚至比c示例中的还要短。请注意,安装部分仍然缺失(首先应让建造商找到阴谋集团)。
export PATH="$coreutils/bin:$ghc/bin:$cabal-install/bin:$binutils/bin"
cabal build hello
你好nix-可能不需要binutils。
with (import <nixpkgs> {});
derivation {
name = "hello";
builder = "${bash}/bin/bash";
args = [ ./hello_builder.sh ];
inherit binutils coreutils ghc cabal-install;
src = ./hello.cabal;
system = builtins.currentSystem;
}
你好阴谋集团-in
nix-shell
有了阴谋集团安装和ghc,这是可行的。
name: hello
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.24
executable hello
main-is: hello.hs
default-language: Haskell2010
build-depends: base >=4.9 && <4.10
module Main where
main :: IO ()
main = putStrLn "Hello there!"
延迟添加:
通过添加
echo $PATH
对于构建者来说,我们可以看到路径不正确。它是
/nix/store/...coreutils-8.28/bin:/nix/store...ghc-8.0.2/bin:-install/bin:/nix/store/...binutils-2.28.1/bin
$cabal
转换为空字符串,并且它不是指
$cabal-install
. 因此,cabal可执行文件没有正确的存储路径。
这部分回答了问题的原因部分以及如何纠正它。开放的部分是为什么,为什么
inherit cabal-install
不能在此处使用。