使用 `cargo install` 安装 Rust 二进制工具

一、什么是 cargo install

cargo install 命令专门用于安装那些包含可执行目标的包,也就是说,这些包中必须有一个或多个二进制目标(binary target)。与传统的系统软件包管理器不同,cargo install 并不是用来替换系统包,而是为 Rust 开发者提供了一种简洁的方式来安装和管理命令行工具。

需要注意的是,只有当包中包含类似 src/main.rs(或者在 Cargo.toml 中指定了其他二进制文件)的二进制目标时,才能使用 cargo install 进行安装。如果一个包仅提供库代码,那么它不能被直接安装为可执行程序。

二、安装后的文件存放位置

所有使用 cargo install 安装的二进制文件都会存储在安装根目录的 bin 文件夹中。如果你是通过 rustup.rs 安装的 Rust,并且没有做过其他配置,那么这个目录通常是 $HOME/.cargo/bin

为了能够在命令行中直接运行这些工具,确保 $HOME/.cargo/bin 已经添加到你的 $PATH 环境变量中。可以在终端中执行如下命令检查:

bash 复制代码
echo $PATH

如果没有看到 $HOME/.cargo/bin,你需要在 shell 的配置文件中(例如 .bashrc.zshrc)添加如下行:

bash 复制代码
export PATH="$HOME/.cargo/bin:$PATH"

三、示例:安装 ripgrep

ripgrep 是一个用 Rust 实现的文本搜索工具,功能类似于传统的 grep,但性能更强、使用更简单。下面的命令展示了如何通过 cargo install 安装 ripgrep

bash 复制代码
$ cargo install ripgrep
    Updating crates.io index
  Downloaded ripgrep v13.0.0
  Downloaded 1 crate (243.3 KB) in 0.88s
  Installing ripgrep v13.0.0
--snip--
   Compiling ripgrep v13.0.0
    Finished `release` profile [optimized + debuginfo] target(s) in 10.64s
  Installing ~/.cargo/bin/rg
   Installed package `ripgrep v13.0.0` (executable `rg`)

安装过程中,Cargo 会自动从 crates.io 下载 ripgrep 及其依赖,并编译生成可执行文件。注意输出中倒数第二行显示了安装位置和生成的二进制名称(在此例中为 rg)。只要你的 $PATH 包含了安装目录,你就可以在终端中直接运行:

bash 复制代码
$ rg --help

这时,你会看到 ripgrep 的使用帮助信息,从而开始体验这个高效的搜索工具。

四、总结

  • cargo install 的作用:它允许你从 crates.io 安装带有二进制目标的包,而不是库包,从而在本地使用命令行工具。
  • 安装位置 :所有二进制工具都安装在 $HOME/.cargo/bin 中,请确保该目录已添加到 $PATH 环境变量中。
  • 使用示例 :本文以 ripgrep 为例,演示了如何使用 cargo install 下载、编译和安装 Rust 工具。

通过 cargo install,你可以轻松获取社区中各种优秀的 Rust 工具,体验 Rust 生态带来的便捷与高效。如果你有更多关于 Rust 工具安装的经验或问题,欢迎在评论区分享讨论!


希望这篇博客能帮助你更好地理解和使用 cargo install。Happy coding!

相关推荐
这不小天嘛5 小时前
JAVA八股——J集合篇
java·开发语言
AOwhisky6 小时前
Python 学习笔记(第一期与第二期)——基础语法——核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发
花褪残红青杏小6 小时前
Rust图像处理第17节-Julia 朱利亚分形:拖动常数 c 看图实时变化
rust·webassembly·图形学
喜欢的名字被抢了8 小时前
Python实战:SQLAlchemy ORM与FastAPI项目集成
开发语言·python·sql·教程·fastapi
遨游DATA10 小时前
Spring Boot 启动失败排查:如何区分多 Bean 冲突与清理阶段异常
java·spring boot·后端
IT_陈寒10 小时前
Java线程池这个坑我算是踩明白了
前端·人工智能·后端
An_s10 小时前
rust开发wasm与浏览器(js)交互
javascript·rust·wasm
掉头发的王富贵10 小时前
我来入职新公司两个月了,为什么只写了100行代码?
后端·ai编程
从零开始的代码生活_10 小时前
C++ 内存管理:从内存分区到 new/delete 底层原理
开发语言·c++·后端
315356691311 小时前
Superpowers:GPT-5.6 时代下的流程毒瘤
前端·后端