簡體   English   中英

設置 Erlang 節點失敗並顯示“無法設置長節點名稱!請檢查您的配置”

[英]Setting up Erlang node fails with "Can't set long node name! Please check your configuration"

$ erl -name lofa {error_logger,{{2008,6,18},{21,43,13}},"Can't set long node name! \nPlease check your configuration\n",[]} # ... several stacktrace lines follow ...

引用 José Valim 的話

這很可能發生,因為hostname -f沒有返回值,即您的機器不知道它應該如何在網絡中命名。 您可以使用--sname ,提供全名,例如--name foo@IP_ADDRESS或機器之間有意義的東西(以便它們可以找到彼此)。

另一種解決方案是直接設置主機名sudo hostname <FQDN> ),或更新主機文件(例如,Linux 中的/etc/hosts )。

TL;DR使用erl -sname lofa而不是erl -name lofa

解釋:

  • --name需要一個完全限定的名稱,即<username>@<host>
  • --sname接受一個短名稱,即,只是用戶名,從hostname -f推斷主機

所以,

iex --sname joe
erl -sname joe

等價於以下

iex --name joe@$(hostname -f)
erl -name joe@$(hostname -f)

我從 Elixir 1.7.4 & Erlang/OTP 22.3.4.20 到 1.12.1 & Erlang/OTP 24.0.2(這個答案的最新版本)測試了上述內容。

參考資料

暫無
暫無

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

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