更新nix包中的依赖项

时间:2017-03-13 22:56:23

标签: erlang elixir nix

目前在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中重建软件包的最简单方法是什么?

2 个答案:

答案 0 :(得分:4)

我能够通过将以下包覆盖添加到for来获得解决方案:

~/.nixpkgs/config.nix

覆盖elixir包不足以使构建工作,因为构建工具钢筋也是使用Erlang构建的。一旦指定了,我运行了{ packageOverrides = pkgs: rec { elixir = pkgs.elixir.override { erlang = pkgs.erlangR19_odbc_javac; }; rebar = pkgs.rebar.override { erlang = pkgs.erlangR19_odbc_javac; }; }; } 并且下载了两个软件包的源代码,使用Erlang 19构建。

有一点需要注意:即使对nix-env -i elixir nix的这些更改仍坚持下载Erlang 18软件包。但是,这实际上并未在构建中使用,并且在运行config.nix时被删除。螺纹钢和长生不老药衍生物都没有参考包装,所以原因仍然是个谜。

感谢@ zimm-i48引用相应的nix文档。同样有用的是Luca Bruno在nix上发布的一系列博客文章:

http://lethalman.blogspot.it/2014/07/nix-pill-7-working-derivation.html

答案 1 :(得分:0)

您可以考虑使用工具版本管理器。例如,asdf通过插件支持erlang和elixir。它允许您轻松指定每个项目的版本以及管理它们的安装。