← Package directory
Available on winget

Install ubi

The Universal Binary Installer

Install with winget
winget install --id houseabsolute.ubi
Upgrade
winget upgrade --id houseabsolute.ubi
Uninstall
winget uninstall --id houseabsolute.ubi

About ubi

UBI is a universal binary installer library and CLI tool. When I say "universal", I mean it downloads binaries from GitHub or GitLab releases. When I say "binary", I mean it handles single-file executables like those created by most Go and Rust projects. When I say "installer", I mean it plops the binary wherever you tell it to. And finally, when I say "UBI", I don't mean "universal basic income", but that'd be nice too.

What's new in 0.9.0

- Added a new --min-age-days flag that tells ubi to only consider releases at least that old. This is useful for mitigating supply chain attacks, especially for projects that use GitHub's immutable releases feature. GH #145.

Read release notes

Version history

Version Updated Notes
0.9.0 Unknown - Added a new --min-age-days flag that tells ubi to only consider releases at least that old. This is useful for mitigating supply chain attacks, especially for projects that use GitHub's immutable releases feature. GH #...
0.8.4 Unknown - This is the same as 0.8.3, but I had to publish this with a new tag because of a failed experiment with using GitHub's new immutable releases feature. - Fixed a bug where ubi would pick an asset with 64 in the name whe...
0.8.2 Unknown - Fixed a bug introduced in 0.8.0, which caused ubi to prefer the browser_download_url over the url for a GitHub asset. When both are present, it will now use the url field. This is important because when downloading ass...
0.8.1 Unknown - The change in 0.7.4 to look for "arm" on macOS caused ubi to not respect the --matching option. Reported (#137) and fixed (#138) by @prashantv.
0.8.0 Unknown - Added support for releases done via Codeberg/Forgejo. Based on PR #107 from @pepicrft (Pedro Piñera Buendía).
0.7.4 Unknown - Changed macOS on ARM artifact name matching to look for "arm", not just "arm64", before looking for 64-bit names. This means that ubi will pick something like "foo-macos-arm.tgz" over "foo-macos-x86-64.tgz" on the macO...
0.7.3 Unknown - Added support for 7-Zip archive (\.7z). Based on PR #115130 from @yjoer (Yeoh Joer). - Added support for projects on GitLab with more than one slash in the path name, like https://gitlab.com/gitlab-com/gl-infra/terra-t...
0.7.2 Unknown - - Added support for release artifacts with a .jar extension. Based on PR #126 from @dpassen (Derek Passen).
0.7.1 Unknown - Set the minimum support Rust version (MSRV) of the ubi crate to 1.85.
0.7.0 Unknown - Added a new --matching-regex CLI flag and UbiBuilder::matching_regex method. This regex is matched against potential release filenames before attempting to find a release with a matching OS, architecture, etc. This is...
0.6.1 Unknown - Upgraded the dependency on zip to 2.4.1. Previously, ubi pinned zip 2.2.3, which was yanked, because the 2.3.0 release broke ubi's tests.
0.6.0 Unknown Release notes
0.5.2 Unknown - This is identical to 0.5.1, but it was necessary to work around a bug in my GitHub release automation. The 0.5.1 is no longer available on GitHub, but the crates.io releases still exist and there's no issue with using...