如何使用固定修订版修复使用 Nix 构建 Docker 映像的错误

如何使用固定修订版修复使用 Nix 构建 Docker 映像的错误

我正在尝试使用 Nix 在固定版本上构建 Docker 映像。该文件如下所示即可工作:

{ pkgs ? import <nixpkgs> { }
}:

pkgs.dockerTools.buildImage {
  ...

但当它看起来像这样时就会失败:

{ pkgs ? (import (builtins.fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/44fc3cb097324c9f9f93313dd3f103e78d722968.tar.gz"; sha256 = "0hxzigajiqjwxbk9bcbvgxq28drq1k2hgmzihs0c441i1wsbqchb";  }) {})
}:

pkgs.dockerTools.buildImage {
  ...

错误是:

error: 'buildImage' at /nix/store/pyq9xfm1ikhd70dfzbg6fywyqgcvly1l-source/pkgs/build-support/docker/default.nix:491:5 called with unexpected argument 'copyToRoot'

关于我做错了什么有什么建议吗?

答案1

所以copyToRoot过去被称为contents几个月前在这次提交中https://github.com/NixOS/nixpkgs/commit/e007eb480c6041fd98b8f9e53bdac2ba82e4648c并且您的提交指向这个旧版本(我猜它属于与 master 不同的分支)。

在最近对 master 的提交中,例如 44fc3cb097324c9f9f93313dd3f103e78d72296 ,您不应该遇到此问题,因为您可以检查https://github.com/NixOS/nixpkgs/blame/44fc3cb097324c9f9f93313dd3f103e78d722968/pkgs/build-support/docker/default.nix#L503

相关内容