目前在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中重建软件包的最简单方法是什么?
答案 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。它允许您轻松指定每个项目的版本以及管理它们的安装。