cargo-quickinstall is a bit like Homebrew’s concept of Bottles (binary packages), but for cargo install.
Installation
cargo install cargo-quickinstall
Recent versions of Windows, MacOS and Linux are supported.
Usage
Whenever you would usually write something like:
cargo install ripgrep
you can now write:
cargo quickinstall ripgrep
This will install pre-compiled versions of any binaries in the crate. If we don’t have a pre-compiled version, it will fallback to cargo install automatically.
Relationship to cargo-binstall
cargo-binstall (from version 0.6.2 onwards) is also capable of fetching packages from the cargo-quickinstall github releases repo. cargo-binstall is an excellent piece of software. If you’re looking for something for desktop use, I can recommend using cargo-binstall.
Use in CI systems
If you want to install a rust package on a CI system, you can do it with a curl | tar command, directly from the cargo-quickinstall github releases repo.
Edit the command however you need, and paste it into your CI pipeline.
Supported targets
Check supported-targets for lists of targets quickinstall
can build for.
Limitations
Non-default features are not supported.
The cargo-quickinstall client is just a glorified bash script at this point.
Currently it assumes that you have access to:
tar
curl
Both of these should exist on all recent Windows and MacOS installs. curl is available on most Linux systems, and is assumed to exist by the rustup installation instructions. I only plan to remove these runtime dependencies if it can be done without increasing how long cargo install cargo-quickinstall takes (might be possible to do this using feature flags?).
There are a few pieces of infrastructure that are also part of this project:
A server for distributing the pre-built binaries
We are using github releases for this.
A server for report gathering
This is done using a vercel server that saves counts to redis.
A periodic task for building the most-requested packages for each OS/architecture
Get someone to audit my GitHub Actions sandboxing scheme.
Contributing
There are a lot of things to figure out at the moment, so now is the perfect time to jump in and help. I created a Gitter room for collaborating in. You can also poke @alsuren on Twitter or Discord. I’m also up for pairing over zoom to get new contributors onboarded.
Work is currently tracked on the kanban board. If you want help breaking down a ticket, give me a shout in one of the above places.
Releasing
Releasing of patch versions is handled by the makefile, so can be done by:
make release
If you need to make a major version bump then copy-paste the commands out of the Makefile.
cargo-quickinstall
cargo-quickinstallis a bit like Homebrew’s concept of Bottles (binary packages), but forcargo install.Installation
Recent versions of Windows, MacOS and Linux are supported.
Usage
Whenever you would usually write something like:
you can now write:
This will install pre-compiled versions of any binaries in the crate. If we don’t have a pre-compiled version, it will fallback to
cargo installautomatically.Relationship to
cargo-binstallcargo-binstall(from version 0.6.2 onwards) is also capable of fetching packages from the cargo-quickinstall github releases repo.cargo-binstallis an excellent piece of software. If you’re looking for something for desktop use, I can recommend usingcargo-binstall.Use in CI systems
If you want to install a rust package on a CI system, you can do it with a
curl | tarcommand, directly from thecargo-quickinstallgithub releases repo.will print:
Edit the command however you need, and paste it into your CI pipeline.
Supported targets
Check supported-targets for lists of targets quickinstall can build for.
Limitations
Non-default features are not supported.
The
cargo-quickinstallclient is just a glorified bash script at this point.Currently it assumes that you have access to:
Both of these should exist on all recent Windows and MacOS installs.
curlis available on most Linux systems, and is assumed to exist by therustupinstallation instructions. I only plan to remove these runtime dependencies if it can be done without increasing how longcargo install cargo-quickinstalltakes (might be possible to do this using feature flags?).There are a few pieces of infrastructure that are also part of this project:
Contributing
There are a lot of things to figure out at the moment, so now is the perfect time to jump in and help. I created a Gitter room for collaborating in. You can also poke @alsuren on Twitter or Discord. I’m also up for pairing over zoom to get new contributors onboarded.
Work is currently tracked on the kanban board. If you want help breaking down a ticket, give me a shout in one of the above places.
Releasing
Releasing of patch versions is handled by the makefile, so can be done by:
If you need to make a major version bump then copy-paste the commands out of the Makefile.
Once a release has been made, post about it on the rust forums, reddit and twitter.
License
Copyright (c) 2020-2022 cargo-quickinstall developers
cargo-quickinstallis made available under the terms of either the MIT License or the Apache License 2.0, at your option.See the LICENSE-APACHE and LICENSE-MIT files for license details.