更新 nix 包中的依赖项
Updating the dependencies in a nix package
目前正在使用 Mac OS X 上的 nix 频道提供的 Elixir 版本。包是用 Erlang 18 构建的:
$ iex --version
Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
IEx 1.4.2
我想更新包以使用 Erlang 19。使用更新的依赖项在 nix 中重建包的最直接方法是什么?
我能够通过将以下包覆盖添加到 ~/.nixpkgs/config.nix
来找到解决方案:
{
packageOverrides = pkgs: rec {
elixir = pkgs.elixir.override {
erlang = pkgs.erlangR19_odbc_javac;
};
rebar = pkgs.rebar.override {
erlang = pkgs.erlangR19_odbc_javac;
};
};
}
覆盖 elixir 包不足以让构建工作,因为构建工具 rebar 也是使用 Erlang 18 构建的。一旦指定,我 运行 nix-env -i elixir
和源代码这两个包都是使用 Erlang 19 下载和构建的。
一个警告:即使对 config.nix
进行了这些更改,nix 仍坚持下载 Erlang 18 包。然而,这实际上并没有在构建中使用,而是在 运行 nix-collect-garbage -d
上被删除了。钢筋和长生不老药衍生物都没有引用包裹,所以原因仍然是个谜。
感谢@zimm-i48 提供对适当的 nix 文档的参考。 Luca Bruno 关于 nix 的系列博文也很有用:
http://lethalman.blogspot.it/2014/07/nix-pill-7-working-derivation.html
目前正在使用 Mac OS X 上的 nix 频道提供的 Elixir 版本。包是用 Erlang 18 构建的:
$ iex --version
Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
IEx 1.4.2
我想更新包以使用 Erlang 19。使用更新的依赖项在 nix 中重建包的最直接方法是什么?
我能够通过将以下包覆盖添加到 ~/.nixpkgs/config.nix
来找到解决方案:
{
packageOverrides = pkgs: rec {
elixir = pkgs.elixir.override {
erlang = pkgs.erlangR19_odbc_javac;
};
rebar = pkgs.rebar.override {
erlang = pkgs.erlangR19_odbc_javac;
};
};
}
覆盖 elixir 包不足以让构建工作,因为构建工具 rebar 也是使用 Erlang 18 构建的。一旦指定,我 运行 nix-env -i elixir
和源代码这两个包都是使用 Erlang 19 下载和构建的。
一个警告:即使对 config.nix
进行了这些更改,nix 仍坚持下载 Erlang 18 包。然而,这实际上并没有在构建中使用,而是在 运行 nix-collect-garbage -d
上被删除了。钢筋和长生不老药衍生物都没有引用包裹,所以原因仍然是个谜。
感谢@zimm-i48 提供对适当的 nix 文档的参考。 Luca Bruno 关于 nix 的系列博文也很有用:
http://lethalman.blogspot.it/2014/07/nix-pill-7-working-derivation.html