Crates.io | cargo-update |
lib.rs | cargo-update |
version | 16.0.0 |
source | src |
created_at | 2016-10-29 18:33:32.489952 |
updated_at | 2024-11-03 04:47:55.222279 |
description | A cargo subcommand for checking and applying updates to installed executables |
homepage | |
repository | https://github.com/nabijaczleweli/cargo-update |
max_upload_size | |
id | 7041 |
size | 262,242 |
A cargo
subcommand for checking and applying updates to installed executables
Firstly, ensure you have CMake and the Required Libraries™.
Then proceed as usual:
cargo install cargo-update
If that doesn't work:
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
,LIBSSH2_SYS_USE_PKG_CONFIG=whatever
,brew
, and re-try with LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
,openssl
installed twice via brew
,--features vendored-openssl
,--features vendored-libgit2
.--features vendored-libcurl
.If it still doesn't work, slam open an issue or comment on one of the existing relevant ones.
Dependency | Debian package | Fedora package | MSYS2 package |
---|---|---|---|
libgit2 |
libgit2-dev |
libgit2-devel |
mingw-w64-x86_64-libgit2 |
libcurl |
libcurl4-*-dev |
libcurl-devel |
libcurl-devel |
libssh2 |
libssh-dev |
libssh2-devel |
mingw-w64-x86_64-libssh2 |
openssl |
libssl-dev |
openssl-devel |
mingw-w64-x86_64-openssl |
pkgconf (some platforms) |
pkgconf |
pkgconf |
mingw-w64-x86_64-pkgconf |
cargo install-update -a
— check for newer versions and update all installed packages.
cargo install-update crate1 crate2 ...
— check for newer versions and update selected packages, will not install new packages.
For more information and examples see the manual.
cargo install-update-config -t unstable -f feature1 -d false crate
— when building crate, do so with the unstable toolchain with feature1 and no default features.
For more information and examples see the manual.
cargo-update
will update itself seamlessly on Linux and Windows.
On Windows the following strategy is applied:
cargo install
will "replace" it and not duplicate the entry in .crates.toml
)Some crates, like clippy
and rustfmt
, have moved from Crates.io to being a rustup
component.
If you'd installed them beforehand, then added them via rustup component
, they might not have been removed from the list of crates installed via cargo install
,
and you might come across errors such as
$ cargo install-update -a
Updating registry 'https://github.com/rust-lang/crates.io-index'
Package Installed Latest Needs update
clippy v0.0.179 v0.0.302 Yes
.....
Updating clippy
Updating crates.io index
Installing clippy v0.0.302
Compiling clippy v0.0.302
error: failed to compile `clippy v0.0.302`, intermediate artifacts can be found at `/tmp/cargo-installxHfj2y`
Caused by:
failed to run custom build command for `clippy v0.0.302`
Caused by:
process didn't exit successfully: `/tmp/cargo-installxHfj2y/release/build/clippy-ffeedc2f188020a4/build-script-build` (exit code: 1)
--- stderr
error: Clippy is no longer available via crates.io
help: please run `rustup component add clippy-preview` instead
In that case, run cargo install --list
to verify that they're still there and cargo uninstall
them,
which will deregister the cargo
versions and leave you with the rustup
ones.
cargo
sSince 0.42.0
,
cargo install cratename
checks for newer versions and installs them if they exist, instead of erroring out like it does usually.
Cargo allows replacing entire registries at a time.
For example, this stanza in ~/.cargo/config
will replace the default crates.io registry with the Shanghai Jiao Tong Universty's mirror:
[source.crates-io]
replace-with = "sjtu"
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
cargo-update
resolves this to the deepest registry, and passes --registry sjtu
to cargo install
.
This worked until roughly nightly-2019-08-10
, but since nightly-2019-09-10
due to a Cargo regression (or feature, but it's breaking without a major version bump, so)
--registry
looks into a different key, requiring this additional stanza to ensure correct updates:
[registries.sjtu]
index = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
Confer the initial implementation, rewrite, final broken testcase and final debug implementation threads (h/t @DCJanus for help debugging and testcases, also dealing with me as I slowly spiraled into insanity).
To all who support further development on Patreon, in particular: