Introduction
Go Binaries allows developers to install Go programs from the command-line, without requiring Go to be installed on your machine, allowing users outside of the Go community to easily install your tools. The binaries are cross-compiled upon request and cached for future installations.
Usage
Install PKG
with optional semver VERSION
.
curl -sf https://gobinaries.com/<PKG>[@VERSION] | sh
Install PKG
to the given directory PREFIX
. The directory will be created if it does not exist.
curl -sf https://gobinaries.com/<PKG>[@VERSION] | PREFIX=/tmp sh
The github.com
path prefix is optional.
Examples
Install the hey
HTTP benchmarking tool:
curl -sf https://gobinaries.com/rakyll/hey | sh
Install the wuzz
HTTP client:
curl -sf https://gobinaries.com/asciimoo/wuzz | sh
Install the latest version of staticgen
:
curl -sf https://gobinaries.com/tj/staticgen/cmd/staticgen | sh
Install the latest 1.x
major version of staticgen
:
curl -sf https://gobinaries.com/tj/staticgen/cmd/[email protected] | sh
Install the v1.0.0
version of triage
:
curl -sf https://gobinaries.com/tj/triage/cmd/[email protected] | sh
Semver support
The following semver patterns are supported:
- Exact version:
v1.2.3
, 1.2.3
- Wildcards:
v1.x
, v1.2.x
, 1.x
, 1.2.x
- Wildcards (implicit):
v1
, v1.2
, 1.2
- Leading
v
is optional, regardless of the Git tag
How does it work?
Take for example you want to install @rakyll's fantastic HTTP benchmarking tool hey, to install the latest release you would run:
curl -sf https://gobinaries.com/rakyll/hey | sh
This request fetches the latest tag from GitHub and responds with a shell script
which performs a second request, populated with the resolved version and architecture as shown here:
https://gobinaries.com/binary/github.com/rakyll/hey?os=darwin&arch=amd64&version=v0.1.3
The response of this request is a Golang binary compiled for the requested os, architecture, and package version. The result is cached in a CDN for subsequent requests.
Limitations
- The Go package must compile in under 100 seconds (CDN limitation)
- The Go package must have at least one Git tag
FAQ
What's wrong with go-get?
Using go-get for installation is fine if you're a Go user, however, if
you're creating programs which are designed to be used by a wider audience
it's unlikely they will have Go installed.
Go Binaries is also useful when provisioning servers or continuous integration,
where the Go toolchain may not be available.
Which version of Go is used?
Currently Go 1.15.x via the official golang:1.15 Docker image.