#offline #mirror #download #vendor #crates

app zerus

Lightweight binary to download only project required crates for offline crates.io mirror

11 releases (breaking)

0.10.1 Oct 25, 2024
0.9.0 Oct 12, 2024
0.8.1 May 30, 2024
0.6.0 Feb 28, 2024
0.2.0 Aug 7, 2022

#217 in Development tools

MIT/Apache

28KB
430 lines

zerus

github crates.io docs.rs build status

Lightweight binary to download only project required crates for offline crates.io mirror

Build zerus

Either build from published source in crates.io.

$ cargo install zerus --locked

Or download from github releases.

Usage

Usage: zerus [OPTIONS] <MIRROR_PATH> [WORKSPACES]...

Arguments:
  <MIRROR_PATH>    new directory to contain offline mirror crate files
  [WORKSPACES]...  list of Cargo.toml files to vendor depends

Options:
      --build-std <VERSION>            Cache build-std depends for nightly version
      --git-index-url <GIT_INDEX_URL>  hostname for git index crates.io
      --skip-git-index                 Skip download of git index crates.io
  -h, --help                           Print help

Example:

$ zerus new-mirror ../deku/Cargo.toml ../adsb_deku/Cargo.toml --git-index-url http://127.0.0.1

Serve mirror

Use any http(s) server.

Build with mirror

Add the following to the .cargo/config file(replacing IP with your ip).

[source.zerus]
registry = "sparse+http://[IP]/crates.io-index/"

[source.crates-io]
replace-with = "zerus"

Margo

Through the use of margo, you can make a alternate Cargo registry without downloading the entire crates.io git index.

$ zerus mirror ../deku/Cargo.toml --build-std nightly --skip-git-index
$ margo add --registry my-registry-directory mirror/*/*/*/*/*/*.crate

Dependencies

~18–35MB
~626K SLoC