离线安装 rust 并编译 ripgrep

背景

工作的一台编译机无法连接外网,也没有 root 权限和预装 ripgrep,只能离线编译安装了。

准备工作

首先需要在一台能够正常访问外网的机器上下载 rust 的离线安装包和 ripgrep 的源码包。

Rust

rust 的离线安装包可以到官网下载: Other Installation Methods - Rust Forge,在 Standalone installers 部分下载对应系统和架构的安装包。

Ripgrep 及依赖

要确保当前机器上有 rust 环境,用于离线所有依赖。如果没有,可以参考 安装 Rust - Rust 程序设计语言 进行安装。

用以下命令 Clone ripgrep 的源代码:

1
git clone https://github.com/BurntSushi/ripgrep

进入源码目录,离线所有依赖,会将项目的所有 crates.io 和 git 依赖项下载到 verdor 目录中:

1
cargo vendor

执行完成后,会输出需要添加到 .cargo/config.toml 中的内容,将其追加到 .cargo/config.toml 文件中,以便编译时指定使用本地的依赖。

1
2
3
4
5
[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"

完成以上两步后,将下载的 rust 安装包和 ripgrep 文件夹压缩上传到目标机器,开始下一步的安装。

编译安装

安装 Rust

解压 rust standalone 安装包,并进入文件夹,通过以下命令安装,会将 rust 安装到 ~/.local/rust 目录下,可以自行修改。

1
./install.sh --prefix=~/.local/rust --disable-ldconfig --verbose

根据所指定的安装目录,添加环境变量 export PATH=$HOME/.local/rust/bin 到所使用的 shell 配置文件(.bashrc.zshrc)中(或使用以下命令自动添加),并刷新配置文件。

1
2
echo -e '\nexport PATH=$HOME/.local/rust/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

运行 cargo --version 检查安装是否成功。

编译 Ripgrep

解压 ripgrep 源码包,使用以下命令进行构建:

1
cargo build --release

构建好的二进制文件位于 ./target/release/rg ,复制到已经添加到环境变量的目录中即可。

使用 rg --version 验证构建是否成功。

参考资料

0%