代码之家  ›  专栏  ›  技术社区  ›  toraritte

在非NIXOS系统上用“nix”在Erlang > 19上安装灵丹妙药的标准方法是什么?

  •  3
  • toraritte  · 技术社区  · 8 年前

    请像向10岁的孩子解释一样,从nix包管理器安装在非nixos机器上开始。例如,我在Mac上,甚至没有 ~/.config 目录。

    我找到了以下(可能)相关资源,但我无法将这些资源组合在一起:


    最后,我用Erlang 21安装了最新的药剂,如下所示,但我确信这不是它应该做的。

    $ # Cloned the `nixpkgs` repo from github and started the repl
    $ # in the same the directory.
    $
    $ nix repl
    Welcome to Nix version 2.0.4. Type :? for help.
    
    nix-repl> :l nixpkgs
    Added 9182 variables.
    
    nix-repl> pkgs.beam.packages.erlangR21.elixir
    «derivation /nix/store/vcadn6d6wgk1yjlci458vy8jqv66wwdy-elixir-1.6.5.drv»
    
    nix-repl> :q
    
    $ nix-store --realise /nix/store/vcadn6d6wgk1yjlci458vy8jqv66wwdy-elixir-1.6.5.drv
    
    2 回复  |  直到 8 年前
        1
  •  4
  •   Robert Hensing Nguyen Hoang Hiep    8 年前

    你在正确的轨道上,没有必要重新开始。

    从安装包 nix repl 你可以使用 :i 命令。

    nix-repl> :i pkgs.beam.packages.erlangR21.elixir
    

    这将把软件包安装到 ~/.nix-profile 它会在哪里 $PATH ,所以你可以叫它。相当于跑步

    nix-env -iA nixpkgs.beam.packages.erlangR21.elixir
    

    nix-store -r (或同等地, nix-store --realise )被认为是非常低级的工具。它只能创建到包的符号链接,而这很少是您想要的。默认情况下,它甚至不创建垃圾收集根,因此如果垃圾收集,符号链接将被破坏。

    尽管 nix-env -iA 是安装软件的有效方法,您可以考虑 ~/.nix配置文件 全球状态,并为此而避免。在我看来 elixir 这更多的是与项目联系在一起,而不是与用户联系在一起。例如,您可能希望对某些项目使用不同的版本,并且与处理项目的其他人共享您的开发工具可能是有意义的。那是你可以用的 nix-shell 为了。这是一个 example of shell.nix.

        2
  •  5
  •   usoban    8 年前

    您可以创建一个专用的shell用于您的项目,并避免为当前用户全局/安装运行时。

    在Erlang /OTP 20上使用灵丹妙药的最小NIX壳的例子:

    的内容 default.nix 文件:

    with import <nixpkgs> {};
    
    stdenv.mkDerivation rec {
        name = "env";
        env = buildEnv { name = name; paths = buildInputs; };
        buildInputs = [
            beam.packages.erlangR20.elixir
            inotify-tools
        ];
    }
    

    然后在终端中,导航到 默认.nix 被保存,并调用 nix-shell 是的。你应该掉进一个壳里 iex mix 可用。