Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#44060 closed defect (invalid)

Erlang @ 17.0_1: epmd binary missing from the PATH environment

Reported by: conradwt (Conrad Taylor) Owned by: ci42
Priority: Normal Milestone:
Component: ports Version: 2.3.0
Keywords: Cc: jose.valim@…
Port: erlang

Description

Hi, epmd isn't being added to the PATH environment and not automatically started for the Erlang process. This issue appears to have started with R17.0_1 because I haven't seen this issue in prior releases.

Change History (7)

comment:1 Changed 10 years ago by conradwt (Conrad Taylor)

Shouldn't all the relevant binaries from /opt/local/lib/erlang/erts-6.0/bin or /opt/local/lib/erlang/bin be added to the PATH environment? After some investigation, it appears that the only missing binary is epmd and all the other binaries are referenced from /opt/local/lib/erlang/bin directory whereas epmd in this directory is sym-linked to /opt/local/lib/erlang/erts-6.0/bin.

Last edited 10 years ago by conradwt (Conrad Taylor) (previous) (diff)

comment:2 Changed 10 years ago by ci42

Cc: ciserlohn@… removed
Keywords: 17.0_1 removed
Owner: changed from macports-tickets@… to ciserlohn@…
Summary: Erlang binaries missing from the PATH environmentErlang @ 17.0_1: epmd binary missing from the PATH environment

comment:3 Changed 10 years ago by ci42

Resolution: invalid
Status: newclosed

Looking at the svn history it seems that epmd hasn't been in PATH since r30481 (Erlang R11B; 2007).

Epmd starts up automatically just fine:

$ erl -name abc@localhost -noshell &
[1] 74550
$ ps ax | grep erl
74556   ??  S      0:00.00 /opt/local/lib/erlang/erts-6.0/bin/epmd -daemon
74550 s004  T      0:00.13 /opt/local/lib/erlang/erts-6.0/bin/beam.smp -- -root /opt/local/lib/erlang -progname erl -- -home /Users/ci -- -name abc@localhost -noshell

Did you forgot the -name option?

comment:4 Changed 10 years ago by jose.valim@…

There are many situations having epmd in the $PATH is handy.

  1. epmd is only automatically started if you pass the -name on startup. If you are programatically starting the node, for example by using net_kernel:start/1, you need to have started epmd explicitly before;
  1. You can pass commands to epmd, for example, to change the running port or get all available names. More info here: http://www.erlang.org/doc/man/epmd.html;

All Erlang packages I have seen so far do have epmd installed to bin. There are also tools like rebar (https://github.com/rebar/rebar/blob/master/priv/templates/simplenode.nodetool#L121-L139) that expects epmd to be in the path (exactly due to 1 above). Please revisit the decision of not including epmd. :)

comment:5 Changed 10 years ago by jose.valim@…

Cc: jose.valim@… added

Cc Me!

comment:6 Changed 10 years ago by paulschoenfelder@…

I agree with José on this 100%. I don't think it makes sense to differ from the way Erlang is packaged elsewhere. Installing an Erlang package should always do more or less the same thing regardless of what you use to install it. It seems that right now MacPorts is the only package manager which does something different (as far as I can tell), and I'm not sure what the motivation is for doing so.

comment:7 Changed 10 years ago by ci42

Erlang 17.1 (r121448) makes the epmd binary available in PATH.

Note: See TracTickets for help on using tickets.