2个版本
0.1.3 | 2023年9月23日 |
---|---|
0.1.2 | 2023年9月11日 |
13 在 #rustup
1.5MB
2K SLoC
Crates Registry
描述
Crates Registry是一个用于在离线网络中提供和发布crates以及提供rustup安装的工具。(类似于npm注册表的Verdaccio)该项目部分使用了以下开源项目的代码: panamax项目 和 cargo-http-registry,相应地应给予它们应有的信用。
安装
Crates Registry可以使用cargo安装
$ cargo install crates-registry
也适用于Docker(推荐用于提供服务)
$ docker run -d --name crates-registry -e RUST_LOG=info -v /path/to/mirror-folder:/registry -p 80:80 crates-registry:latest serve -s <server ip> --root-registry /registry
(根据需要修改/path/to/registry端口和服务器-IP)
用法
有几种可能的用法
打包
打包在线侧的rust安装,以便在离线网络中稍后提供。我们下载自包含目录中的rust安装,并将目录打包成tar文件。打包示例
$ crates-registry pack --pack-file packed_file.tar --rust-versions 1.67.1,04-03-2023-nightly --platfroms x86_64-unknown-linux-gnu
运行crates-registry pack --help
查看所有可用选项。
解包
将包含rustup安装的打包文件解包到注册表文件夹中。您可以通过http://server-adress/manage-installations上的UI加载tar文件。按照页面上的说明操作。另一种选择是使用解包命令加载tar文件
$ crates-registry pack --packed-file /packed_file.tar --root-registry /path/to/registry/folder
提供服务
Crates Registry提供了一个HTTP服务器,可以快速且大规模地处理crates和rustup安装的服务。提供服务示例
$ docker run -d --name crates-registry -e RUST_LOG=info -v /path/to/mirror-folder:/registry -p 80:80 crates-registry:latest serve -s <server ip> --root-registry /registry
(根据需要修改/path/to/registry端口和服务器-IP)运行crates-registry serve --help
查看所有可用选项。
配置您的环境
一旦您已设置并运行服务器,就是时候告诉您的rust组件使用它了。
设置环境变量
为了确保rustup知道在哪里查找Rust组件,我们需要设置一些环境变量。假设服务器托管在http://crates.registry/
export RUSTUP_DIST_SERVER=http://crates.registry
export RUSTUP_UPDATE_ROOT=http://crates.registry/rustup
这些需要在每次使用rustup时设置,因此应该添加到您的.bashrc文件(或等效文件)中。
Rustup
要安装 rustup
,您可以下载 rustup-init 文件。您需要的 rustup-init
文件取决于您的架构。假设您在 64 位机器上运行桌面 Linux
wget http://crates.registry/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
chmod +x rustup-init
./rustup-init
这将使您能够按照https://rustup.rs 中的步骤安装 rustup。这还将允许您使用 rustup 在将来保持 Rust 安装的更新。
Cargo
Cargo 还需要配置以指向镜像。这可以通过向 ~/.cargo/config 添加以下行来完成(如果不存在,则创建该文件)
[source.my-mirror]
registry = "http://crates.registry/git/index"
[source.crates-io]
replace-with = "my-mirror"
# For publish crates.
[registries]
my-registry = { index = "https://crates.registry/git/index" }
Cargo 现在应指向正确的位置以使用镜像。
将包导入注册表。
导入新包的两个工具
- cargo-collect - 递归地收集包及其依赖项。
- cargo-upload - 将包文件上传到注册表。
您还可以使用 cargo publish
命令发布包。
许可证
根据 GNU 通用公共许可证第 3 版和 Apache 许可证(第 2.0 版)的条款许可
依赖项
~28–43MB
~772K SLoC