微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nix 如何知道在安装软件包时使用哪个替代品?

如何解决Nix 如何知道在安装软件包时使用哪个替代品?

Cross-posted to NixOS Discourse

从频道安装或固定 Nixpkgs 时。

假设有一个像这样的 shell.nix

{ pkgs ? import <nixpkgs> {} }:

  pkgs.mkShell
    { buildInputs = [ pkgs.deno ]; }

然后简单地调用它:

$ nix-shell
[nix-shell:~]$ deno --version
deno 1.3.3
v8 8.6.334
typescript 4.0.2

然后使用固定版本的 Nixpkgs:

$ nix-shell \
  --arg pkgs 'import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/f4593ab.tar.gz") {}' \
  shell.nix

[nix-shell:~]$ deno --version
deno 1.8.3 (release,x86_64-unkNown-linux-gnu)
v8 9.0.257.3
typescript 4.2.2

是这样的吗?

  1. NixOS 组织的 (?) Hydra 构建农场定期构建二进制文件并在渠道中发布结果(基于 Nixpkgs 存储库中的分支)

  2. 二进制文件上传到二进制缓存(来自 Nix manual:“二进制文件已经构建并上传到 cache.nixos.org 上的二进制缓存”) >

  3. 一个进程开始安装包(nix-shellnix-env 等)时,Nix 表达式会在 Nixpkgs 中查找

  4. 一个派生被构建并放置在 Nix 商店中(?;重点是会有 a hash value that is compared against the binary cache

  5. 如果有替代品,则将其拉取,否则继续进行源部署。

不同的 deno 版本只是这些快照中包含的不同 Nix 表达式产生不同哈希值的结果,因此在每种情况下都下载了不同的替代品。 (在第一种情况下,它是在我的笔记本电脑上设置的 https://nixos.org/channels/nixos-20.09 频道的最新版本,而后者是从......任何频道中挑选的 - 不稳定? - 具有带有该哈希的二进制文件?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。