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