nix - 如何在商店中找到派生路径,从编译后的包路径开始?

标签 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

现在想从编译好的包路径中找出store中的派生路径。

我试过这个命令
# 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  -

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

最佳答案

您的 nix-store调用看起来没问题。

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

关于nix - 如何在商店中找到派生路径,从编译后的包路径开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622933/

相关文章:

c - 将 linenoise 库添加到 nixpkgs

haskell - stack --nix build 提示 ghc 版本不匹配

nix - 如何使用 Nix 搭建开发环境?

nix - 如何从源代码构建 Nix 包?

haskell - 使用 Nix 的 callCabal2nix 时如何启用 Haskell 分析

nix - buildEnv内置函数如何工作?

go - 在 nix 中使用 buildGoPackage 时出现“没有这样的文件或目录”错误

nix - 如何撤消 `nix-channel --update`

python - 如何使用 python 包 Streamlit 创建 nix 项目

docker - 如何用 nix 构建一个 docker 容器?