A tool for installing languages (support for Gleam, Erlang and Elixir) that run on the Erlang VM (BEAM) and related components -- component support to come in the future.
An install script is provided for both Linux/Mac:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tsloughter/beamup/releases/download/v0.6.0/beamup-installer.sh | sh
And Windows Powershell:
powershell -c "irm
https://github.com/tsloughter/beamup/releases/download/v0.6.0/beamup-installer.ps1
| iex"
Binaries can also be downloaded from the releases on Github. Or install from source using cargo.
beamup
will store configuration at:
~/.config/beamup/config.toml
~/Library/Application Support/beamup/config.toml
~\AppData\Local\beamup\config.toml
Local configuration to set a language/component to use in a specific directory
is in ./.beamup.toml
.
Hard links to the beamup
executable for each language command, i.e. gleam
,
erlc
, erl
, iex
, etc, is created in the following directory:
$XDG_BIN_HOME
or $XDG_DATA_HOME/../bin
or $HOME/.local/bin
~/.beamup/bin
~\.beamup\bin
This directory must be added to your PATH
for beamup
installs to work.
Installs are currently done to the applications data directory. This defaults to:
~/.local/share/beamup/<language>/<id>
~/Library/Application Support/beamup/<language>/<id>
~\AppData\Local\beamup\<language>\<id>
For languages that support building from source you can pass additional build
options (like what is passed to ./configure
for Erlang) with either the
environment variable BEAMUP_BUILD_OPTIONS
or adding default_build_options
to
the configuration under the language section:
[erlang]
default_build_options = "--enable-lock-counter"
Or:
BEAMUP_BUILD_OPTIONS="--enable-lock-counter" beamup build erlang -i latest-lock-counter latest
The build
command will compile a release and install
will fetch a binary
release. For Erlang at this time only build
is supported and for Gleam and
Elixir only install
is supported`.
The string latest
can be used instead of a release name to get the release
marked latest in Github:
$ beamup build erlang latest
$ beamup install gleam latest
$ beamup install elixir latest
See the releases <language>
sub-command to see available releases to
build/install.
Assuming you've built OTP-25.3.2.7
you could set the default Erlang to use to
it:
$ beamup default erlang OTP-25.3.2.7
Using the switch
sub-command either appends to or creates ./.beamup.toml
with an entry like erlang = "OTP-25.3.2.7"
and running an Erlang command like
erl
in that directory will use that version instead of the global default.
releases <language>
: List the available releases that can be installedupdate-links
: Update the hard links that exists for each language executableThe component install
command can install binary releases of tools, currently
The Erlang Language
Platform and
rebar3.
The same as with a language you can specify a version of the component to use in
the .beamup.toml
file in a directory:
rebar3 = "3.23.0"
BEAMUp is the successor to erlup and has
important differences. First, the configuration is TOML and not INI, see ~/.config/beamup/config.toml
and commands require specifying a language to work on,
for example:
$ beamup install gleam v1.3.2
Another key difference is build
will work on the tarball of Github releases by
default, not clones of tags. Use -b
(not supported yet) to install a tag or
branch of a repository.
Inspiration for erlup
is erln8 by Dave
Parfitt. He no longer maintains it and I figured I could use writing my own as a
way to learn Rust.
The switch to hardlinks instead of symlinks was taken from rustup.