问题描述
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
是这样的吗?
-
NixOS 组织的 (?) Hydra 构建农场定期构建二进制文件并在渠道中发布结果(基于 Nixpkgs 存储库中的分支)
二进制文件上传到二进制缓存(来自 Nix manual:“二进制文件已经构建并上传到 cache.nixos.org 上的二进制缓存”) >
-
当一个进程开始安装包(
nix-shell
、nix-env
等)时,Nix 表达式会在 Nixpkgs 中查找 -
一个派生被构建并放置在 Nix 商店中(?;重点是会有 a hash value that is compared against the binary cache)
-
如果有替代品,则将其拉取,否则继续进行源部署。
不同的 deno 版本只是这些快照中包含的不同 Nix 表达式产生不同哈希值的结果,因此在每种情况下都下载了不同的替代品。 (在第一种情况下,它是在我的笔记本电脑上设置的 https://nixos.org/channels/nixos-20.09 频道的最新版本,而后者是从......任何频道中挑选的 - 不稳定? - 具有带有该哈希的二进制文件?)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)