3 个不稳定版本
0.2.1 | 2021年9月10日 |
---|---|
0.2.0 | 2020年2月22日 |
0.1.0 | 2020年2月21日 |
#331 in GUI
275KB
2K SLoC
nix-query-tree-viewer
nix-query-tree-viewer
是一种方便的方式来可视化 Nix 存储中给定路径的依赖项的输出。
这是与 nix-store --query --tree <PATH>
输出的相同的树形信息,但 nix-query-tree-viewer
使其更容易理解和交互。
使用方法
您可以通过传递 Nix 存储中的路径来运行 nix-query-tree-viewer
$ nix-query-tree-viewer /nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
安装
nix-query-tree-viewer
可以使用 Nix 或 Cargo 安装。
使用 nix-env
安装
$ nix-env -f channel:nixos-unstable -iA nix-query-tree-viewer
如果您只想使用 nix-query-tree-viewer
,这将非常方便。
使用 cargo
安装
$ cargo install nix-query-tree-viewer
您需要确保环境中可用的 GTK 库才能使此功能正常工作。
为什么使用 nix-query-tree-viewer
?
命令 nix-store --query --tree
可用于以树形格式查看 Nix 存储中路径的依赖项
$ nix-store --query --tree /nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
/nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
+---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27
| +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
+---/nix/store/cinw572b38aln37glr0zb8lxwrgaffl4-bash-4.4-p23
| +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
| +---/nix/store/cinw572b38aln37glr0zb8lxwrgaffl4-bash-4.4-p23 [...]
+---/nix/store/hlnxw4k6931bachvg5sv0cyaissimswb-gcc-7.4.0-lib
| +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
| +---/nix/store/hlnxw4k6931bachvg5sv0cyaissimswb-gcc-7.4.0-lib [...]
+---/nix/store/f5wl80zkrd3fc1jxsljmnpn7y02lz6v1-glibc-2.27-bin
| +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
...
这对于简单的派生来说没问题,但对于具有深层依赖树的路径来说会变得非常复杂。
nix-query-tree-viewer
通过默认折叠树的分支来帮助解决这个问题。点击分支可以让你深入到有趣的分支。
例如,下面是上述相同的图片,但有两个分支被打开
查找派生路径
您可以使用 nix-build
和 nix-instantiate
来轻松查找派生路径。
例如,如果您想找到 Nix 存储中 gcc
的路径,您可以使用 nix-build
$ nix-build '<nixpkgs>' -A gcc --no-out-link
...
/nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
如果您想找到 gcc
的 .drv
文件的路径,您可以使用 nix-instantiate
$ nix-instantiate '<nixpkgs>' -A gcc
...
/nix/store/dyxdjxyszmlz29mb0jr9qkncj5l41dai-gcc-wrapper-7.4.0.drv
您应该可以将 /nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
和 /nix/store/dyxdjxyszmlz29mb0jr9qkncj5l41dai-gcc-wrapper-7.4.0.drv
传递给 nix-query-tree-viewer
。
通常情况下,将 nix-build
的输出传递给 nix-query-tree-viewer
可以让您查看推导式的运行时依赖,而将 nix-instantiate
的输出传递过去将让您看到推导式的构建时依赖。
贡献
请随意为任何错误/问题/建议/改进打开一个问题或PR。
开发
您可以通过运行 nix-shell
来进入开发环境。
此 nix-shell
提供了构建所需的系统库,以及 rustup
。
rustup
可以用来获取最新的 Rust 编译器和相关工具
$ rustup toolchain install 1.55.0
现在您应该拥有 cargo
和 rustc
,可以用它们来构建项目
$ cargo build
依赖项
~17MB
~400K SLoC