nixpkgs中的haskell包在哪里去了?

时间:2015-07-12 09:58:45

标签: haskell ghc cabal nix

我曾使用nix-env -qaP <haskell-package-name>来搜索haskell包。但是自从我不久前更新了我的nix频道以来,所有的haskell软件包都没有了。

具体来说: qs @BF:〜$ nix-channel --list nixpkgs https://nixos.org/channels/nixpkgs-unstable

qs @BF:〜$ nix-env --version nix-env(Nix)1.9

qs @BF:〜$ uname -a Linux BF 3.13.0-35-generic#62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

我想知道是否需要添加其他可能包含haskell软件包的频道。和Haskell NG有什么关系吗?

感谢。

2 个答案:

答案 0 :(得分:7)

我记得在Peter Simons的邮件列表中看到了(虽然我现在找不到确切的链接),通过nix-env从顶级命名空间通过nix-env禁用了搜索,因为它们非常大而且是nix- env已经很慢了。相反,所有haskell包都位于名为haskellPackages的单独命名空间中。有关更多信息,请参阅here。要安装像text这样的Haskell软件包,可以使用以下命令:

nix-env -i -A nixpkgs.haskellPackages.text

要查找包名称,请使用以下命令:

nix-env -f "<nixpkgs>" -qaP -A haskellPackages | grep text

答案 1 :(得分:6)

引自http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure

  

Nixpkgs为所有注册的Haskell软件包分发构建指令   Hackage,但奇怪的是正常的Nix包   除了默认版本之外,查找似乎没有发现它们中的任何一个   ghc,cabal-install和stack:

$ nix-env -i alex
error: selector ‘alex’ matches no derivations
$ nix-env -qa ghc
ghc-7.10.2
     

Haskell程序包集未在顶级名称空间中注册,因为它   是巨大的。如果这些命令都可以看到所有Haskell包,那么   基于名称的搜索/安装操作将比现在慢得多。我们   通过将所有与Haskell相关的包保存在单独的属性中来避免这种情况   设置名为haskellPackages,以下命令将列出:

$ nix-env -f "<nixpkgs>" -qaP -A haskellPackages
haskellPackages.a50         a50-0.5
haskellPackages.abacate     haskell-abacate-0.0.0.0
haskellPackages.abcBridge   haskell-abcBridge-0.12
haskellPackages.afv         afv-0.1.1
haskellPackages.alex        alex-3.1.4
haskellPackages.Allure      Allure-0.4.101.1
haskellPackages.alms        alms-0.6.7
[... some 8000 entries omitted  ...]
     

要将任何这些软件包安装到您的个人资料中,请按照他们的说明进行操作   属性路径(第一列):

$ nix-env -f "<nixpkgs>" -iA haskellPackages.Allure ...
     

任何Haskell包的属性路径都对应于其名称   Hackage上的特定包:包cabal-install具有该属性   haskellPackages.cabal-install,等等。