2017-03-13 70 views
2

目前使用在Mac OS X上的尼克斯通道將包裝使用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

卸載並安裝Erlang的一次。恐怕現在沒有捷徑了。 Erlang不是混合依賴項,但是它是你建立的一個層。 – PatNowak

+0

事實上,如果你使用brew,你必須更新Erlang'brew update && brew upgrade erlang && brew cleanup erlang' – jbernardo

+4

我相信這個問題被問及[nix軟件包管理器](https://nixos.org /尼克斯/)。與混合無關。 –

回答

3

我能夠通過將下面的包在解到達覆蓋到~/.nixpkgs/config.nix

{ 
    packageOverrides = pkgs: rec { 
    elixir = pkgs.elixir.override { 
     erlang = pkgs.erlangR19_odbc_javac; 
    }; 
    rebar = pkgs.rebar.override { 
     erlang = pkgs.erlangR19_odbc_javac; 
    }; 
    }; 
} 

重寫仙丹包不足以讓構建工作,爲構建工具鋼筋上還建使用二郎18.一旦指定了,我跑nix-env -i elixir和兩個包的源被下載和使用Erlang的19

一個警告內置:即使這些更改config.nix尼克斯上下載Erlang的18包堅持。但是,這並未在構建中實際使用,並在運行nix-collect-garbage -d時被刪除。螺紋鋼和靈藥衍生物都沒有引用這個軟件包,所以原因仍然是一個謎。

感謝@ zimm-i48,​​以便參考相應的nix文檔。也有用是盧卡布魯諾對尼克斯系列博客文章的:

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

0

你可能會考慮使用工具版本管理器。例如asdf通過插件支持erlang和elixir。它允許您輕鬆地爲每個項目指定一個版本並管理他們的安裝。