【问题标题】:How to find nixpkgs revision where macos/darwin binary cache is built?如何找到构建 macos/darwin 二进制缓存的 nixpkgs 修订版?
【发布时间】:2019-02-24 13:55:42
【问题描述】:

我想将 nixpkgs 固定到一个相当新的版本,比如 Haskell LTS-12.9 或其他什么。我想为 MacOS (Darwin) 构建使用 nix-build。

问题是大多数 Haskell 包没有二进制缓存,并且构建需要很长时间才能完成(在 MacOS 上)。

我如何才能找到“最佳”nixpkgs 版本,它足够新,可以包含我需要的软件版本,但又足够老,二进制缓存可以用于 Linux 和 MacOS?

【问题讨论】:

  • nixpkgs-unstable 分支通常在 master 后面一点(除非有失败的测试阻碍了事情)。这还不够新吗?

标签: macos haskell devops nix nixos


【解决方案1】:

你可以找到缓存版本的 nixpkgs right here on the HowOldIs app.

您可能希望使用nixpkgs-18.09-darwinnixpkgs-unstable 的修订版。


然后你可以像这样获取 nixpkgs

builtins.fetchGit {
  name = "nixpkgs";
  url = "https://github.com/nixos/nixpkgs.git";
  rev = "6ec64973bc3a48b0c54d11c782e8b88b550a8eab";
  ref = "release-18.09";
})

当修订不在默认分支下时,ref 属性是必需的 - 通常是 master

注释in the Nix manual 描述如下:

注意:最好总是指定修订所属的分支。如果未指定分支,则如果默认分支更改,则 fetcher 可能会失败。此外,尝试从非默认分支提交并看到获取失败可能会令人困惑。如果指定了分支,则故障更加明显。

我想这种行为是受到 Git 协议中的一种解决方法的启发,如果我没记错的话,您只能指定用于获取的 refs,但不能指定任意提交。

【讨论】:

  • 我不确定我是否正确。现在 HowOldIs 应用程序将 6ec64973bc3a48b0c54d11c782e8b88b550a8eab 显示为最新的 nixpkgs-18.09-darwin 提交。我用它来导入包: import (builtins.fetchGit { name = "lts-12.9"; url = github.com/nixos/nixpkgs; rev = "6ec64973bc3a48b0c54d11c782e8b88b550a8eab"; }) {}; nix-build 说致命:不是树对象错误:程序 'git' 失败,退出代码为 128
  • 我认为你做对了,Nix 做错了。 Relevant issue
猜你喜欢
  • 1970-01-01
  • 2021-07-31
  • 2020-12-22
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2019-02-15
  • 1970-01-01
相关资源
最近更新 更多