rust cargo install是否有一个等效的更新命令?

q43xntqr  于 2023-02-16  发布在  Go
关注(0)|答案(4)|浏览(395)

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

balp4ylt

balp4ylt1#

在普通的cargo中没有这样的命令(当然,有cargo install,但那是用于依赖关系的),但是由于cargo支持third-party subcommands,所以有一个答案:即cargo-update crate
照常安装

cargo install cargo-update

则使用

cargo install-update -a

要更新所有已安装的软件包,请参阅cargo install-update manpage以获取更多用法信息和示例。
免责声明:作者

8e2ybdfx

8e2ybdfx2#

从Rust 1.41.0开始,您可以使用以下命令将板条箱更新到其最新版本:

cargo install <crate>

这来自拉动请求#6798 (Add install-upgrade),并在#7560 (Stabilize install-upgrade)中稳定。

它是如何工作的?

cargo install检测到一个软件包已经安装时,它不会失败,而是在版本不匹配时升级,或者如果它被认为是"最新的",则什么也不做(退出0)。

强制升级/重新安装

以下命令总是卸载、下载和编译最新版本的机箱-即使没有更新的版本可用。在正常情况下,install-upgrade功能应该是首选,因为如果没有新版本的机箱,它确实节省了时间和带宽。

cargo install --force <crate>

文件

更多信息可以在GitHub发行版rust-lang/cargo#6797和官方文档章节中找到。

hyrbngr7

hyrbngr73#

我找到的一个解决方案是在install命令中添加--force标志,例如cargo install --force clippy,这样可以有效地重新安装最新版本。

twh00eeo

twh00eeo4#

下面是一个更新所有已安装的Cargo cartes的一行程序,从本地文件夹安装的除外:

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

说明:

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

相关问题