Tor*_*nny 4 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有什么关系吗?
谢谢.
我记得在Peter Simons的邮件列表中看到了(尽管我现在找不到确切的链接),因为它们非常大而且nix-env已经很大,因此通过nix-env禁用了来自顶层命名空间的Haskell包的搜索很慢.相反,所有haskell包都位于一个名为的单独命名空间中haskellPackages.有关更多信息,请参阅此处.要安装类似的Haskell软件包text,可以使用以下命令:
nix-env -i -A nixpkgs.haskellPackages.text
Run Code Online (Sandbox Code Playgroud)
要查找包名称,请使用以下命令:
nix-env -f "<nixpkgs>" -qaP -A haskellPackages | grep text
Run Code Online (Sandbox Code Playgroud)
引自http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure:
Nixpkgs为在Hackage上注册的所有Haskell软件包分发构建指令 ,但奇怪的是,除了ghc,cabal-install和stack的默认版本之外,正常的Nix软件包查找似乎没有发现它们中的任何一个:
Run Code Online (Sandbox Code Playgroud)$ nix-env -i alex error: selector ‘alex’ matches no derivations $ nix-env -qa ghc ghc-7.10.2Haskell包集未在顶级命名空间中注册,因为它很大.如果这些命令都可以看到所有Haskell软件包,那么基于名称的搜索/安装操作将比现在慢得多.我们通过将所有与Haskell相关的包保存在一个名为的单独属性集中来避免这种情况,
haskellPackages以下命令将列出:Run Code Online (Sandbox Code Playgroud)$ 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 ...]要将任何这些软件包安装到您的配置文件中,请通过其属性路径(第一列)引用它们:
Run Code Online (Sandbox Code Playgroud)$ nix-env -f "<nixpkgs>" -iA haskellPackages.Allure ...任何Haskell包的属性路径对应于Hackage上特定包的名称:包
cabal-install具有属性haskellPackages.cabal-install,依此类推.