Installation

One command installs both binaries into ~/.es-runtime/bin, checksum-verified: esrun, the server runtime, and esdev, the development toolchain.

Install

shTerminal
curl -fsSL https://esrun.opentechf.org/install.sh | bash

Prefer to build from source? See the README.

Just one of them

A server or CI image has no use for the development binary — and esdev is not a deployment target.

Shell
# Linux / macOS
curl -fsSL https://esrun.opentechf.org/install.sh | bash -s -- --only=esrun
curl -fsSL https://esrun.opentechf.org/install.sh | bash -s -- --only=esdev
POWERSHELL
# Windows (PowerShell) — `irm | iex` cannot pass arguments, so this is an env var.
$env:ES_RUNTIME_ONLY = 'esrun'; irm https://esrun.opentechf.org/install.ps1 | iex

Platforms

Every release ships prebuilt binaries for six targets. How far each one has been exercised differs:

TargetTested on
Linux x64Real machines and CI
Windows x64Real machines and CI
macOS arm64 (Apple silicon)CI only, not yet on a real machine
macOS x64 (Intel)Built in CI, not tested
Linux arm64Built in CI (cross-compiled), not tested
Windows arm64Built in CI, not tested
FreeBSDUpcoming, no binary yet

ES-Runtime targets modern servers. On Linux it needs glibc 2.39 or newer: Ubuntu 24.04, Debian 13 and later. Older distributions, and musl-based ones such as Alpine, are not supported; the installer says so before downloading.

A problem on any of them is worth reporting.

Pinning a version

Each binary is released under its own tag and is pinned independently. Latest:

  • esrun 0.45.0
  • esdev 0.24.0
shTerminal
ESRUN_VERSION=0.45.0 ESDEV_VERSION=0.24.0 curl -fsSL https://esrun.opentechf.org/install.sh | bash

ES_RUNTIME_INSTALL overrides the install prefix.

Upgrade

On a development machine, esdev upgrade updates esdev and the esrun installed beside it, each to its own newest release:

Shell
esdev upgrade                 # both
esdev upgrade --only=esrun    # just esrun (or --only=esdev)
esdev upgrade --dry-run       # say what would change, change nothing

The two are versioned and tagged separately, so each resolves its own release. A binary already current says so and changes nothing. An esrun elsewhere on PATH is left alone.

On a server, or anywhere only esrun is installed, upgrade by re-running the installer with the version you want (Pinning a version), as a deployment's image or install step does:

Shell
# Linux / macOS
curl -fsSL https://esrun.opentechf.org/install.sh | ESRUN_VERSION=<version> bash -s -- --only=esrun
POWERSHELL
# Windows (PowerShell)
$env:ESRUN_VERSION = '<version>'; $env:ES_RUNTIME_ONLY = 'esrun'; irm https://esrun.opentechf.org/install.ps1 | iex

esrun does not replace itself.

The archive is checked against the release's checksums.txt before anything is replaced. A release without one, or an archive whose SHA-256 does not match it, is refused and the installed binary is left as it was. The new binary is written beside the old one and renamed into place, so an interrupted upgrade never leaves half a binary.

A download the network interrupts (a dropped connection, a stalled transfer, or a server error) is tried again, up to three attempts in all. On a terminal the archive's download shows a progress bar.

Uninstall

Delete the install directory and remove it from your PATH.

Shell
# Linux / macOS — remove the install dir, then drop the PATH line from your shell profile.
rm -rf "$HOME/.es-runtime"
# fish keeps its PATH entry in a file of its own.
rm -f "${XDG_CONFIG_HOME:-$HOME/.config}/fish/conf.d/es-runtime.fish"
POWERSHELL
# Windows (PowerShell) — remove the install dir, then remove it from your user PATH.
Remove-Item -Recurse -Force "$HOME\.es-runtime"
Upgrading from before 0.25

Installs used to land in ~/.esrun/bin. The installer now uses ~/.es-runtime/bin and leaves the old directory alone — it will not delete binaries it did not place. Remove ~/.esrun and its PATH entry, or a stale esrun there will shadow the new one.

Last updated on
Edit this page