#proxy-server #io #cache #build #cargo #package #folder

app cargo-cacher

cargo-cacher 是一个 crates.io 代理,会在使用 Cargo 构建软件包时进行代理请求。

16 个版本 (9 个稳定版)

使用旧的 Rust 2015

1.2.5 2020年7月1日
1.2.2 2020年2月29日
1.2.1 2020年1月27日
1.1.0 2016年12月9日
0.1.2 2016年10月20日

#440Cargo 插件

每月46 次下载

MIT/Apache 许可

37KB
906

cargo-cacher

Build StatusCoverage Status

cargo-cacher 是一个类似于 apt-cacher-ng 的缓存服务器。目标是允许递归缓存 canonical crates.io 索引。

用法

要将系统配置为使用 cargo-cacher 的副本,您需要在项目中或在包含的文件夹中设置一个 .cargo/config 文件。该文件夹的内容应如下所示:

[source]

[source.mirror]
registry = "https://127.0.0.1:8080/index"

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

一旦设置完成,您的构建将通过本地代理进行,并且当第一次请求时,软件包将被拉取到本地文件系统。路径可以是远程主机,只要路径是到 /index。要运行 cargo-cacher,您可能需要使用以下几个参数:

USAGE:
    cargo-cacher [FLAGS] [OPTIONS]

FLAGS:
    -a, --all        Prefetch entire Cargo index
    -d               Sets the level of debugging information
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -g <git>             Upstream git index (Default: https://github.com/rust-lang/crates.io-index.git)
    -i <index>           Path to store the indexes (git and fiels) at (Default: $HOME/.crates)
    -p <port>            Port to listen on (Default: 8080)
    -f <prefetch>        Path with a list of crate_name=version OR lock file to pre-fetch
    -r <refresh>         Refresh rate for the git index (Default: 600)
    -t <threads>         How many threads to use to fetch crates in the background
    -u <upstream>        Upstream Crate source (Default: https://crates.io/api/v1/crates/)


完整镜像

cargo-cacher 支持使用 -a 标志提供完整镜像。传递此标志将在启动时创建一个后台线程池,以获取上游索引中当前所有软件包。

预取

预取是一个值得进一步关注的选项。预取是一个包含每行一个软件包/版本的文件的路径,例如:

log=0.3.6
libc=0.1.12

上面的输入将预先获取 log 版本 0.3.6 和 libc 版本 0.1.12,在用户请求之前。这将在单独的线程上发生,因此服务器可以继续启动而无需等待预取完成。

待办事项

  • 在后台线程中添加过期时间
  • 添加统计信息

如果您想支持我

依赖关系

~35MB
~599K SLoC