2015-07-12 77 views
1

我曾经使用nix-env -qaP <haskell-package-name>来搜索haskell软件包。但是自从我更新我的nix频道之前,所有的haskell软件包都没有了。nixpkgs中的haskell软件包在哪里?

具体而言: 适量@ BF:〜$尼克斯沟道--list nixpkgs https://nixos.org/channels/nixpkgs-unstable

适量@ BF:〜$尼克斯-ENV --version 尼克斯-ENV(尼克斯)1.9

QS @ BF:〜$ UNAME -a Linux的BF 3.13.0-35泛型#62,Ubuntu的SMP周五8月15日1点58分42秒UTC 2014 x86_64的x86_64的x86_64的GNU/Linux的

我不知道如果我需要添加一些可能包含haskell包的其他频道。与Haskell NG有什么关系?

谢谢。

回答

4

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

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

要找到一个包名,使用这个命令:

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

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

Nixpkgs分配建立在 Hackage上注册的所有Haskell包的说明,但奇怪的是正常的Nix包 查找d on't似乎可以发现其中任何一个,除了 GHC的默认版本,小集团安装和堆栈:

$ 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等等。

相关问题