如何从已编译的程序包路径开始在商店中找到派生路径?

时间:2019-06-16 22:02:21

标签: nix

我正在使用Nix 2.2.1,尤其是this NixOS Docker映像。

我这样安装Vim:

# nix-env --install --file '<nixpkgs>' vim

Vim可执行文件的存储路径为

# readlink -f $(which vim)
/nix/store/8ayymgnlv77p0h8skf294323maabwq91-vim-8.1.0675/bin/vim

现在,我想从编译的包路径中找到商店中的派生路径。

我尝试了此命令

# nix-store --query --deriver $(readlink -f $(which vim))
/nix/store/q5zqdr193d8k5w91lb9wqr1wk3418zix-vim-8.1.0675.drv

这确实返回了商店中的路径,但令我惊讶的是,该路径不存在!存储区中有vim的派生类,但与命令的输出不匹配。

我也尝试过:

# nix-env --query --drv-path --file '<nixpkgs>' vim

但是它没有给出有用的结果:

vim-8.1.0675  -

我使用了错误的命令,还是一个错误?

1 个答案:

答案 0 :(得分:1)

您的nix-store调用看起来不错。

除非在keep-derivations = truenix.extraOptions in NixOS中设置nix.conf,否则派生文件可能会被垃圾收集。这可以解释情况。