Erlang удаленная оболочка не работает
У меня странное поведение на моих док-контейнерах (CentOS). Когда я вхожу в него по SSH, есть работающий экземпляр Erlang VM (api@127.0.0.1), я не могу подключиться к нему с аргументом -remsh, однако я могу пропинговать его. Мой узел Erlang (api@127.0.0.1) работает правильно, хотя.
bash-4.2# ./bin/erl -name 'remote@127.0.0.1' -remsh 'api@127.0.0.1'
Eshell V6.1 (abort with ^G)
(remote@127.0.0.1)1> node().
'remote@127.0.0.1'
(remote@127.0.0.1)2> net_adm:ping('api@127.0.0.1').
pong
(remote@127.0.0.1)3> erlang:system_info(system_version).
"Erlang/OTP 17 [erts-6.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]\n"
(remote@127.0.0.1)4> rpc:call('api@127.0.0.1', erlang, node, []).
'api@127.0.0.1'
Работает 2 процесса Linux - один для фактической виртуальной машины, а другой для процесса, который пытается вызвать удаленную оболочку
26 ? Sl 40:46 /home/vcap/app/bin/beam.smp -- -root /home/vcap/app -progname erl -- -home /home/vcap/app/ -- -name api@127.0.0.1 -boot releases/14.2.0299/start -config sys -boot_var PATH lib -noshell
32542 ? Sl+ 0:00 /home/vcap/app/bin/beam.smp -- -root /home/vcap/app -progname erl -- -home /home/vcap/app -- -name remote@127.0.0.1 -remsh api@127.0.0.1
Когда я копирую двоичные файлы Erlang на хост (Arch Linux) и запускаю./bin/erl, я получаю разные результаты:
[jodias@arch tmp]$ ./bin/erl
Erlang/OTP 17 [erts-6.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V6.1 (abort with ^G)
1>
Обратите внимание, что печатная версия системы Erlang отсутствует в док-контейнере (однако двоичные файлы Erlang точно такие же).
1 ответ
Что такое $TERM
в оболочке вы пытаетесь открыть пульт? Существует проблема, когда TERM отсутствует или неизвестен ncurses, против которых построен Erlang, из-за чего соединение с удаленной оболочкой молча прерывается. Попробуй это:
TERM=xterm ./bin/erl -name 'remote@127.0.0.1' -remsh 'api@127.0.0.1'
Однажды я сообщил о проблеме в список рассылки Erlang, но ответа не последовало. Теперь я вижу, что эта проблема находится в системе отслеживания ошибок Erlang. Пожалуйста, проголосуйте за то, что он будет выбран командой OTP;)