首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NixOS中构建Haskell示例时,“ghc:没有这样的文件或目录”错误

在NixOS中构建Haskell示例时,“ghc:没有这样的文件或目录”错误
EN

Stack Overflow用户
提问于 2019-03-13 00:04:36
回答 2查看 1.3K关注 0票数 2

A) I试图在NixOS (通道/nixos-18.03)上创建一个带有Stack,ii的项目i)。在遵循用户指南中的HelloWorld实例的同时,为了构建项目,我得到了错误ghc-cabal: No such file or directory

代码语言:javascript
复制
$ stack new helloworld new-template
$ cd helloworld
$ sudo stack build
...
Running /run/current-system/sw/bin/make install in directory /root/.stack/programs/x86_64-linux/ghc-8.6.4.temp/ghc-8.6.4/ exited with ExitFailure 2
...
utils/ghc-cabal/dist-install/build/tmp/ghc-cabal-bindist: line 3: /root/.stack/programs/x86_64-linux/ghc-8.6.4.temp/ghc-8.6.4/utils/ghc-cabal/dist-install/build/tmp/ghc-cabal: No such file or directory
make[1]: *** [ghc.mk:990: install_packages] Error 127
make: *** [Makefile:51: install] Error 2

Error: Error encountered while installing GHC with
         make install
         run in /root/.stack/programs/x86_64-linux/ghc-8.6.4.temp/ghc-8.6.4/

       The following directories may now contain files, but won't be used by stack:
         - /root/.stack/programs/x86_64-linux/ghc-8.6.4.temp/
         - /root/.stack/programs/x86_64-linux/ghc-8.6.4/

B)迭代,我构建了我的/etc/nixos/configuration.nix文件,如下所示。在结果系统中,实际上没有ghc-cabal二进制文件。有cabal,但没有ghc-cabal

代码语言:javascript
复制
  environment.systemPackages = with pkgs; [
    wget vim emacs
    pkgs.firefoxWrapper pkgs.chromium

    stack
    haskellPackages.ghc
    haskellPackages.cabal-install
    haskellPackages.cabal2nix
    haskellPackages.hdevtools

    tree gnumake which binutils gcc clang coreutils gnutar
    tmux silver-searcher gitAndTools.gitFull
  ];

C) --我还遵循了Stack的Nix集成部分中的步骤。但没有结果。

什么软件包安装ghc-cabalstackhaskellPackages.cabal-install之间是否有错配?我遗漏了什么?

编辑

我做了一些调查,发现了一些有用的资源。特别是,这篇文章指出,我的问题可能是由一个未解决的动态库引起的。

实际上,在查询加载的库以获取二进制文件时,我得到了下面的结果。

代码语言:javascript
复制
$ ldd ~/.stack/programs/x86_64-linux/ghc-8.6.4.temp/ghc-8.6.4/utils/ghc-cabal/dist-install/build/tmp/ghc-cabal
    linux-vdso.so.1 (0x00007fff0ab01000)
    libm.so.6 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib/libm.so.6 (0x00007fe82c07f000)
    libHSCabal-2.4.0.1-ghc8.6.4.so => not found
    libHSprocess-1.6.5.0-ghc8.6.4.so => not found
    libHSpretty-1.1.3.6-ghc8.6.4.so => not found
    libHSparsec-3.1.13.0-ghc8.6.4.so => not found
    libHStext-1.2.3.1-ghc8.6.4.so => not found
    libHSmtl-2.2.2-ghc8.6.4.so => not found
    libHStransformers-0.5.6.2-ghc8.6.4.so => not found
    libHSdirectory-1.3.3.0-ghc8.6.4.so => not found
    libHSunix-2.7.2.2-ghc8.6.4.so => not found
    libHStime-1.8.0.2-ghc8.6.4.so => not found
    libHSfilepath-1.4.2.1-ghc8.6.4.so => not found
    libHSbinary-0.8.6.0-ghc8.6.4.so => not found
    libHScontainers-0.6.0.1-ghc8.6.4.so => not found
    libHSbytestring-0.10.8.2-ghc8.6.4.so => not found
    libHSdeepseq-1.4.4.0-ghc8.6.4.so => not found
    libHSarray-0.5.3.0-ghc8.6.4.so => not found
    libHSbase-4.12.0.0-ghc8.6.4.so => not found
    libHSinteger-gmp-1.0.2.0-ghc8.6.4.so => not found
    libHSghc-prim-0.5.3-ghc8.6.4.so => not found
    libHSrts-ghc8.6.4.so => not found
    libffi.so.7 => not found
    librt.so.1 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib/librt.so.1 (0x00007fe82c06d000)
    libutil.so.1 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib/libutil.so.1 (0x00007fe82c068000)
    libdl.so.2 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib/libdl.so.2 (0x00007fe82c063000)
    libpthread.so.0 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib/libpthread.so.0 (0x00007fe82c042000)
    libgmp.so.10 => not found
    libc.so.6 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib/libc.so.6 (0x00007fe82be8a000)
    /lib64/ld-linux-x86-64.so.2 => /nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27/lib64/ld-linux-x86-64.so.2 (0x00007fe82c219000)

我尝试通过将haskellPackages.stdiohaskellPackages.stdf添加到configuration.nix中来解决缺少的库。但更多的上游错误源自于此(例如:我不能将伊索作为environment.systemPackages依赖项添加)。所以我还没有找到合适的组合。

代码语言:javascript
复制
CallStack (from HasCallStack):
  die', called at libraries/Cabal/Cabal/Distribution/Simple/Configure.hs:950:20 in Cabal-2.4.0.1:Distribution.Simple.Configure
  configureFinalizedPackage, called at libraries/Cabal/Cabal/Distribution/Simple/Configure.hs:460:12 in Cabal-2.4.0.1:Distribution.Simple.Configure
  configure, called at libraries/Cabal/Cabal/Distribution/Simple.hs:596:20 in Cabal-2.4.0.1:Distribution.Simple
  confHook, called at libraries/Cabal/Cabal/Distribution/Simple/UserHooks.hs:67:5 in Cabal-2.4.0.1:Distribution.Simple.UserHooks
  configureAction, called at libraries/Cabal/Cabal/Distribution/Simple.hs:178:19 in Cabal-2.4.0.1:Distribution.Simple
  defaultMainHelper, called at libraries/Cabal/Cabal/Distribution/Simple.hs:115:27 in Cabal-2.4.0.1:Distribution.Simple
  defaultMain, called at Setup.hs:2:8 in main:Main
Setup: Encountered missing dependencies:
aeson ==0.8.*, base ==4.7.*, binary ==0.7.*, text ==1.1.*
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-26 14:12:40

因此,我在基里尔·扎博斯基的帮助下在一个commercialhaskell/stack 线程中解决了这个问题。错误的原因(在stack newstack build中)是一个旧的堆栈版本。具体来说,我的本地用户有一个比根(1.9.3)更旧的堆栈(1.9.3)。

版本1.6.5使用Cabal-2.0,从那时起,Cabal (ex base-noprelude)引入了新的特性--使用领先逗号,是在2.2版的哈斯克尔/阴谋集团#4953中实现的。因此Stack无法使用新的格式特性解析阴谋文件。

详细信息见“commercialhaskell/stack Details 线程”。升级本地用户堆栈(nix-env --upgrade stack)解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2019-03-21 09:31:49

ghc -阴谋是ghc构建中的一个工件,包含在ghc二进制发行版中:

代码语言:javascript
复制
$ ls -l  ~/.stack/programs/x86_64-linux/ghc-tinfo6-8.6.3.tar.xz
-rw-rw-r--. 1 user group 182356948 Dec 25 15:11 ghc-tinfo6-8.6.3.tar.xz
$ tar tvf ~/.stack/programs/x86_64-linux/ghc-tinfo6-8.6.3.tar.xz | grep tmp/ghc-cabal
-rwxr-xr-x ghc/ghc      225936 2018-12-08 00:03 ghc-8.6.3/utils/ghc-cabal/dist-install/build/tmp/ghc-cabal
-rwxr-xr-x ghc/ghc         858 2018-12-08 00:03 ghc-8.6.3/utils/ghc-cabal/dist-install/build/tmp/ghc-cabal-bindist
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55132464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档