1. cargo-install-update(1)
  2. cargo-install-update(1)

NAME

cargo-install-update - Cargo subcommand for checking and applying updates to installed executables

SYNOPSIS

cargo install-update [OPTIONS] [PACKAGE...]

DESCRIPTION

Cargo subcommand for checking and applying updates to installed executables.

This was mostly built out of a frustration with periodically checking for updates for my cargo-installed executables, which was long and boring.

Updates packages from the main repository and git repositories.

See cargo-install-update-config(1) for further configuring updates, and the metadata from cargo install that may be preserved by default.

The CARGO_INSTALL_OPTS environment variable can be set, containing options to forward to the end of cargo install invocations' argument lists. Note, that cargo-install-update-config(1) is preferred in the general case.

If cargo-binstall (>=0.13.1) is available in the PATH, -r was not overriden, CARGO_INSTALL_OPTS is empty, the package is in the default registry, and has no non-default configuration, it will be used to install the package instead.

Exit values and possible errors:

-1 - cargo subprocess was terminated by a signal (Linux-only)
1  - option parsing error
2  - registry repository error
X  - bubbled-up cargo install exit value

OPTIONS

-a --all

Update all currently installed executables.

Required if list of packages not given.

[PACKAGE...]

List of packages to update in the [(registry_url):]package_name[:version] format.

Registry defaults to the default crates.io registry,
and can be a name from ~/.cargo/config.

If specified in addition to --all,
will add the specified packages to the update list
(useful, e.g., in conjunction with --allow-no-update).

Required if --all not given.

-l --list

Don't update any packages, just list them.

If PACKAGE is empty, act as if --all was specified.

-f --force

Update all packages, regardless of whether they need to be version-wise.

-d --downdate

Downdate packages to match the latest unyanked version from the registry.

-i --allow-no-update

Allow to fresh install packages passed as PACKAGE argument.

This is useful, for example, in pairing with cargo-install-update-config(1).

Off by default.

-g --git

Also update git-originating packages.

Off by default, because it's expensive.

-q --quiet

Don't print status messages to stdout
and pass down --quiet to cargo subprocesses.

--locked

Enforce packages' embedded Cargo.lock files.
This is equivalent to CARGO_INSTALL_OPTS=--locked (globally)
and cargo-install-update-config(1) --enforce-lock (per package)
except it doesn't disable cargo-binstall.

-j --jobs JOBS -j --jobs default

Run at most JOBS jobs at once, forwarded as -j JOBS to cargo install.

"default" is as many CPUs as are installed on the system
(same as cargo install).

When combined with -J dedicate JOBS CPUs to each cargo install,
and do not forward. This means that at most around R_JOBS/JOBS crates
will be built in parallel, so that each one can get around JOBS CPUs at once.

-J --recursive-jobs -JR_JOBS --recursive-jobs R_JOBS

Build crates in parallel to fill R_JOBS CPUs.

By default (and with -j JOBS), each "cargo install" invocation runs serially,
on as many CPUs as are installed on the system (on R_JOBS CPUs).

With -J (-J R_JOBS), cargo install-update creates a make jobserver with
as many job slots as CPUs are installed on the system (R_JOBS job slots)
and passes it to "cargo install"s via $CARGO_MAKEFLAGS/$MAKEFLAGS/$MFLAGS.

Building a crate consists of several build steps, which can be,
with some restrictions, parallelised within a single crate build
(like downloading sources or compiling different unrelated dependency crates)
that all feed into a final long link step.

By default (with -j) cargo runs as many jobs at once as allocated,
within a single crate.

With -J (-J R_JOBS), job slots are shared across all cargo install processes,
and they will collude to run as many jobs at once as allocated, overall.

Notice how this means you may be building up to R_JOBS crates in parallel,
which may induce significant filesystem and memory pressure.
Use -j JOBS to reduce the crates-at-a-time figure to around R_JOBS/JOBS.

If an empty value is given, defaults to the amount of CPUs installed on the system.

-s --filter PACKAGE_FILTER...

Only consider packages matching all filters.

PACKAGE_FILTER is in the form "key=value", where key is any of:
  - "toolchain": the package must be configured to be compiled with
                 the specified toolchain via cargo-install-update-config(1).

-r --install-cargo CARGO_EXECUTABLE

Cargo executable to run for installations.

*Must* behave indistinguishably from the default cargo
with regards to on-disk state ("$CARGO_DIR/.crates.toml"
and installed executables) and the arguments it accepts.

Required. Default: "cargo"

-c --cargo-dir CARGO_DIR --root CARGO_DIR

Set the directory containing cargo metadata.

Equivalent to, and forwarded as, cargo install --root.

Required. Default: "$CARGO_INSTALL_ROOT", then "$CARGO_HOME",
then "$HOME/.cargo", otherwise manual.

-t --temp-dir TEMP_DIR

Set the directory in which to clone git repositories.

Adjoined with "cargo-update.$(id -un)" as last segment.

Required. Default: system temp, otherwise manual.

ENVIRONMENT VARIABLES

$CARGO_REGISTRIES_CRATES_IO_PROTOCOL

Overrides the registries.crates-io.protocol Cargo configuration key.

The default is "sparse", and the crates.io URL is
sparse+https://index.crates.io/.
Set to some other value to use the git registry
(https://github.com/rust-lang/crates.io-index) for crates.io.

$CARGO_NET_GIT_FETCH_WITH_CLI

Overrides the net.git-fetch-with-cli Cargo configuration key.

$GIT

Overrides the git executable in net.git-fetch-with-cli=true mode.

$CARGO_HTTP_CAINFO

Overrides the http.cainfo Cargo configuration key.

$CARGO_HTTP_CHECK_REVOKE

Overrides the http.check-revoke Cargo configuration key.

EXAMPLES

cargo install-update -a

Update all installed packages.

Example output:
      Polling registry 'https://index.crates.io/'........

  Package         Installed  Latest   Needs update
  checksums       v0.5.0     v0.5.2   Yes
  treesize        v0.2.0     v0.2.1   Yes
  cargo-count     v0.2.2     v0.2.2   No
  cargo-graph     v0.3.0     v0.3.0   No
  cargo-outdated  v0.2.0     v0.2.0   No
  identicon       v0.1.1     v0.1.1   No
  racer           v1.2.10    v1.2.10  No
  rustfmt         v0.6.2     v0.6.2   No

  Updating checksums
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading checksums v0.5.2
     [...]
     Compiling checksums v0.5.2
      Finished release [optimized] target(s) in 95.2 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\checksums.exe

  Updating treesize
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading treesize v0.2.1
     [...]
     Compiling treesize v0.2.1
      Finished release [optimized] target(s) in 76.77 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\treesize.exe

  Updated 2 packages.

cargo install-update racer treesize cargo-cln

Only consider racer, treesize and cargo-cln for updates.
Since cargo-cln is not installed, it'll be ignored.

 Example output:
      Updating registry `https://github.com/rust-lang/crates.io-index`

  Package   Installed  Latest   Needs update
  racer     v1.2.10    v1.2.10  No
  treesize  v0.2.0     v0.2.1   Yes

  Updating treesize
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading treesize v0.2.1
     [...]
     Compiling treesize v0.2.1
      Finished release [optimized] target(s) in 76.77 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\treesize.exe

  Updated 1 package.

cargo install-update -al

List all installed packages, don't update any.
~/.cargo/bin/identicon.exe was removed manually, so a note is issued.

Example output:
      Updating registry `https://github.com/rust-lang/crates.io-index`

  Package         Installed  Latest   Needs update
  checksums       v0.5.0     v0.5.2   Yes
  treesize        v0.2.0     v0.2.1   Yes
  cargo-count     v0.2.2     v0.2.2   No
  cargo-graph     v0.3.0     v0.3.0   No
  cargo-outdated  v0.2.0     v0.2.0   No
  identicon       v0.1.1     v0.1.1   No
  racer           v1.2.10    v1.2.10  No
  rustfmt         v0.6.2     v0.6.2   No

  identicon contains removed executables (identicon.exe), which will be re-installed on update ‒ you can remove it with cargo uninstall identicon

cargo install-update -af

Update all installed packages.

Example output:
      Updating registry `https://github.com/rust-lang/crates.io-index`

  Package       Installed  Latest   Needs update
  treesize      v0.2.0     v0.2.1   Yes
  clippy        v0.0.1     v0.0.99  Yes
  clippy_lints  v0.0.1     v0.0.99  Yes
  racer         v1.2.10    v1.2.10  No

  Updating racer
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading racer v1.2.10
     [...]
     Compiling racer v1.2.10
      Finished release [optimized] target(s) in 51.43 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\racer.exe

  Updating clippy
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading clippy v0.0.99
     [...]
     Compiling clippy v0.0.99
     [...]
  error: failed to compile `clippy v0.0.99`, intermediate artifacts can be found at `T:\-_-TEM~1\cargo-install.WOcMlrKQ5Sok`

  Updating treesize
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading treesize v0.2.1
     [...]
     Compiling treesize v0.2.1
      Finished release [optimized] target(s) in 76.77 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\treesize.exe

  Updating clippy_lints
      Updating registry `https://github.com/rust-lang/crates.io-index`
  error: specified package has no binaries

  Updated 2 packages.
  Failed to update clippy, clippy_lints.

cargo install-update -i checksums rustfmt treesize

Install specified packages, their installation status notwithstanding

Example output:
      Updating registry `https://github.com/rust-lang/crates.io-index`

  Package    Installed  Latest   Needs update
  checksums             v0.5.2   Yes
  treesize   v0.2.0     v0.2.1   Yes
  rustfmt    v0.6.2     v0.6.2   No

  Installing checksums
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading checksums v0.5.2
     [...]
     Compiling checksums v0.5.2
      Finished release [optimized] target(s) in 95.2 secs
     Installing D:\Users\nabijaczleweli\.cargo\bin\checksums.exe

  Updating treesize
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading treesize v0.2.1
     [...]
     Compiling treesize v0.2.1
      Finished release [optimized] target(s) in 76.77 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\treesize.exe

  Updated 2 packages.

cargo install-update -i (file:///usr/local/share/cargo):zram-generator:0.1.1

Install zram-generator from a local repository in /usr/local/share/cargo
(but a remote one or a short name  will work just as well), at most version 0.1.1.

 Example output:
      Updating registry `file:///usr/local/share/cargo`

  Package         Installed  Latest   Needs update
  zram-generator             v0.1.1   Yes

  Installing zram-generator
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading zram-generator v0.1.1
     [...]
     Compiling zram-generator v0.1.1
      Finished release [optimized] target(s) in 21.62 secs
    Installing /home/nabijaczleweli/.cargo/bin/zram-generator
     Installed package `zram-generator v0.1.1` (executable `zram-generator`)

  Updated 1 package.

cargo install-update -ag

Update all installed packages, including ones from git.

Example output:
      Updating registry `https://github.com/rust-lang/crates.io-index`

  Package         Installed  Latest   Needs update
  checksums       v0.5.0     v0.5.2   Yes
  cargo-count     v0.2.2     v0.2.2   No

  Updating checksums
      Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading checksums v0.5.2
     [...]
     Compiling checksums v0.5.2
      Finished release [optimized] target(s) in 95.2 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\checksums.exe

  Updated 1 package.

  Package                Installed  Latest   Needs update
  alacritty              eb231b3    5f78857  Yes
  chattium-oxide-client  108a7b9    108a7b9  No

  Updating alacritty from https://github.com/jwilm/alacritty
      Updating git repository `https://github.com/jwilm/alacritty`
     Installing alacritty v0.1.0 (https://github.com/jwilm/alacritty#5f788574)
     [...]
     Compiling alacritty v0.1.0
      Finished release [optimized] target(s) in 127.6 secs
     Replacing D:\Users\nabijaczleweli\.cargo\bin\alacritty.exe

  Updated 1 package.

AUTHOR

Written by наб <nabijaczleweli@nabijaczleweli.xyz>, Yann Simon <yann.simon.fr@gmail.com>, ven <vendethiel@hotmail.fr>, Cat Plus Plus <piotrlegnica@piotrl.pl>, Liigo <liigo@qq.com>, azyobuzin <azyobuzin@users.sourceforge.jp>, Tatsuyuki Ishi <ishitatsuyuki@gmail.com>, Tom Prince <tom.prince@twistedmatrix.com>, Mateusz Mikuła <mati865@gmail.com>, sinkuu <sinkuupump@gmail.com>, Alex Burka <aburka@seas.upenn.edu>, Matthias Krüger <matthias.krueger@famsik.de>, Daniel Holbert <dholbert@cs.stanford.edu>, Jonas Bushart <jonas@bushart.org>, Harrison Metzger <harrisonmetz@gmail.com>, Benjamin Bannier <bbannier@gmail.com>, Dimitris Apostolou <dimitris.apostolou@icloud.com>, Corbin Uselton <corbinu@decimal.io>, QuarticCat <QuarticCat@protonmail.com>, Artur Sinila <freesoftware@logarithmus.dev>, qthree <qthree3@gmail.com>, tranzystorekk <tranzystorek.io@protonmail.com>, Paul Barker <paul@pbarker.dev>, Benoît Cortier, Biswapriyo Nath <nathbappai@gmail.com>, Shiraz <smcclennon@protonmail.com>, Victor Song <vms2@rice.edu>, chrisalcantara <chris@chrisalcantara.com>, Utkarsh Gupta <utkarshgupta137@gmail.com>, nevsal, Rui Chen <https://chenrui.dev>, Lynnesbian <https://fedi.lynnesbian.space/@lynnesbian>, Rene Leonhardt, Maxime Guerreiro <maxime@cloudflare.com>, and Brian

SPECIAL THANKS

To all who support further development, in particular:

REPORTING BUGS

<https://github.com/nabijaczleweli/cargo-update/issues>

SEE ALSO

<https://github.com/nabijaczleweli/cargo-update>

<https://github.com/ryankurte/cargo-binstall>

  1. cargo-update developers
  2. February 2026
  3. cargo-install-update(1)