I have installed erlang R26.0.2 on a VPS with Ubuntu 20.04.6 LTS. I deployed a release I built using rebar3 and when I try to start the node with the
console option, I get the following error message and the shell is not accessible.
sh: 1: exec: tty_sl: not found
Anyone has any ideas on what might be happening here?
It sounds like you are using an older version of rebar3 (anything before 3.20.x). Can you state what version you’re using and how it was built ? (from source, downloaded, etc.).
Also, are you actually invoking rebar3 on the remote server where you’ve deployed the application to?
rebar 3.22.1 on Erlang/OTP 25 Erts 13.2.2
It was downloaded as a binary from rebar3.org
I built the release on OS X and deployed it on an Ubuntu server. The ERTS was not packaged with the release.
That makes sense, sort of. Still not clear if you were trying to use rebar on the server or not, but if you were, you probably should not be. rebar is a project and build tool, that’s it. Not meant to be used along side of releases (sans local development).
If you’re using relx, and you include erts, you have everything you need in the release.
Documentation on releases FWIW.
That said, and if you were indeed using 3.22.1, you ran into the error because rebar3 didn’t find
shell:start_interactive/0, so it
tryed to spawn the
tty_sl (which isn’t present in OTP 26 anymore iirc). It should have fallen back to setting up the old shell, so not sure why (missing a guard in the catch clause maybe), it might have been intentional as well (i.e., if we don’t match this, just blow up).
code for reference
Here’s the odd thing about what you’re saying though,
shell is part of stdlib, not ERTS. Maybe you didn’t include stdlib in your release (if that’s possible).
All very interesting though!
Thanks Bryan, I’m not using rebar3 on the server, just on my dev machine which is a Mac.
I did include
stdlib in my release, I didn’t think it was possible to exclude it. I can start a standalone shell using the erlang installation on the server, so I don’t understand why the node startup complains about this. I’ll keep digging.
Let me ask :
So you have a release on the server, is it already running? or is it down and you’re trying to start it remotely?
In either case, it sounds like you’re trying to connect to the remote node using rebar3, is that right? If so, how are you going about this?
Hmm…maybe I shouldn’t have have ignored the error message which said
Exact ERTS version (13.2.2) match not found, instead using 14.0.2. The release may fail to run.
I rebuilt the release with the correct ERTS and now I’ve got different problems (which I can fix).
Thank you for engaging
That makes total sense Glad you got out of your error loop!