#registry #offline #rustup #serving #networking #publishing #tool

bin+lib crates-registry

Crates Registry是一个用于在离线网络中提供crates和rustup安装的工具。该项目基于panamax项目以及cargo-http-registry,并使用了这部分代码

2个版本

0.1.3 2023年9月23日
0.1.2 2023年9月11日

13#rustup

GPL-3.0-or-later

1.5MB
2K SLoC

Crates Registry


Static Badge Static Badge

描述

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安装解包到注册表文件夹中(也可以通过UI进行)。
  • 提供服务 - 在您的离线网络中提供注册表。

打包

打包在线侧的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 publish 命令发布包。

许可证

根据 GNU 通用公共许可证第 3 版和 Apache 许可证(第 2.0 版)的条款许可

依赖项

~28–43MB
~772K SLoC