货物安装是否具有等效的更新命令?

时间:2015-12-27 20:09:56

标签: rust rust-cargo

我想更新我使用cargo install来全局安装软件包的软件包,例如rustfmt或racer。我没有找到更新已安装软件包的方法,而不先删除它(通过cargo uninstall),然后再次运行install命令。有更新命令吗?

6 个答案:

答案 0 :(得分:69)

在vanilla cargo中没有这样的命令(好吧,那里有cargo install,但那是依赖关系),但由于cargo支持third-party subcommands,所以有一个答案:{ {3}}

使用cargo install cargo-update照常安装,然后使用cargo install-update -a更新所有已安装的软件包,有关更多用法信息和示例,请参阅cargo-update crate

免责声明:是作者

答案 1 :(得分:28)

我发现的解决方案是在安装命令中添加--force标志。例如cargo install --force clippy。这将有效地重新安装最新版本。

答案 2 :(得分:8)

不。您可以在this问题中讨论它。

答案 3 :(得分:3)

从Cargo 1.36.0开始,您现在可以在夜间工具链上使用以下命令,而不是使用cargo-update板条箱将板条箱更新为最新版本:

rustup install nightly
cargo +nightly install -Z install-upgrade <crate>

这来自拉取请求#6798 (Add install-upgrade)

它如何工作?

cargo install会检测到已安装的软件包,而不是失败,如果版本不匹配,它将升级,或者如果它被认为是“最新”,则不执行任何操作(退出0)。 / p>

强制升级/重新安装

以下命令将始终卸载,下载并编译最新版本的板条箱-即使没有可用的较新版本。通常情况下,应该首选install-upgrade功能,因为如果没有新版本的条板箱,它可以节省时间和带宽。

cargo install --force <crate>

文档

更多信息可以在GitHub第rust-lang/cargo#6797和官方文档章节Unstable Features -> install-upgrade中找到。

答案 4 :(得分:2)

这是一个单行更新所有已安装的 Cargo crate,除了从本地文件夹安装的那些:

cargo install $(cargo install --list | egrep '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ')

说明:

  • 列出已安装的软件包
  • 过滤包含包名称和版本的行,并排除包含文件系统路径的行
  • 剪切这些行以仅包含包名称
  • cargo install 和结果包名称

答案 5 :(得分:-5)

更新依赖项的命令是cargo update

来源:http://doc.crates.io/guide.html