我曾使用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有什么关系吗?
感谢。
答案 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
,等等。