docs/lang/erlang.md
mise can be used to install and manage multiple versions of erlang on the same system.
The following are instructions for using the erlang core plugin. This is used when there isn't a git plugin installed named "erlang".
The code for this is inside the mise repository at
./src/plugins/core/erlang.rs.
The following installs erlang and makes it the global default:
mise use -g erlang@26
See available versions with mise ls-remote erlang.
The plugin uses kerl under the hood to build erlang. See kerl's docs for information on configuring kerl.
On GitHub Actions Linux runners, ImageOS=ubuntu24, ImageOS=ubuntu22, and
ImageOS=ubuntu20 map to their corresponding precompiled Erlang build targets. In the
default erlang.compile mode, unsupported values record the Erlang/OTP source archive
as the platform's locked input so installs can reproduce the kerl fallback.
The builds published by Bob target Ubuntu,
but may also run on another glibc-based Linux distribution with compatible system
libraries. Set erlang.precompiled_os to opt in to one of Bob's Ubuntu targets:
[settings.erlang]
precompiled_os = "ubuntu-22.04"
Accepted targets are ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, and
ubuntu-26.04.
Precompiled builds link to system libraries such as OpenSSL, ncurses, ODBC, and
wxWidgets. A compatible glibc version alone does not guarantee that every optional
Erlang application will work. The selected target is recorded in mise.lock; use a
target compatible with every machine that consumes the lockfile.
The following tool-options are available for the erlang backend.
These options go in the [tools] section in mise.toml.
install_envSet environment variables for kerl build/install commands and other install-time commands run by
the core erlang backend:
[tools]
erlang = { version = "latest", install_env = { KERL_CONFIGURE_OPTIONS = "--without-javac" } }