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:
- Linux:
~/.config/beamup/config.toml - Mac:
~/Library/Application Support/beamup/config.toml - Windows:
~\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:
- Linux:
$XDG_BIN_HOMEor$XDG_DATA_HOME/../binor$HOME/.local/bin - Mac:
~/.beamup/bin - Windows:
~\.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:
- Linux:
~/.local/share/beamup/<language>/<id> - Mac:
~/Library/Application Support/beamup/<language>/<id> - Windows:
~\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 executable
The 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.
