【问题标题】:Nix shell: How to list the installed Haskell package versionsNix shell:如何列出已安装的 Haskell 包版本
【发布时间】:2017-05-08 17:53:05
【问题描述】:

作为一个 非 nix'er 我安装了最新版本的 https://github.com/reflex-frp/reflex-platform。我认为在这个 nix-shell 中工作是一种很好的体验。

现在我想知道在这个 shell 中安装和使用了哪些版本的 Haskell 包。经过一番谷歌搜索后,我发现了一个 nix-env 命令,格式如下:

nix-env -f '<nixpkgs>' -qaPA haskellPackages|grep reflex-dom

这个命令给了我 reflex-dom 的版本 reflex-dom-0.3。但我从here 知道,在我的 nix shell 中,我使用了最新版本的 0.4 reflex-dom。所以我假设上面的命令只是列出了可用的 Hackage 包。

什么是正确的 nix-env -q 命令来仅获取已安装的 Haskell 包及其版本?。

(我使用了 --installed 选项,但是我没有得到任何回报)

【问题讨论】:

标签: haskell nix


【解决方案1】:

进入shell后可以尝试nix-store -q --references $out。但是,这将在输出中混合 haskell 和非 haskell 依赖项。

这是一个应用了过滤器的完整示例:

$ nix-store -q --references $out \ | while read p; do du -a $p | grep -q ghc && echo $p; done

【讨论】:

  • 从你的命令 nix-store -q --references $out 我得到 11 行的结果。一条非常有趣的线路是/nix/store/34h4mj588w6q0q18izpxrc4wc0wqbfl4-ghc-8.0.2-with-packages,另一条有趣的线路是/nix/store/knbj6a7b3ra8zawy1jmlvahmr8x7rxnd-ghcjs-0.2.0-with-packages。我的兴趣是了解with-packages 的背后究竟是什么。所有这些软件包及其版本是什么?
  • 尝试为 ghc-with-packages 行运行 nix-store -q --references
  • 是的,nix-store -q --references /nix/store/34h4mj588w6q0q18izpxrc4wc0wqbfl4-ghc-8.0.2-with-packages 命令会生成一个有趣的列表。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2015-06-29
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多