我通过Nix安装了GHC:
$ nix-env -i ghc那么,我安装了伊索软件包:
$ nix-env -f "<nixpkgs>" -iA haskellPackages.aeson并将GHC指向Nix包文件夹:
$ export GHC_PACKAGE_PATH=~/.nix-profile/lib/ghc-8.0.1/package.conf.d/这似乎是可行的:
$ ghc-pkg list
/Users/zoul/.nix-profile/lib/ghc-8.0.1/package.conf.d
Cabal-1.24.0.0
array-0.5.1.1
…但在上面的包裹列表中缺少了伊索包裹,所以无法装载。尽管那里显然有一些东西:
$ ls /Users/zoul/.nix-profile/lib/ghc-8.0.1/ | grep ^ae
aeson-0.11.2.1我做错了什么?
发布于 2017-01-19 14:31:07
您不能以这种方式在Nix中安装Haskell库,因为您使用的ghc编译器不会搜索用户的配置文件以获得库。因此,在那里安装一个库没有任何效果。本主题将在Nixpkgs用户手册中详细解释。我引用了"8.5.2.2.如何用库安装编译器“中的相关内容:
GHC希望在自己的lib目录中找到所有已安装的库。这种方法在传统的Unix系统上工作得很好,但是它不适用于Nix,因为GHC的存储路径在构建之后是不变的。我们不能在那个位置安装额外的库。因此,我们的GHC拷贝除了它们自己的核心库之外,不知道任何包,比如base、容器、Cabal等等。 但是,我们可以使用一个名为ghcWithPackages的特殊构建函数向GHC注册其他库。该函数需要一个参数:从Haskell包的属性集映射到包列表的函数,它确定GHC的特定版本已知的库。例如,Nix表达式ghcWithPackages (pkgs: pkgs.mtl)生成一个GHC的副本,其中除了其正常的核心包外,还注册了mtl库: $ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: pkgs.mtl)“ 此函数允许用户通过覆盖来定义自己的开发环境。将以下代码段添加到~/..nixpkgs/config.nix后, { packageOverrides = super: let self = super.pkgs;in { myHaskellEnv =self.haskell.Packages.ghc 7102.ghcWithPackages (haskellPackages: with haskellPackages;#库箭头异步cgi规范# tools cabal-install haskintex );};} 用nix-env -f "“-iA myHaskellEnv安装编译器是可能的。
https://stackoverflow.com/questions/40846965
复制相似问题