From bd06395573aecabe15a535a9d471bb84ba245cd5 Mon Sep 17 00:00:00 2001 From: fanyang Date: Sat, 10 Oct 2026 10:17:08 +0800 Subject: [PATCH] feat: support cargo-binstall for prebuilt CLI tools (#2659) Map the existing release ZIP names and binary paths through package metadata, including ARM hard-float, RISC-V, Windows ARM64, and FreeBSD naming exceptions. Document repository-based installation and Windows sidecar requirements. Fixes #365 --- README.md | 7 +++++++ README_CN.md | 7 +++++++ easytier/Cargo.toml | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/README.md b/README.md index 32e57682..4285804d 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,13 @@ Install via cargo (Latest development version): cargo install --git https://github.com/EasyTier/EasyTier.git easytier ``` +Install prebuilt CLI tools with [cargo-binstall](https://github.com/cargo-bins/cargo-binstall) (specify an existing release version): +```bash +cargo binstall --git https://github.com/EasyTier/EasyTier.git --version 2.6.4 easytier +``` + +This installs `easytier-core` and `easytier-cli` using the repository's metadata, independently of crates.io publication. On Windows, also copy the DLL and driver files from the matching release ZIP beside the installed binaries; binstall only installs executables. + [Install pre-built binary](https://github.com/EasyTier/EasyTier/releases) (Recommended, All platforms supported) For a smaller executable, try [easytier-mini](https://github.com/EasyTier/easytier-mini), which supports basic TCP/UDP networking. See its documentation for supported features and usage. diff --git a/README_CN.md b/README_CN.md index 28406204..ebe26335 100644 --- a/README_CN.md +++ b/README_CN.md @@ -69,6 +69,13 @@ irm "https://github.com/EasyTier/EasyTier/blob/main/script/install.ps1?raw=true" cargo install --git https://github.com/EasyTier/EasyTier.git easytier ``` +通过 [cargo-binstall](https://github.com/cargo-bins/cargo-binstall) 安装预编译命令行工具(请指定已有 release 的版本): +```bash +cargo binstall --git https://github.com/EasyTier/EasyTier.git --version 2.6.4 easytier +``` + +此方式使用仓库中的 metadata 安装 `easytier-core` 和 `easytier-cli`,不依赖 crates.io 发布。在 Windows 上,还需将对应 release ZIP 中的 DLL 和驱动文件复制到安装后的程序旁;binstall 只安装可执行文件。 + [下载预编译文件](https://github.com/EasyTier/EasyTier/releases)(推荐,支持所有平台) 需要更小的可执行文件,可使用 [easytier-mini](https://github.com/EasyTier/easytier-mini):支持基础 TCP/UDP 组网,功能范围与使用方式见其文档。 diff --git a/easytier/Cargo.toml b/easytier/Cargo.toml index 7e071eb3..225c609a 100644 --- a/easytier/Cargo.toml +++ b/easytier/Cargo.toml @@ -451,6 +451,44 @@ hotpath-alloc = ["hotpath"] # For Network Extension on macOS macos-ne = [] +[package.metadata.binstall] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ os-name }-{ target-arch }-v{ version }.zip" +bin-dir = "{ name }-{ os-name }-{ target-arch }/{ bin }{ binary-ext }" +pkg-fmt = "zip" + +# Release names distinguish hard-float ARM builds from their soft-float peers. +[package.metadata.binstall.overrides.arm-unknown-linux-musleabihf] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armhf-v{ version }.zip" +bin-dir = "{ name }-linux-armhf/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.arm-unknown-linux-gnueabihf] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armhf-v{ version }.zip" +bin-dir = "{ name }-linux-armhf/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.armv7-unknown-linux-musleabihf] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armv7hf-v{ version }.zip" +bin-dir = "{ name }-linux-armv7hf/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.armv7-unknown-linux-gnueabihf] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armv7hf-v{ version }.zip" +bin-dir = "{ name }-linux-armv7hf/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.riscv64gc-unknown-linux-musl] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-riscv64-v{ version }.zip" +bin-dir = "{ name }-linux-riscv64/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.riscv64gc-unknown-linux-gnu] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-riscv64-v{ version }.zip" +bin-dir = "{ name }-linux-riscv64/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.aarch64-pc-windows-msvc] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-windows-arm64-v{ version }.zip" +bin-dir = "{ name }-windows-arm64/{ bin }{ binary-ext }" + +[package.metadata.binstall.overrides.x86_64-unknown-freebsd] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-freebsd-13.2-x86_64-v{ version }.zip" +bin-dir = "{ name }-freebsd-13.2-x86_64/{ bin }{ binary-ext }" + [package.metadata.cargo-machete] ignored = [ # Used by build/main.rs, including the Windows-only thunk setup.