簡體   English   中英

如何使用 Nix 包管理器通過 Observer 安裝 Erlang 或 Elixir?

[英]How to install Erlang or Elixir with Observer using the Nix package manager?

每次我安裝 Erlang 時,我最終都沒有 Observer。 帶有 Xmonad在雲中運行Debian 9Ubuntu 筆記本電腦上使用以下命令,似乎它們都導致安裝了相同的軟件包:

  • nix-env -iA pkgs.beam.packages.erlangR22
  • nix-env -iA nixpkgs.beam.interpreters.erlang
  • nix-env -iA nixpkgs.beam.interpreters.erlangR22_odbc_javac

Nixpkgs 手冊 15.2。 BEAM Languages (Erlang, Elixir & LFE) 部分(版本 19.09.1484.84586a4514d)根本沒有提到觀察者。 DianaOlympos在最近的更新中確實提到了它,盡管我嘗試了所有這些軟件包,但並不高興:

許多在beam.interpreters可用的 Erlang/OTP 發行beam.interpreters都有啟用 ODBC 和/或 Java 或不啟用 wx(不支持觀察者)的版本。 例如,有beam.interpreters.erlangR22_odbc_javac對應於beam.interpreters.erlangR22beam.interpreters.erlangR22_nox對應於beam.interpreters.erlangR22

巴蒂爾Sveller指出來的是, wxGTK包需要進行設置使用propagatedBuildInputs ,但不知道該怎么做。 (只是簡單地安裝wxGTK然后 Erlang 當然不起作用;嘗試它是天真的。還發現Nix Pills 的第 20 章正是關於這個主題。)

這也是問題“如何在非 NixOS 系統上安裝 Erlang/Elixir? ”的后續問題,但當時我沒有意識到 Observer 丟失了......


更新:顯然, 它可以在某處開箱即用 (可能在 NixOS 上。)

我對 erlang 進行了覆蓋,以便啟用 wx 支持:

{ pkgs ? import <nixpkgs> {} }:

with pkgs;

let
  inherit (lib) optionals;

  erlang_wx = erlangR21.override {
    wxSupport = true;
  };

  elixir = (beam.packagesWith erlang_wx).elixir.override {
    version = "1.9.2";
    rev = "ffe7a577cc80f37381dc289c820842d346002364";
    sha256 = "19yn6nx6r627f5zbyc7ckgr96d6b45sgwx95n2gp2imqwqvpj8wc";
  };
in

mkShell {
  buildInputs = [ elixir git ]

    # For file_system on Linux.
    ++ optionals stdenv.isLinux [ inotify-tools wxGTK ]

    # For file_system on macOS.
    ++ optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
      # For file_system on macOS.
      CoreFoundation
      CoreServices
      wxmac
    ]);
}

保存它(例如shell.nix ),然后運行它:

$ nix-shell shell.nix

# or, if you are in the same directory:
$ nix-shell

在我的機器上工作!


注: wxmacbuildInputs是特定於MacOS的(和wxGTK到Linux)。 要為您的操作系統找到合適的軟件包, 這里有可用的wx軟件包

承認我是個白痴有點慚愧,但觀察者一直在那里( net_adm )......

出於某種原因,它不會在erl shell 上自動完成,但是一旦observer:start(). 輸入並執行后,它會識別模塊,並在按 Tab 鍵時提供可用功能列表。

我可能搞砸了iexerlobserver.start().和其他組合)之間的轉換,並且我認為產生的錯誤消息(連同沒有自動完成)意味着模塊丟失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM