Installing a Beta

A beta train installs on metal the same way a release does — same two commands, same checksum verification, same layout. The only thing that changes is which URL you fetch the script from.

The ref you fetch is the channel. A script read off a pipe cannot see the URL it came from, so what it installs is decided by the copy of the file on that ref. There is no --channel option.

Want Fetch install.sh from Installs
the latest release …/actana/control/main/install.sh the release of the line main carries
a specific release …/actana/control/vX.Y.Z/install.sh that line's release. A release tag never moves, so this is a pin
the current beta of a line …/actana/control/beta/X.Y/install.sh that line's current beta — or the newest release, if nobody has cut one yet
the same beta, by tag …/actana/control/vX.Y.Z-beta/install.sh the same as the row above — an alias, not a pin

install.sh --help names the line the copy you fetched carries. Which trains are open right now:

git ls-remote --heads https://github.com/actana/control | grep -i beta

A train with no cut yet falls through to the newest release, quietly. The script says so before it downloads: its first line is Installing the Actana Core <version> for <target>. A bare x.y.z where you expected x.y.z-beta is that fall-through.

curl -fsSL https://raw.githubusercontent.com/actana/control/beta/X.Y/install.sh | bash
actana setup

A beta version is x.y.z-beta, exactly. The beta of the X.Y line is X.Y.Z-beta. There is no counter, dotted suffix, run number, or short sha after the word beta. Anything with something appended after beta is not a version this project publishes, and --version will not find it.

A beta lands beside the release of its line (versions/x.y.z-beta), not on top of it. When the line promotes, the train branch is deleted — a beta/X.Y URL that 404s is the line having shipped; install the release from main.

The only way to pin a beta is --version

The two beta rows above are not pins. The vX.Y.Z-beta tag moves on every cut, and once the line has a release both rows install the release. The pinned form wins over everything:

curl -fsSL https://raw.githubusercontent.com/actana/control/main/install.sh | bash -s -- --version X.Y.Z-beta
actana setup

ACTANA_VERSION=X.Y.Z-beta does the same thing.

actana update does not follow a beta line. A bare update resolves the newest release and leaves a newer prerelease where it is. To take a newer cut of the same beta, re-run the one-liner from the train's ref. When that line's release is published, actana status says so; that update is what moves you onto it.

A CLI-only beta, without a Core

The npm registry carries releases only — @actana/cli never has a beta. The beta CLI ships on the GitHub release as an npm tarball:

npm install -g https://github.com/actana/control/releases/download/vX.Y.Z-beta/actana-cli-X.Y.Z-beta.tgz

Every release asset has a .sha256 beside it; verify before installing:

curl -fsSL https://github.com/actana/control/releases/download/vX.Y.Z-beta/actana-cli-X.Y.Z-beta.tgz.sha256 | shasum -a 256 -c -

actana --version should print x.y.z-beta. This installs the actana command only — no Core bundle, nothing running. A machine with the CLI and no actana setup is a pure client: it drives Cores elsewhere (a Docker Compose stack on this machine, or a remote Core) and never becomes a Core itself. The install.sh door above is the full-bundle door — it places the Core bundle too, and stops before actana setup activates it.

macOS stock bash

On macOS, curl … | bash can fail with asset…: unbound variable — the stock bash 3.2 mis-parses the script. Workaround in Troubleshooting.

See also

Built by Qcentic