eget(1)
eget(1) β the manual, but make it cute β¨
okay so bestie, this is eget β a tool for easily installing prebuilt binaries from GitHub. that's the whole vibe. π
SYNOPSIS
eget [--version] [--help] [OPTIONS] TARGET
DESCRIPTION
Eget is literally a tool for downloading and extracting prebuilt binaries from releases on GitHub. here's how it works: you give it a repository and Eget will search through the assets from the latest release, trying to find a suitable prebuilt binary for your system. if one is found, the asset gets downloaded and Eget extracts the binary to the current directory. π
important vibe check: Eget should only be used for installing simple, static prebuilt binaries β like, where the extracted binary is all that's needed for installation. for more complex installation, you can use the --download-only option and do extraction manually. no cap. π«Ά
The PROJECT argument passed to Eget should be one of these three things:
- a GitHub repository, formatted as
user/repoβ in which case Eget will search the release assets - a direct URL β in which case Eget will directly download and extract from the given URL
- a local file β in which case Eget will extract directly from the local file
If Eget downloads an asset called xxx and there also exists an asset called xxx.sha256 or xxx.sha256sum, Eget will automatically verify that the SHA-256 checksum of the downloaded asset matches the one contained in that file, and abort installation if a mismatch occurs. so dramatic, but honestly iconic. π
When installing an executable, Eget will place it in the current directory by default. if the environment variable EGET_BIN is non-empty, Eget will place the executable in that directory. the --to flag may also be used to customize the install location. β¨
Directories can also be specified as files to extract, and all files within them will be extracted. for example:
eget https://go.dev/dl/go1.17.5.linux-amd64.tar.gz --file go --to ~/go1.17.5
GitHub limits API requests to 60 per hour for unauthenticated users. if you wanna perform more requests (up to 5,000 per hour), you can set up a personal access token and assign it to an environment variable named either GITHUB_TOKEN or EGET_GITHUB_TOKEN when running Eget. if both are set, EGET_GITHUB_TOKEN will take precedence. Eget will read this variable and send the token as authorization with requests to GitHub. it's also possible to read the token from a file by using @/path/to/file as the token value. π
The behavior of Eget is configurable in a number of ways via options. documentation for these options is provided below. π
OPTIONS β¨
-t,--tag=β use the given tagged release instead of the latest release. if the project doesn't have a tag that matches exactly, eget will look for a tag that contains the given string, and use the latest one. example:eget -t nightly zyedidia/micro. π·οΈ--pre-releaseβ include pre-releases when fetching the latest version. this will get the latest overall release, even if it's a pre-release. π§--sourceβ download the source code for the repository (only works for GitHub repositories) rather than a release. downloads from the βmasterβ branch by default. use--tagto download a different tag or branch. πΏ--to=β move the executable to the given name after extraction. if the name is-, the data will be written to stdout. example:eget zyedidia/micro --to /usr/local/bin. example:eget --asset nvim.appimage --to nvim neovim/neovim. π-s,--system=β use the given system as the target instead of the host. systems follow the notation`OS/Arch`, where OS is a valid OS (darwin,windows,linux,netbsd,openbsd,freebsd,android,illumos,solaris,plan9), and Arch is a valid architecture (amd64,386,arm,arm64,riscv64). if the special valueallis used, all possibilities are given and the user must select manually. example:eget -s darwin/amd64 zyedidia/micro. π₯οΈ-f,--file=β extract the file that matches the given glob. you may want to use this option to extract non-binary files. example:eget -f LICENSE zyedidia/micro. π--allβ extract all candidate files. π―-q,--quietβ only print essential output. π€«--download-onlyβ stop after downloading the asset. this prevents Eget from performing extraction, allowing you to perform manual installation after the asset is downloaded. β--download-allβ download all projects defined in the configuration file. ποΈ--upgrade-onlyβ only download the asset if the release is more recent than an existing asset with the same name in$EGET_BIN, or the current directory if$EGET_BINis not defined. β¬οΈ-a,--asset=β download a specific asset containing the given string. if there is an exact match with an asset, that asset is used regardless (except when using^). if the argument begins with a^, then any asset that does not match the argument is a candidate. this option can be specified multiple times for additional filtering. example:eget --asset nvim.appimage neovim/neovim. example:eget --download-only --asset amd64.deb --asset musl sharkdp/bat. if the assets are filterable using the--systemdetector (i.e., if applying the detector does not remove all candidates), the system detector is applied. use--system allto always consider all assets. π―--sha256β show the SHA-256 hash of the downloaded asset. this can be used to verify that the asset is not corrupted. π--verify-sha256=β verify the SHA-256 hash of the downloaded asset against the one provided as an argument. similar to--sha256, but Eget will do the verification for you. β--rateβ show GitHub API rate limiting information. π--removeβ remove the target file from$EGET_BIN(or the current directory if unset). note that this flag is boolean, and means eget will treatTARGETas a file to be removed. ποΈ-k,--disable-sslβ disable SSL certificate verification for GET requests. cannot be used in combination with aGITHUB_TOKEN. β οΈ-v,--versionβ show version information. βΉοΈ-h,--helpβ show a help message. πββοΈ
CONFIGURATION π οΈ
Eget can be configured using a TOML file located at ~/.eget.toml. alternatively, the configuration file can be located in the same directory as the Eget binary.
both global settings can be configured, as well as setting on a per-repository basis. sections can be named either global or "owner/repo", where owner and repo are the owner and repository name of the target repository (note that the owner/repo format is quoted). π
for example, the following configuration file will set the --to flag to ~/bin for all repositories, and will set the --to flag to ~/.local/bin for the zyedidia/micro repository:
[global]
target = "~/bin"
["zyedidia/micro"]
target = "~/.local/bin"
more complete example configuration:
[global]
github_token = "ghp_1234567890"
quiet = false
show_hash = false
upgrade_only = true
target = "./test"
["zyedidia/micro"]
upgrade_only = false
show_hash = true
asset_filters = [ "static", ".tar.gz" ]
target = "~/.local/bin/micro"
by using the configuration above, you could run the following command to download the latest release of micro: eget zyedidia/micro. without the configuration, you would need to run the following command instead: eget zyedidia/micro --to ~/.local/bin/micro --sha256 --asset static --asset .tar.gz. π
Available settings ποΈ
allβ whether to extract all candidate files.asset_filtersβ an array of partial asset names to filter the available assets for download.download_onlyβ whether to stop after downloading the asset (no extraction).fileβ the glob to select files for extraction.github_tokenβ GitHub API token to use for requests.quietβ whether to only print essential output.show_hashβ whether to show the SHA-256 hash of the downloaded asset.systemβ the target system to download for.targetβ the directory to move the downloaded file to after extraction.upgrade_onlyβ whether to only download if release is more recent than current version.
FOR MAINTAINERS π
to guarantee compatibility of your softwareβs pre-built binaries with Eget, you can follow these rules:
- provide your pre-built binaries as GitHub release assets. π¦
- format the system name as
OS_Archand include it in every pre-built binary name. supported OSes aredarwin/macos,windows,linux,netbsd,openbsd,freebsd,android,illumos,solaris,plan9. supported architectures areamd64,i386,arm,arm64,riscv64. 𧬠- if desired, include
*.sha256files for each asset, containing the SHA-256 checksum of each asset. these checksums will be automatically verified by Eget. π - include only a single executable or appimage per system in each release archive. π―
- use
.tar.gz,.tar.bz2,.tar.xz,.tar, or.zipfor archives. you may also directly upload the executable without an archive, or a compressed executable ending in.gz,.bz2, or.xz. ποΈ
if you donβt follow these rules, Eget may still work well with your software. Egetβs auto-detection is much more relaxed than what is required by these rules, but if you follow these rules your software is guaranteed to be compatible with Eget. π€
BUGS π
See GitHub Issues: https://github.com/zyedidia/eget/issues
AUTHOR π
Zachary Yedidia zyedidia@gmail.com
that's the whole manual, bestie. go forth and install some iconic prebuilt binaries. eget(1) out β Eget Manual, periodt. π β¨π
π¦ where this page comes from
- nixos 26.05: eget 1.3.4
- nixpkgs unstable: eget 1.3.4
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms