20 个版本 (稳定)
1.0.14 | 2024年6月6日 |
---|---|
1.0.12 | 2023年2月4日 |
1.0.6 | 2022年5月8日 |
1.0.4 | 2021年11月23日 |
0.1.0 | 2019年7月13日 |
#97 in 开发工具
每月下载量:69
430KB
3K SLoC
包含 (WOFF 字体,85KB) static/fonts/FiraSans-Medium.woff,(WOFF 字体,84KB) static/fonts/FiraSans-Light.woff,(WOFF 字体,84KB) static/fonts/FiraSans-Regular.woff
Panamax
Panamax 是一个用于镜像 Rust 和 crates.io 仓库的工具,以便离线使用 rustup
和 cargo
。
安装
Panamax 本身可在 crates.io 上找到,可以通过以下方式安装:
$ cargo install --locked panamax
或者,您可以克隆此仓库并在其中使用 cargo build
或 cargo run
。
使用方法
Docker
Panamax 作为一个 Docker 镜像提供,因此您可以运行:
$ docker run --rm -it -v /path/to/mirror/:/mirror --user $(id -u) panamaxrs/panamax init /mirror
(Modify /path/to/mirror/mirror.toml as needed)
$ docker run --rm -it -v /path/to/mirror/:/mirror --user $(id -u) panamaxrs/panamax sync /mirror
(Once synced, serve the mirror)
$ docker run --rm -it -v /path/to/mirror/:/mirror --user $(id -u) -p8080:8080 panamaxrs/panamax serve /mirror
或者,您可以在以下裸机环境中运行 Panamax。
初始化
在 Panamax 中,镜像由自包含目录组成。要创建一个镜像目录 my-mirror
$ panamax init my-mirror
Successfully created mirror base at `my-mirror`.
Make any desired changes to my-mirror/mirror.toml, then run panamax sync my-mirror.
现在您的当前目录中将有 my-mirror
目录。
修改 mirror.toml
在该目录中,您会找到一个 mirror.toml
文件。此文件包含镜像的完整配置,尽管它有合理的默认值,但您应确保设置的值符合您的需求。
另一个重要的设置参数是 base_url
,它在 [crates]
部分。在 cargo
获取索引后,它将尝试使用此 URL 下载 crates。这个值必须准确,否则 cargo
可能无法与镜像一起工作。
您可以在镜像同步后的任何时候修改 mirror.toml
。
同步
一旦您对mirror.toml
进行了修改,就到了同步您的镜像的时候了!
$ panamax sync my-mirror
Syncing Rustup repositories...
[1/5] Syncing rustup-init files... ██████████████████████████████████████████████████████████████ 27/27 [00:00:06]
[2/5] Syncing latest stable... ████████████████████████████████████████████████████████████ 602/602 [00:09:02]
[3/5] Syncing latest beta... ████████████████████████████████████████████████████████████ 524/524 [00:07:29]
[4/5] Syncing latest nightly... ████████████████████████████████████████████████████████████ 546/546 [00:08:56]
[5/5] Cleaning old files... ████████████████████████████████████████████████████████████ 546/546 [00:00:00]
Syncing Rustup repositories complete!
Syncing Crates repositories...
[1/3] Fetching crates.io-index... ██████████████████████████████████████████████████████████ 1615/1615 [00:00:02]
[2/3] Syncing crates files... ██████████████████████████████████████████████████████████ 6357/6357 [00:00:05]
[3/3] Syncing index and config...
Syncing Crates repositories complete!
Sync complete.
这一步骤完成后(没有下载错误),您将拥有所有使用rustup
和cargo
所需文件的完整同步副本,充分发挥它们的功能!
现在可以将其复制到USB驱动器上,或使用rsync在其他地方同步,甚至可以直接使用 - 完美适合长途飞行!
此外,该镜像将来可以持续同步 - 一个建议是每晚运行此命令一次,以保持镜像的相对最新。
同步选择依赖项
可选地,panamax可以告诉它只获取构建单个项目所需的crate。使用cargo vendor
创建一个包含所有所需依赖项的文件夹,然后panamax命令可以解析创建的目录,并仅获取那些crate及其版本。
# Only grab crates needed for panamax, as an example
$ cargo vendor
$ panamax sync my-mirror vendor
服务器
Panamax提供了一个基于warp的HTTP(S)服务器,可以快速且大规模地处理Rust镜像的提供。这是推荐提供镜像的方式。
$ panamax serve my-mirror
Running HTTP on [::]:8080
服务器的索引页面提供了设置使用此镜像的Rust客户端所需的所有说明。
如果您希望将这些说明放在其他地方,本README的其余部分将更详细地描述设置过程。
此外,如果您希望使用nginx托管服务器,仓库中提供了一个nginx配置示例,位于nginx.sample.conf
。
配置rustup
和cargo
一旦您设置了镜像服务器并运行起来,就是告诉您的Rust组件使用它的时间了。
设置环境变量
为了确保rustup
知道Rust组件的位置,我们需要设置一些环境变量。假设镜像托管在http://panamax.internal/
export RUSTUP_DIST_SERVER=http://panamax.internal
export RUSTUP_UPDATE_ROOT=http://panamax.internal/rustup
这些需要在每次使用rustup
时设置,因此应将其添加到您的.bashrc
文件(或等效文件)中。
安装rustup
如果您已经安装了rustup
,此步骤不是必需的,但如果您无法访问https://rustup.rs,镜像还包含安装rustup
所需的rustup-init
文件。
假设镜像托管在http://panamax.internal/,您可以在http://panamax.internal/rustup/dist/找到rustup-init
文件。您想要的rustup-init
文件取决于您的架构。假设您正在64位桌面Linux机器上运行
wget http://panamax.internal/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://panamax.internal/crates.io-index"
[source.crates-io]
replace-with = "my-mirror"
Cargo
现在应指向使用镜像的正确位置。
测试配置
您现在已经设置了一个Rust镜像!为了确保一切设置正确,您可以运行一个简单的测试
$ cargo install ripgrep
这将安装类似grep的工具rg
(这是一个非常好的工具——致敬burntsushi!)。如果cargo
成功下载和构建一切,您就拥有了一个工作的镜像。恭喜您!
代理
如果您需要通过代理运行Panamax,您需要在两个地方设置您的配置选项。
首先,您需要设置环境变量http_proxy
为类似https://your.proxy:1234
的值(可以是http或https)。
其次,您需要在您的~/.gitconfig
中设置一个http代理,如下所示
[http]
proxy = https://your.proxy:1234
设置这两个参数后,Panamax应该可以通过HTTP代理工作。
许可证
根据MIT许可证和Apache许可证(版本2.0)的条款授权
有关详细信息,请参阅LICENSE-MIT和LICENSE-APACHE
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您提交的任何有意包含在作品中的贡献将根据上述条款双许可,不附加任何额外条款或条件。
依赖项
~28–45MB
~828K SLoC