cargo-pkgid(1)

名称

cargo-pkgid - 打印包的完整标准规格。

概要

cargo pkgid [options] [spec]

描述

提供一个 spec 参数,打印出当前工作空间中的一个包或一个依赖的完整的 package ID 指定符 (specifier)。如果 spec 指定的包在依赖图中不明确 (不存在) ,则会报错。如果没有提供 spec 参数,则会打印本地包 (local package) 的指定符。

该命令要求已存在一个可用的 lockfile,且依赖已经被下载。

一个包指定符由名称、版本和源 URL 组成。你可以使用部分指定符来简洁地指定一个包,只要它正好只匹配一个包。 spec 的格式可以为下面一种:

SPEC StructureExample SPEC
namebitflags
name@versionbitflags@1.0.4
urlhttps://github.com/rust-lang/cargo
url#versionhttps://github.com/rust-lang/cargo#0.33.0
url#namehttps://github.com/rust-lang/crates.io-index#bitflags
url#name:versionhttps://github.com/rust-lang/cargo#crates-io@0.21.0

选项

包的选择

-p spec
--package spec
获取指定包的 package ID ,而不是当前的包。

显示选项

-v
--verbose
进行 verbose 输出。可以指定两遍来开启 "very verbose" 模式,输出更多的额外信息,像是依赖项的警告和构建脚本的输出信息。 也可以通过 term.verbose 配置选项 来指定。
-q
--quiet
不打印 cargo log 信息。 也可以通过 term.quiet 配置选项来指定。
--color when
控制*何时*使用彩色输出。可选值有:

  • auto (默认值): 自动检测终端是否支持彩色输出。
  • always: 总是显示彩色。
  • never: 从不显示彩色。

也可以在 term.color 配置选项中设置。

清单选项

--manifest-path path
Cargo.toml 文件的路径。 默认情况下,Cargo 在当前目录或任意的父目录中查找 Cargo.toml
--frozen
--locked
这两个 flag 都需要 Cargo.lock 文件处于无需更新的状态。如果 lock 文件缺失,或者需要被更新,Cargo 会报错退出。 --frozen flag 还会阻止 Cargo 访问网络来判断 Cargo.lock 是否过期。

这些 flag 可以用于某些场景下你想断言 Cargo.lock 无需更新 (比如在CI中构建) 或者避免网络访问。

--offline
阻止 Cargo 访问网络。如果没有这个 flag,当 Cargo 需要访问网络但是没有网络时,就会报错退出。加上这个 flag,Cargo 会尝试在不联网的情况下继续执行 (如果可以的话) 。

要小心这会导致与在线模式不同的解析结果。Cargo 会限制自己在本地已下载的 crate 中查找版本,即使在本地的 index 拷贝中表明还有更新的版本。 cargo-fetch(1) 命令可以在进入离线模式前下载依赖。

同样的功能也可以通过设置 net.offline 配置选项来实现。

通用选项

+toolchain
如果 Cargo 由 rustup 安装,那么 cargo 后第一个以 + 开头的参数会被认为是 rustup toolchain 名字(例如 +stable+nightly)。 查看 rustup documentation 了解 toolchain overrides 如何工作。
--config KEY=VALUE or PATH
覆盖一个 Cargo 配置的值。参数应该是一个 TOML 语法的 KEY=VALUE,或者提供一个路径来指向一个额外的配置文件 (configuration file)。 这个标记可以指定多次。 参考 command-line overrides 一节 获取更多信息。
-h
--help
打印帮助信息。
-Z flag
不稳定 (nightly-only) 的标志。 执行 cargo -Z help 获取详细信息。

环境

查看 the reference 获取 Cargo 读取的环境变量的更多信息。

退出状态

  • 0: Cargo 执行成功。
  • 101: Cargo 没有执行完成。

使用案例

  1. 获取 foo 的包指定符:

    cargo pkgid foo
    
  2. 获取 1.0.0 版 foo 的包指定符:

    cargo pkgid foo@1.0.0
    
  3. 获取 crates.io 上的 foo 的包指定符:

    cargo pkgid https://github.com/rust-lang/crates.io-index#foo
    
  4. 获取本地 foo 包的包指定符:

    cargo pkgid file:///path/to/local/package#foo
    

其他参考

cargo(1), cargo-generate-lockfile(1), cargo-metadata(1)