Skip to content
All posts
2 min readtebakopackagingtutorial

Basic payloads: Run your first package (1 of 5)

The basic payloads series, hands-on: run your first package.

The Tebako team

github.com/tamatebako
Note

Post 1 of 5 in the series Basic payloads.

● ○ ○ ○ ○

Note

Reference guide: Install tebako and Run a packaged app.

This series teaches tebako v2 hands-on, one subject per post: run a package, make payloads, package applications, publish them. Every step is a command you can run right now.

This post’s subject is the first one: running a package. You do not need Ruby, any other language, or any toolchain — only tebako itself.

Run your first package install once brew install tebako or the shell installer tebako add-registry … point at any payload registry tebako install hello downloads + verifies what you get a command on PATH hello the ruby runtime downloads on first run, shared or: a fat executable download, chmod, run both ways run the same bytes — no ruby installed, nothing compiled

Figure 1 — Install tebako once, install a payload from any registry, and you get an ordinary command; a fat executable works the other way, with no install at all.

Install tebako

# macOS or Linux — pick one
$ brew install tamatebako/tap/tebako
$ curl -fsSL https://tebako.org/install.sh | sh

$ tebako --version
Tebako executable packager version 2.1.8

Install a payload and run it

Payloads live in registries — a registry is just a YAML file hosted next to someone’s releases. Add one, install from it, and run:

$ tebako add-registry tfs:github:tamatebako/hello
$ tebako install hello
$ hello
Hello, world!

An ordinary command appeared on your PATH. That command is a shim: a small link that dispatches, every time you invoke it, to the right payload version and runtime. You will meet version pinning in the last chapter of this series.

The other way: a fat executable

Some projects ship a single executable with everything carried inside. You download it, make it runnable, and run it — the runtime it needs is resolved and verified on first run, then shared with every other tebako package on the machine:

$ chmod +x ./metanorma-1.16.9-arm64-macos
$ ./metanorma-1.16.9-arm64-macos compile document.adoc
resolving runtime: ruby >= 3.3, < 5.0 (arm64-macos)
runtime ruby-3.3.7 (downloaded, verified)

Both ways run the same bytes. What you just used is the whole model from the architecture series: a bootstrap, a mounted runtime, payload slices. The next post makes your first payload.

Note

Continue with part 2 of 5: Data payloads: make one, read one.