小编And*_*rew的帖子

本地 Nix 缓存被忽略,因为 NAR 信息文件缺少签名

[此处部分解决:https : //plus.google.com/110416349762686874861/posts/PVGHL1Tpeb9 ; 但不完全]

我想使用我的一台 NixOS 机器作为包的缓存,而不是在每次升级时从 Hydra 中提取所有内容。所以我尝试这样做:https : //nixos.org/nix/manual/#sec-sharing-packages。但

  • 当我尝试使用nix-serve -p <port>, nix-env --option extra-binary-caches http://<host>:<port>/(即使以root!运行时)只是忽略此缓存,说“NAR 信息文件”...“缺少签名”,并尝试切换到cache.nixos.org. 所以nix-serve没有按预期工作。这是否意味着文档不再真实,或者nix-serve已损坏?

  • 虽然nix-copy-closure --to <user>@<host>确实有效(如果<user>作为受信任的用户添加到 中nix.trustedUsers)。但是在每次升级时都这样做会非常不方便。顺便提一句。这里还有什么让我感到困惑的--from是应该如何使用?

我大致了解加密签名的工作原理,以及为什么使用它们对包(和存储库)进行签名。但

  • 在这些情况下,我根本不需要它:MITM 的风险无需担心。我只想定期且轻松地将少量 GiB 的二进制文件从一台机器复制到另一台机器。当然,我可以简单地通过 完全禁用验证nix.requireSignedBinaryCaches = false,但没有更彻底的方法吗?例如,如果我调用nix-envasroot或作为“受信任的用户”并将这个“额外”的二进制缓存注册为“受信任的二进制缓存”;这不意味着我知道我在做什么,并且不需要系统唠叨丢失的签名吗?(无需完全禁用检查)我还没有找到如何仅为某个“受信任的”来源/用户禁用验证,并且几乎怀疑它不存在(即错误)。

  • 为了遵守这种签名机制,我可能还可以尝试设置一个“成熟的”二进制缓存,方法是使用nix-store --generate-binary-cache-key、 thennix-push --dest <somewhere> --key-file <secret-1> --none <cherrypicked-paths>并在客户端上注册公钥。但这并不是我想要的:将档案存储在“服务器”上并nix-push明确设置路径。我只是希望nix-serve在交付前签署那些共享的包裹,以便接收方会很高兴,或者nix-env如果我绝对确定这个特定来源是值得信赖的,则不要抱怨缺少签名! …

nixos nix

7
推荐指数
1
解决办法
1840
查看次数

标签 统计

nix ×1

nixos ×1