All Projects → ryankurte → cargo-binstall

ryankurte / cargo-binstall

Licence: other
Binary installation for rust projects

Programming Languages

rust
11053 projects
WebAssembly
147 projects

Projects that are alternatives of or similar to cargo-binstall

platformio-core-installer
PlatformIO Core Installer
Stars: ✭ 53 (-87.41%)
Mutual labels:  installer
NALib
General purpose C sourcecode collection
Stars: ✭ 16 (-96.2%)
Mutual labels:  binary
BasicExercises
📘 Personal basic practice test playground.
Stars: ✭ 84 (-80.05%)
Mutual labels:  binary
APK-Installer
An Android Application Installer for Windows
Stars: ✭ 1,076 (+155.58%)
Mutual labels:  installer
gucci
Templating on the command line with sprig.
Stars: ✭ 74 (-82.42%)
Mutual labels:  binary
embd-go
embd-go is an embeddable command-line tool for embedding data files in Go source code, specially crafted for easy use with `go generate`.
Stars: ✭ 24 (-94.3%)
Mutual labels:  binary
arch-install
A highly configurable script automatically installing Arch Linux.
Stars: ✭ 32 (-92.4%)
Mutual labels:  installer
bin-version-cli
Get the version of a binary in semver format
Stars: ✭ 36 (-91.45%)
Mutual labels:  binary
EndeavourOS-ISO
EndeavourOS ISO framework based on Arch-ISO
Stars: ✭ 159 (-62.23%)
Mutual labels:  installer
GoogleMaps-SP
Swift Package for Google Maps iOS SDK
Stars: ✭ 105 (-75.06%)
Mutual labels:  binary
surge
Simple, specialised, and efficient binary marshaling
Stars: ✭ 36 (-91.45%)
Mutual labels:  binary
dotget
Installer for .NET Core CLI Apps
Stars: ✭ 35 (-91.69%)
Mutual labels:  installer
heroku-binary-buildpack
Heroku buildpack to execute binaries.
Stars: ✭ 29 (-93.11%)
Mutual labels:  binary
Dark Souls Config Utility
All-in-one installer and configuration UI for various mods/fixes for Dark Souls™: Prepare to Die Edition.
Stars: ✭ 27 (-93.59%)
Mutual labels:  installer
binaryapi
Binary.com & Deriv.com API for Python
Stars: ✭ 32 (-92.4%)
Mutual labels:  binary
alminium
勉強しながら、少しずつ更新しています。現在、Ubuntu 18.04&CentOS7でRedmine3.4が動作します。
Stars: ✭ 14 (-96.67%)
Mutual labels:  installer
literate-binary
Integrate handcrafted binary and documentation
Stars: ✭ 37 (-91.21%)
Mutual labels:  binary
dppm
An easy way to install and manage server applications
Stars: ✭ 107 (-74.58%)
Mutual labels:  installer
vulnscan
A static binary vulnerability scanner
Stars: ✭ 47 (-88.84%)
Mutual labels:  binary
dex
docker executables - run applications without installing them or their dependencies
Stars: ✭ 31 (-92.64%)
Mutual labels:  installer

Cargo B(inary)Install

cargo binstall provides a low-complexity mechanism for installing rust binaries as an alternative to building from source (via cargo install) or manually downloading packages. This is intended to work with existing CI artifacts and infrastructure, and with minimal overhead for package maintainers.

binstall works by fetching the crate information from crates.io, then searching the linked repository for matching releases and artifacts, with fallbacks to quickinstall and finally cargo install if these are not found. To support binstall maintainers must add configuration values to Cargo.toml to allow the tool to locate the appropriate binary package for a given version and target. See SUPPORT.md for more detail.

Status

Build GitHub tag Crates.io

You probably want to see this page as it was when the latest version was published for accurate documentation.

Installation

To get started using cargo-binstall first install the binary (either via cargo install cargo-binstall or by downloading a pre-compiled release), then extract it using tar or unzip and move it into $HOME/.cargo/bin. We recommend using the pre-compiled ones because we optimize those more than a standard source build does.

OS Arch URL
linux x86_64 https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
linux armv7 https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
linux arm64 https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-aarch64-unknown-linux-musl.tgz
macos x86_64 https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-apple-darwin.zip
macos m1 https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-aarch64-apple-darwin.zip
macos universal https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-universal-apple-darwin.zip
windows x86_64 https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-pc-windows-msvc.zip

To upgrade, use cargo binstall cargo-binstall!

Usage

Supported packages can be installed using cargo binstall NAME where NAME is the crates.io package name.

Package versions and targets may be specified using the --version and --target arguments respectively, and will be installed into $HOME/.cargo/bin by default. For additional options please see cargo binstall --help.

[garry] ➜  ~ cargo binstall radio-sx128x --version 0.14.1-alpha.5
21:14:15 [INFO] Resolving package: 'radio-sx128x'
21:14:18 [INFO] This will install the following binaries:
21:14:18 [INFO]   - sx128x-util (sx128x-util-x86_64-apple-darwin -> /Users/ryankurte/.cargo/bin/sx128x-util-v0.14.1-alpha.5)
21:14:18 [INFO] And create (or update) the following symlinks:
21:14:18 [INFO]   - sx128x-util (/Users/ryankurte/.cargo/bin/sx128x-util-v0.14.1-alpha.5 -> /Users/ryankurte/.cargo/bin/sx128x-util)
21:14:18 [INFO] Do you wish to continue? yes/[no]
? yes
21:14:20 [INFO] Installing binaries...
21:14:21 [INFO] Done in 6.212736s

Unsupported crates

Nowadays, cargo-binstall is smart enough. All you need just passing the crate name.

cargo binstall --no-confirm --no-symlinks cargo-edit cargo-watch cargo-tarpaulin \
    watchexec-cli cargo-outdated just fnm broot stylua

If your favorite package fails to install, you may specify the Cargo.toml metadata entries for pkg-url, bin-dir, and pkg-fmt at the command line, with values as documented below.

For example:

$ binstall \
  --pkg-url="{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ archive-format }" \
  --pkg-fmt="txz" crate_name

Upgrade installed crates

The most ergonomic way to upgrade the installed crates is with cargo-update. cargo-update automatically uses cargo-binstall to install the updates if cargo-binstall is present.

Supported crates such as cargo-binstall itself can also be updated with cargo-binstall as in the example in Installation above.

FAQ

  • Why use this?
    • Because wget-ing releases is frustrating, cargo install takes a not inconsequential portion of forever on constrained devices, and often putting together actual packages is overkill.
  • Why use the cargo manifest?
    • Crates already have these, and they already contain a significant portion of the required information. Also, there's this great and woefully underused (IMO) [package.metadata] field.
  • Is this secure?
    • Yes and also no? We're not (yet? #1) doing anything to verify the CI binaries are produced by the right person/organization. However, we're pulling data from crates.io and the cargo manifest, both of which are already trusted entities, and this is functionally a replacement for curl ... | bash or wget-ing the same files, so, things can be improved but it's also fairly moot
  • What do the error codes mean?
  • Can I use it in CI?
    • Yes! For GitHub Actions, we recommend the excellent taiki-e/install-action, which has explicit support for selected tools and uses cargo-binstall for everything else.

If you have ideas/contributions or anything is not working the way you expect (in which case, please include an output with --log-level debug) and feel free to open an issue or PR.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].